blob: bda50f751c34b8e4c7f6a54c7591ca5a449e6cff [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="resources/test-view.js"></script>
<script>
function test()
{
InspectorTest.redirectRequestAnimationFrame();
let suite = InspectorTest.createSyncSuite("View.SynchronousLayout");
suite.addTestCase({
name: "View.updateLayout",
test() {
let view1 = new WI.TestView;
WI.View.rootView().addSubview(view1);
InspectorTest.log("Update layout for attached view.");
view1.updateLayout();
InspectorTest.expectEqual(view1.initialLayoutCount, 1, "View should do an initial layout.");
InspectorTest.expectEqual(view1.layoutCount, 1, "View should update its layout once.");
InspectorTest.expectFalse(view1.layoutPending, "View should not have a pending layout.");
let view2 = new WI.TestView;
InspectorTest.log("Update layout for detached view.");
view2.updateLayout();
InspectorTest.expectEqual(view2.initialLayoutCount, 1, "View should do an initial layout.");
InspectorTest.expectEqual(view2.layoutCount, 1, "View should update its layout once.");
InspectorTest.expectFalse(view2.layoutPending, "View should not have a pending layout.");
return true;
}
});
suite.addTestCase({
name: "View.updateLayout.propogateToSubviews",
test() {
let parent = new WI.TestView;
let child = new WI.TestView;
WI.View.rootView().addSubview(parent);
parent.addSubview(child);
InspectorTest.log("Update parent view layout.");
parent.updateLayout();
InspectorTest.expectEqual(child.initialLayoutCount, 1, "Child view should do an initial layout.");
InspectorTest.expectEqual(child.layoutCount, 1, "Child view should update its layout once.");
return true;
}
});
suite.addTestCase({
name: "View.updateLayoutIfNeeded",
test() {
let view1 = new WI.TestView;
view1.updateLayoutIfNeeded();
InspectorTest.expectEqual(view1.layoutCount, 1, "View should update if an initial layout never happened.");
let view2 = new WI.TestView;
view2.needsLayout();
view2.updateLayoutIfNeeded();
InspectorTest.expectEqual(view2.layoutCount, 1, "View should update if a layout is pending.");
let view3 = new WI.TestView;
view3.updateLayout();
view3.updateLayoutIfNeeded();
InspectorTest.expectEqual(view3.layoutCount, 1, "View should not update if no layout is pending.");
return true;
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Testing synchronous View layout operations: updateLayout, updateLayoutIfNeeded.</p>
</body>
</html>