blob: e2a41614151b1c50df18c3cac8519dafb3d4dffb [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let mainFrame = WI.frameResourceManager.mainFrame;
let childFrames = mainFrame.childFrameCollection.toArray();
InspectorTest.expectEqual(childFrames.length, 1, "Page should have a subframe.");
let suite = InspectorTest.createAsyncSuite("CSSManager.preferredInspectorStyleSheetForFrame");
suite.addTestCase({
name: "CheckNoStyleSheets",
description: "Ensure there are no stylesheets.",
test(resolve, reject) {
InspectorTest.expectThat(WI.cssStyleManager.styleSheets.length === 0, "Should be no stylesheets.");
resolve();
}
});
suite.addTestCase({
name: "CreateMainFrameInspectorStyleSheet",
description: "First request for main frame should create inspector stylesheet.",
test(resolve, reject) {
WI.cssStyleManager.singleFireEventListener(WI.CSSStyleManager.Event.StyleSheetAdded, (event) => {
InspectorTest.expectThat(event.data.styleSheet.origin === WI.CSSStyleSheet.Type.Inspector, "Added StyleSheet origin should be 'inspector'.");
InspectorTest.expectThat(event.data.styleSheet.isInspectorStyleSheet(), "StyleSheet.isInspectorStyleSheet() should be true.");
InspectorTest.expectThat(event.data.styleSheet.parentFrame === mainFrame, "Added StyleSheet frame should be the main frame.");
});
WI.cssStyleManager.preferredInspectorStyleSheetForFrame(mainFrame, (styleSheet) => {
InspectorTest.expectThat(WI.cssStyleManager.styleSheets.length === 1, "Should be one stylesheet.");
InspectorTest.expectThat(styleSheet.origin === WI.CSSStyleSheet.Type.Inspector, "StyleSheet origin is inspector.");
InspectorTest.expectThat(styleSheet.isInspectorStyleSheet(), "StyleSheet.isInspectorStyleSheet() should be true.");
resolve();
});
}
});
suite.addTestCase({
name: "AnotherMainFrameRequestDoesNothing",
description: "Second request for main frame should not create a new stylesheet.",
test(resolve, reject) {
let listener = WI.cssStyleManager.singleFireEventListener(WI.CSSStyleManager.Event.StyleSheetAdded, (event) => {
InspectorTest.assert(false, "Should not create a new StyleSheet, should reuse the existing one");
});
WI.cssStyleManager.preferredInspectorStyleSheetForFrame(mainFrame, (styleSheet) => {
InspectorTest.expectThat(WI.cssStyleManager.styleSheets.length === 1, "Should still be one stylesheet.");
InspectorTest.expectThat(styleSheet.origin === WI.CSSStyleSheet.Type.Inspector, "StyleSheet origin should be 'inspector'.");
InspectorTest.expectThat(styleSheet.isInspectorStyleSheet(), "StyleSheet.isInspectorStyleSheet() should be true.");
WI.cssStyleManager.removeEventListener(WI.CSSStyleManager.Event.StyleSheetAdded, listener, null);
resolve();
});
}
});
suite.addTestCase({
name: "CreateSubFrameInspectorStyleSheet",
description: "First request for subframe should create inspector stylesheet.",
test(resolve, reject) {
WI.cssStyleManager.singleFireEventListener(WI.CSSStyleManager.Event.StyleSheetAdded, (event) => {
InspectorTest.expectThat(event.data.styleSheet.origin === WI.CSSStyleSheet.Type.Inspector, "Added StyleSheet origin should be 'inspector'.");
InspectorTest.expectThat(event.data.styleSheet.isInspectorStyleSheet(), "StyleSheet.isInspectorStyleSheet() should be true.");
InspectorTest.expectThat(event.data.styleSheet.parentFrame === childFrames[0], "Added StyleSheet frame should be a child frame.");
});
WI.cssStyleManager.preferredInspectorStyleSheetForFrame(childFrames[0], (styleSheet) => {
InspectorTest.expectThat(WI.cssStyleManager.styleSheets.length === 2, "Should be two stylesheets.");
InspectorTest.expectThat(styleSheet.origin === WI.CSSStyleSheet.Type.Inspector, "StyleSheet origin should be 'inspector'.");
InspectorTest.expectThat(styleSheet.isInspectorStyleSheet(), "StyleSheet.isInspectorStyleSheet() should be true.");
resolve();
});
}
});
suite.addTestCase({
name: "AnotherSubFrameRequestDoesNothing",
description: "Second request for main frame should not create a new stylesheet.",
test(resolve, reject) {
let listener = WI.cssStyleManager.singleFireEventListener(WI.CSSStyleManager.Event.StyleSheetAdded, (event) => {
InspectorTest.assert(false, "Should not create a new StyleSheet, should reuse the existing one");
});
WI.cssStyleManager.preferredInspectorStyleSheetForFrame(childFrames[0], (styleSheet) => {
InspectorTest.expectThat(WI.cssStyleManager.styleSheets.length === 2, "Should be two stylesheets.");
InspectorTest.expectThat(styleSheet.origin === WI.CSSStyleSheet.Type.Inspector, "StyleSheet origin should be 'inspector'.");
InspectorTest.expectThat(styleSheet.isInspectorStyleSheet(), "StyleSheet.isInspectorStyleSheet() should be true.");
WI.cssStyleManager.removeEventListener(WI.CSSStyleManager.Event.StyleSheetAdded, listener, null);
resolve();
});
}
});
WI.cssStyleManager.singleFireEventListener(WI.CSSStyleManager.Event.StyleSheetRemoved, function(event) {
InspectorTest.assert(false, "Should not be removing any StyleSheets in this test.");
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Test CSSManager.preferredInspectorStyleSheetForFrame.</p>
<iframe src="about:blank"></iframe>
</body>
</html>