Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1615)

Side by Side Diff: LayoutTests/http/tests/inspector-protocol/resources/InspectorTest.js

Issue 183663014: DevTools: Unify protocol test scripts naming with frontend tests. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed tests Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2012 Samsung Electronics. All rights reserved.
3 * Copyright (C) 2013 Google Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
19 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26 InspectorFrontendAPI = {};
27
28 InspectorTest = {};
29 InspectorTest._dispatchTable = [];
30 InspectorTest._requestId = -1;
31 InspectorTest.eventHandler = {};
32
33 /**
34 * @param {string} method
35 * @param {object} params
36 * @param {function({object} messageObject)=} handler
37 */
38 InspectorTest.sendCommand = function(method, params, handler)
39 {
40 this._dispatchTable[++this._requestId] = handler;
41
42 var messageObject = { "method": method,
43 "params": params,
44 "id": this._requestId };
45
46 InspectorFrontendHost.sendMessageToBackend(JSON.stringify(messageObject));
47
48 return this._requestId;
49 }
50
51 /**
52 * @param {function(object)=} callback
53 */
54 InspectorTest.wrapCallback = function(callback)
55 {
56 /**
57 * @param {object} message
58 */
59 function callbackWrapper(message)
60 {
61 if (InspectorTest.completeTestIfError(message))
62 return;
63 if (!callback)
64 return;
65 try {
66 callback(message["result"]);
67 } catch (e) {
68 InspectorTest.log("Exception " + e + " while invoking callback: " + callback);
69 InspectorTest.completeTest();
70 }
71 }
72 return callbackWrapper;
73 }
74
75 /**
76 * @param {string} command
77 * @param {function({object} messageObject)=} handler
78 */
79 InspectorTest.sendRawCommand = function(command, handler)
80 {
81 this._dispatchTable[++this._requestId] = handler;
82 InspectorFrontendHost.sendMessageToBackend(command);
83 return this._requestId;
84 }
85
86 /**
87 * @param {object} messageObject
88 */
89 InspectorFrontendAPI.dispatchMessageAsync = function(messageObject)
90 {
91 var messageId = messageObject["id"];
92 if (typeof messageId === "number") {
93 var handler = InspectorTest._dispatchTable[messageId];
94 if (handler && typeof handler === "function")
95 handler(messageObject);
96 } else {
97 var eventName = messageObject["method"];
98 var eventHandler = InspectorTest.eventHandler[eventName];
99 if (eventHandler)
100 eventHandler(messageObject);
101 }
102 }
103
104 /**
105 * Logs message to document.
106 * @param {string} message
107 */
108 InspectorTest.log = function(message)
109 {
110 this.sendCommand("Runtime.evaluate", { "expression": "log(" + JSON.stringify (message) + ")" } );
111 }
112
113 /**
114 * Formats and logs object to document.
115 * @param {Object} object
116 * @param {string=} title
117 */
118 InspectorTest.logObject = function(object, title)
119 {
120 var lines = [];
121
122 function dumpValue(value, prefix, prefixWithName)
123 {
124 if (typeof value === "object" && value !== null) {
125 if (value instanceof Array)
126 dumpItems(value, prefix, prefixWithName);
127 else
128 dumpProperties(value, prefix, prefixWithName);
129 } else {
130 lines.push(prefixWithName + String(value).replace(/\n/g, " "));
131 }
132 }
133
134 function dumpProperties(object, prefix, firstLinePrefix)
135 {
136 prefix = prefix || "";
137 firstLinePrefix = firstLinePrefix || prefix;
138 lines.push(firstLinePrefix + "{");
139
140 var propertyNames = Object.keys(object);
141 propertyNames.sort();
142 for (var i = 0; i < propertyNames.length; ++i) {
143 var name = propertyNames[i];
144 if (typeof object.hasOwnProperty === "function" && !object.hasOwnPro perty(name))
145 continue;
146 var prefixWithName = " " + prefix + name + " : ";
147 dumpValue(object[name], " " + prefix, prefixWithName);
148 }
149 lines.push(prefix + "}");
150 }
151
152 function dumpItems(object, prefix, firstLinePrefix)
153 {
154 prefix = prefix || "";
155 firstLinePrefix = firstLinePrefix || prefix;
156 lines.push(firstLinePrefix + "[");
157 for (var i = 0; i < object.length; ++i)
158 dumpValue(object[i], " " + prefix, " " + prefix + "[" + i + "] : ");
159 lines.push(prefix + "]");
160 }
161
162 dumpValue(object, "", title);
163 InspectorTest.log(lines.join("\n"));
164 }
165
166 /**
167 * Logs message directly to process stdout via alert function (hopefully followed by flush call).
168 * This message should survive process crash or kill by timeout.
169 * @param {string} message
170 */
171 InspectorTest.debugLog = function(message)
172 {
173 this.sendCommand("Runtime.evaluate", { "expression": "debugLog(" + JSON.stri ngify(message) + ")" } );
174 }
175
176 InspectorTest.completeTest = function()
177 {
178 this.sendCommand("Runtime.evaluate", { "expression": "closeTest();"} );
179 }
180
181 InspectorTest.completeTestIfError = function(messageObject)
182 {
183 if (messageObject.error) {
184 InspectorTest.log(messageObject.error.message);
185 InspectorTest.completeTest();
186 return true;
187 }
188 return false;
189 }
190
191 InspectorTest.checkExpectation = function(fail, name, messageObject)
192 {
193 if (fail === !!messageObject.error) {
194 InspectorTest.log("PASS: " + name);
195 return true;
196 }
197
198 InspectorTest.log("FAIL: " + name + ": " + JSON.stringify(messageObject));
199 InspectorTest.completeTest();
200 return false;
201 }
202 InspectorTest.expectedSuccess = InspectorTest.checkExpectation.bind(null, false) ;
203 InspectorTest.expectedError = InspectorTest.checkExpectation.bind(null, true);
204
205 InspectorTest.assert = function(condition, message)
206 {
207 if (condition)
208 return;
209 InspectorTest.log("FAIL: assertion failed: " + message);
210 InspectorTest.completeTest();
211 }
212
213 InspectorTest.assertEquals = function(expected, actual, message)
214 {
215 if (expected === actual)
216 return;
217 InspectorTest,assert(false, "expected: `" + expected + "', actual: `" + actu al + "'" + (message ? ", " + message : ""));
218 }
219
220 /**
221 * @param {string} scriptName
222 */
223 InspectorTest.importScript = function(scriptName)
224 {
225 var xhr = new XMLHttpRequest();
226 xhr.open("GET", scriptName, false);
227 xhr.send(null);
228 window.eval(xhr.responseText + "\n//@ sourceURL=" + scriptName);
229 }
230
231 window.addEventListener("message", function(event) {
232 try {
233 eval(event.data);
234 } catch (e) {
235 alert(e.stack);
236 InspectorTest.completeTest();
237 throw e;
238 }
239 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698