Web Inspector: CSS Regions: Add layout tests for the new events in the DOMTreeManager
[WebKit-https.git] / LayoutTests / http / tests / inspector-protocol / resources / protocol-test.js
1 /*
2  * Copyright (C) 2012 Samsung Electronics. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 var outputElement;
26
27 /**
28  * Logs message to process stdout via alert (hopefully implemented with immediate flush).
29  * @param {string} text
30  */
31 function debugLog(text)
32 {
33     alert(text);
34 }
35
36 /**
37  * @param {string} text
38  */
39 function log(text)
40 {
41     if (!outputElement) {
42         var intermediate = document.createElement("div");
43         document.body.appendChild(intermediate);
44
45         var intermediate2 = document.createElement("div");
46         intermediate.appendChild(intermediate2);
47
48         outputElement = document.createElement("div");
49         outputElement.className = "output";
50         outputElement.id = "output";
51         outputElement.style.whiteSpace = "pre";
52         intermediate2.appendChild(outputElement);
53     }
54     outputElement.appendChild(document.createTextNode(text));
55     outputElement.appendChild(document.createElement("br"));
56 }
57
58 function closeTest()
59 {
60     window.internals.closeDummyInspectorFrontend();
61     testRunner.notifyDone();
62 }
63
64 function runTest()
65 {
66     if (!window.testRunner) {
67         console.error("This test requires DumpRenderTree");
68         return;
69     }
70     testRunner.dumpAsText();
71     testRunner.waitUntilDone();
72     testRunner.setCanOpenWindows(true);
73
74     var scriptTags = document.getElementsByTagName("script");
75     var scriptUrlBasePath = "";
76     for (var i = 0; i < scriptTags.length; ++i) {
77         var index = scriptTags[i].src.lastIndexOf("/protocol-test.js");
78         if (index > -1 ) {
79             scriptUrlBasePath = scriptTags[i].src.slice(0, index);
80             break;
81         }
82     }
83
84     var url = scriptUrlBasePath + "/protocol-test.html";
85     var inspectorFrontend = window.internals.openDummyInspectorFrontend(url);
86     inspectorFrontend.addEventListener("load", function(event) {
87         // FIXME: rename this 'test' global field across all tests.
88         var testFunction = window.test;
89         if (typeof testFunction === "function") {
90             inspectorFrontend.postMessage("(" + testFunction.toString() +")();", "*");
91             return;
92         }
93         // Kill waiting process if failed to send.
94         alert("Failed to send test function");
95         testRunner.notifyDone();
96     });
97 }