Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / inspector-protocol / stylesheet-tracking-restart.html
1 <html>
2 <head>
3 <script type="text/javascript" src="../http/tests/inspector-protocol/resources/protocol-test.js"></script>
4 <script>
5 var styleElement1;
6 var styleElement2;
7
8 function createStyleSheet(textContent)
9 {
10     var styleElement = document.createElement("style");
11     styleElement.textContent = textContent;
12     document.head.appendChild(styleElement);
13     return styleElement;
14 }
15
16 function reopenWebInspector()
17 {
18     setTimeout(deferredReopening, 0);
19
20     function deferredReopening()
21     {
22         log("Closing inspector.\n");
23         closeInspector();
24         window.didReopen = 1;
25         log("Removing style sheet.\n");
26         document.head.removeChild(styleElement1);
27         log("Reopening inspector.");
28         openInspector();
29     }
30 }
31
32 function openWebInspector()
33 {
34     delete window.didReopen;
35     styleElement1 = createStyleSheet("body.class1 { color: red; } \n /*# sourceURL=foo.css */");
36     styleElement2 = createStyleSheet("body.class2 { color: green; } \n /*# sourceURL=bar.css */");
37     runTest();
38 }
39
40 function test()
41 {
42     InspectorTest.log("Running test");
43     InspectorTest.sendCommand("Runtime.evaluate", {"expression": "window.didReopen"}, dispatch);
44
45     function dispatch(response)
46     {
47         var result = response.result.result;
48         if (result.type !== "number") {
49             InspectorTest.log("Opening front-end for the first time");
50             runTests(reopenInspector);
51         } else {
52             InspectorTest.log("Opening front-end second time");
53             runTests(InspectorTest.completeTest.bind(InspectorTest));
54         }
55     }
56
57     function reopenInspector()
58     {
59         InspectorTest.sendCommand("Runtime.evaluate", {"expression": "reopenWebInspector()"});
60     }
61
62     function runTests(callback)
63     {
64         InspectorTest.eventHandler["CSS.styleSheetAdded"] = styleSheetAdded;
65         InspectorTest.eventHandler["CSS.styleSheetRemoved"] = styleSheetRemoved;
66         var headersAdded = [];
67         var headersRemoved = [];
68
69         function styleSheetAdded(response)
70         {
71             headersAdded.push(response.params.header);
72         }
73
74         function styleSheetRemoved(response)
75         {
76             headersRemoved.push(response.params.styleSheetId);
77         }
78
79         InspectorTest.log("Enabling CSS domain.");
80         InspectorTest.sendCommand("CSS.enable", {}, wasEnabled);
81
82         function wasEnabled()
83         {
84             function compareFunction(a, b)
85             {
86                 return a.styleSheetId - b.styleSheetId;
87             }
88
89             var headers = {};
90             headersAdded.sort(compareFunction);
91             for (var i = 0; i < headersAdded.length; ++i) {
92                 var header = headersAdded[i];
93                 headers[header.styleSheetId] = header.sourceURL;
94                 InspectorTest.log(" - style sheet added: " + header.sourceURL);
95             }
96
97             headersRemoved.sort();
98             for (var i = 0; i < headersRemoved.length; ++i)
99                 InspectorTest.log(" - style sheet removed: " + headers[headersRemoved[i]]);
100
101             callback();
102         }
103     }
104 }
105 </script>
106 </head>
107 <body onload="openWebInspector()">
108 <p>This test checks that if style sheet is removed between two inspector launches it is not reported to frontend.</p>
109 </body>
110 </html>