Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 var initialize_InspectorTest = function() { | 1 var initialize_InspectorTest = function() { |
| 2 | 2 |
| 3 var results = []; | 3 var results = []; |
| 4 | 4 |
| 5 function consoleOutputHook(messageType) | 5 function consoleOutputHook(messageType) |
| 6 { | 6 { |
| 7 InspectorTest.addResult(messageType + ": " + Array.prototype.slice.call(argu ments, 1)); | 7 InspectorTest.addResult(messageType + ": " + Array.prototype.slice.call(argu ments, 1)); |
| 8 } | 8 } |
| 9 | 9 |
| 10 window._originalConsoleLog = console.log.bind(console); | 10 window._originalConsoleLog = console.log.bind(console); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 51 | 51 |
| 52 InspectorTest.evaluateInPageWithTimeout = function(code) | 52 InspectorTest.evaluateInPageWithTimeout = function(code) |
| 53 { | 53 { |
| 54 // FIXME: we need a better way of waiting for chromium events to happen | 54 // FIXME: we need a better way of waiting for chromium events to happen |
| 55 InspectorTest.evaluateInPage("setTimeout(unescape('" + escape(code) + "'), 1 )"); | 55 InspectorTest.evaluateInPage("setTimeout(unescape('" + escape(code) + "'), 1 )"); |
| 56 } | 56 } |
| 57 | 57 |
| 58 var lastEvalId = 0; | 58 var lastEvalId = 0; |
| 59 var pendingEvalRequests = {}; | 59 var pendingEvalRequests = {}; |
| 60 | 60 |
| 61 var lastPromiseEvalId = 0; | |
| 62 var pendingPromiseEvalRequests = {}; | |
| 63 | |
| 64 /** | |
| 65 * The given function should take two callback paraters before the arguments: | |
| 66 * * resolve - called when successful (with optional result) | |
| 67 * * reject - called when there was a failure (with optional error) | |
| 68 */ | |
| 69 InspectorTest.invokePageFunctionPromise = function(functionName, parameters) | |
| 70 { | |
| 71 return new Promise(function(resolve, reject) { | |
| 72 var id = ++lastPromiseEvalId; | |
| 73 pendingPromiseEvalRequests[id] = { resolve: InspectorTest.safeWrap(resol ve), reject: InspectorTest.safeWrap(reject) }; | |
| 74 | |
| 75 var jsonParameters = []; | |
| 76 for (var i = 0; i < parameters.length; ++i) | |
| 77 jsonParameters.push(JSON.stringify(parameters[i])); | |
| 78 var asyncEvalWrapper = function(callId, functionName, argumentsArray) | |
| 79 { | |
| 80 function evalCallbackResolve(result) | |
| 81 { | |
| 82 testRunner.evaluateInWebInspector(evalCallbackCallId, "Inspector Test.didInvokePageFunctionPromise(" + callId + ", " + JSON.stringify(result) + " , true);"); | |
| 83 } | |
| 84 function evalCallbackReject(result) | |
|
pfeldman
2015/04/15 17:50:08
Blank lines around functions.
dmurph
2015/04/15 21:29:32
Done.
| |
| 85 { | |
| 86 testRunner.evaluateInWebInspector(evalCallbackCallId, "Inspector Test.didInvokePageFunctionPromise(" + callId + ", " + JSON.stringify(result) + " , false);"); | |
| 87 } | |
| 88 var args = [evalCallbackResolve, evalCallbackReject].concat(argument sArray.map(JSON.stringify)); | |
| 89 var functionCall = functionName + ".call(null, " + args.join(", ") + ")"; | |
| 90 try { | |
| 91 eval(functionCall); | |
| 92 } catch(e) { | |
| 93 console.error(e); | |
|
pfeldman
2015/04/15 17:50:08
Inspector.addResult, no console.error please, they
dmurph
2015/04/15 21:29:32
Done. (This was copied from below, so I changed in
| |
| 94 evalCallbackReject(e); | |
| 95 } | |
| 96 } | |
| 97 var pageRequest = "(" + asyncEvalWrapper.toString() + ")(" + id + ", une scape('" + escape(functionName) + "'), [" + jsonParameters.join(", ") + "])"; | |
| 98 InspectorTest.evaluateInPage(pageRequest); | |
| 99 }); | |
| 100 } | |
| 101 | |
| 102 | |
| 103 InspectorTest.didInvokePageFunctionPromise = function(callId, value, didResolve) | |
| 104 { | |
| 105 var callbacks = pendingPromiseEvalRequests[callId]; | |
| 106 if (!callbacks) { | |
| 107 InspectorTest.addResult("Missing callback for async eval " + callId + ", perhaps callback invoked twice?"); | |
| 108 return; | |
| 109 } | |
| 110 var callback = didResolve ? callbacks.resolve : callbacks.reject; | |
| 111 delete pendingPromiseEvalRequests[callId]; | |
| 112 callback(value); | |
| 113 } | |
| 114 | |
| 61 InspectorTest.invokePageFunctionAsync = function(functionName, callback) | 115 InspectorTest.invokePageFunctionAsync = function(functionName, callback) |
| 62 { | 116 { |
| 63 var id = ++lastEvalId; | 117 var id = ++lastEvalId; |
| 64 pendingEvalRequests[id] = InspectorTest.safeWrap(callback); | 118 pendingEvalRequests[id] = InspectorTest.safeWrap(callback); |
| 65 var asyncEvalWrapper = function(callId, functionName) | 119 var asyncEvalWrapper = function(callId, functionName) |
| 66 { | 120 { |
| 67 function evalCallback(result) | 121 function evalCallback(result) |
| 68 { | 122 { |
| 69 testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest .didInvokePageFunctionAsync(" + callId + ", " + JSON.stringify(result) + ");"); | 123 testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest .didInvokePageFunctionAsync(" + callId + ", " + JSON.stringify(result) + ");"); |
| 70 } | 124 } |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 422 try { | 476 try { |
| 423 Array.prototype.push.call(arguments, result); | 477 Array.prototype.push.call(arguments, result); |
| 424 override.apply(this, arguments); | 478 override.apply(this, arguments); |
| 425 } catch (e) { | 479 } catch (e) { |
| 426 throw ("Exception in overriden method '" + methodName + "': " + e); | 480 throw ("Exception in overriden method '" + methodName + "': " + e); |
| 427 } | 481 } |
| 428 return result; | 482 return result; |
| 429 }; | 483 }; |
| 430 } | 484 } |
| 431 | 485 |
| 486 InspectorTest.addSnifferPromise = function(receiver, methodName) | |
| 487 { | |
| 488 return new Promise(function (resolve, reject) { | |
| 489 var original = receiver[methodName]; | |
|
pfeldman
2015/04/15 17:50:08
Poor indent.
dmurph
2015/04/15 21:29:32
Done.
| |
| 490 if (typeof original !== "function") { | |
| 491 reject("Cannot find method to override: " + methodName); | |
| 492 return; | |
| 493 } | |
| 494 | |
| 495 receiver[methodName] = function(var_args) { | |
| 496 try { | |
| 497 var result = original.apply(this, arguments); | |
| 498 } finally { | |
| 499 receiver[methodName] = original; | |
| 500 } | |
| 501 // In case of exception the override won't be called. | |
| 502 try { | |
| 503 Array.prototype.push.call(arguments, result); | |
| 504 resolve.apply(this, arguments); | |
| 505 } catch (e) { | |
| 506 reject("Exception in overriden method '" + methodName + "': " + e); | |
| 507 } | |
| 508 return result; | |
| 509 }; | |
| 510 }); | |
| 511 } | |
| 512 | |
| 432 InspectorTest.addConsoleSniffer = function(override, opt_sticky) | 513 InspectorTest.addConsoleSniffer = function(override, opt_sticky) |
| 433 { | 514 { |
| 434 InspectorTest.addSniffer(WebInspector.ConsoleModel.prototype, "addMessage", override, opt_sticky); | 515 InspectorTest.addSniffer(WebInspector.ConsoleModel.prototype, "addMessage", override, opt_sticky); |
| 435 } | 516 } |
| 436 | 517 |
| 437 InspectorTest.override = function(receiver, methodName, override, opt_sticky) | 518 InspectorTest.override = function(receiver, methodName, override, opt_sticky) |
| 438 { | 519 { |
| 439 override = InspectorTest.safeWrap(override); | 520 override = InspectorTest.safeWrap(override); |
| 440 | 521 |
| 441 var original = receiver[methodName]; | 522 var original = receiver[methodName]; |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 974 _output("[page] " + text); | 1055 _output("[page] " + text); |
| 975 } | 1056 } |
| 976 | 1057 |
| 977 function _output(result) | 1058 function _output(result) |
| 978 { | 1059 { |
| 979 if (!outputElement) | 1060 if (!outputElement) |
| 980 createOutputElement(); | 1061 createOutputElement(); |
| 981 outputElement.appendChild(document.createTextNode(result)); | 1062 outputElement.appendChild(document.createTextNode(result)); |
| 982 outputElement.appendChild(document.createElement("br")); | 1063 outputElement.appendChild(document.createElement("br")); |
| 983 } | 1064 } |
| OLD | NEW |