109 lines
3.9 KiB
HTML
109 lines
3.9 KiB
HTML
<!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.createAsyncSuite("View.AsynchronousLayout");
|
|
|
|
suite.addTestCase({
|
|
name: "View.automaticLayout",
|
|
test(resolve, reject) {
|
|
let view = new WI.TestView;
|
|
WI.View.rootView().addSubview(view);
|
|
InspectorTest.expectThat(view.layoutPending, "View should have a pending layout once it is attached.");
|
|
|
|
view.evaluateAfterLayout(() => {
|
|
InspectorTest.log("Layout complete.");
|
|
InspectorTest.expectEqual(view.initialLayoutCount, 1, "View should do an initial layout.");
|
|
InspectorTest.expectEqual(view.layoutCount, 1, "View should update its layout.");
|
|
InspectorTest.expectFalse(view.layoutPending, "View should not have a pending layout.");
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "View.automaticLayout.cancelled",
|
|
test(resolve, reject) {
|
|
let view = new WI.TestView;
|
|
|
|
WI.View.rootView().addSubview(view);
|
|
InspectorTest.expectThat(view.layoutPending, "View should have a pending layout once it is attached.");
|
|
|
|
WI.View.rootView().removeSubview(view);
|
|
InspectorTest.expectFalse(view.layoutPending, "View should not have a pending layout once it is detached.");
|
|
resolve();
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "View.needsLayout",
|
|
test(resolve, reject) {
|
|
let view = new WI.TestView;
|
|
WI.View.rootView().addSubview(view);
|
|
|
|
InspectorTest.log("Flush pending layouts, then schedule an update.");
|
|
view.updateLayout();
|
|
view.needsLayout();
|
|
InspectorTest.expectThat(view.layoutPending, "View should have a pending layout.");
|
|
|
|
view.evaluateAfterLayout(() => {
|
|
InspectorTest.log("Layout complete.");
|
|
InspectorTest.expectEqual(view.layoutCount, 2, "View should update its layout.");
|
|
InspectorTest.expectFalse(view.layoutPending, "View should not have a pending layout.");
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "View.needsLayout.propogateToSubview",
|
|
test(resolve, reject) {
|
|
let parent = new WI.TestView;
|
|
let child = new WI.TestView;
|
|
WI.View.rootView().addSubview(parent);
|
|
parent.addSubview(child);
|
|
InspectorTest.log("Schedule parent view update.");
|
|
parent.needsLayout();
|
|
|
|
child.evaluateAfterLayout(() => {
|
|
InspectorTest.log("Layout complete.");
|
|
InspectorTest.expectEqual(child.initialLayoutCount, 1, "Chlid view should do an initial layout.");
|
|
InspectorTest.expectEqual(child.layoutCount, 1, "Child view should update its layout.");
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "View.cancelLayout",
|
|
test(resolve, reject) {
|
|
let view = new WI.TestView;
|
|
WI.View.rootView().addSubview(view);
|
|
|
|
InspectorTest.log("Cancel automatic layout.");
|
|
view.cancelLayout();
|
|
InspectorTest.expectFalse(view.layoutPending, "View should not have a pending layout.");
|
|
|
|
InspectorTest.log("Cancel scheduled layout.");
|
|
view.needsLayout();
|
|
view.cancelLayout();
|
|
InspectorTest.expectFalse(view.layoutPending, "View should not have a pending layout.");
|
|
resolve();
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Testing asynchronous View layout operations: needsLayout, cancelLayout.</p>
|
|
</body>
|
|
</html>
|