| 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 |
| 85 function evalCallbackReject(result) |
| 86 { |
| 87 testRunner.evaluateInWebInspector(evalCallbackCallId, "Inspector
Test.didInvokePageFunctionPromise(" + callId + ", " + JSON.stringify(result) + "
, false);"); |
| 88 } |
| 89 |
| 90 var args = [evalCallbackResolve, evalCallbackReject].concat(argument
sArray.map(JSON.stringify)); |
| 91 var functionCall = functionName + ".call(null, " + args.join(", ") +
")"; |
| 92 try { |
| 93 eval(functionCall); |
| 94 } catch(e) { |
| 95 InspectorTest.addResult("Error: " + e); |
| 96 evalCallbackReject(e); |
| 97 } |
| 98 } |
| 99 var pageRequest = "(" + asyncEvalWrapper.toString() + ")(" + id + ", une
scape('" + escape(functionName) + "'), [" + jsonParameters.join(", ") + "])"; |
| 100 InspectorTest.evaluateInPage(pageRequest); |
| 101 }); |
| 102 } |
| 103 |
| 104 |
| 105 InspectorTest.didInvokePageFunctionPromise = function(callId, value, didResolve) |
| 106 { |
| 107 var callbacks = pendingPromiseEvalRequests[callId]; |
| 108 if (!callbacks) { |
| 109 InspectorTest.addResult("Missing callback for async eval " + callId + ",
perhaps callback invoked twice?"); |
| 110 return; |
| 111 } |
| 112 var callback = didResolve ? callbacks.resolve : callbacks.reject; |
| 113 delete pendingPromiseEvalRequests[callId]; |
| 114 callback(value); |
| 115 } |
| 116 |
| 61 InspectorTest.invokePageFunctionAsync = function(functionName, callback) | 117 InspectorTest.invokePageFunctionAsync = function(functionName, callback) |
| 62 { | 118 { |
| 63 var id = ++lastEvalId; | 119 var id = ++lastEvalId; |
| 64 pendingEvalRequests[id] = InspectorTest.safeWrap(callback); | 120 pendingEvalRequests[id] = InspectorTest.safeWrap(callback); |
| 65 var asyncEvalWrapper = function(callId, functionName) | 121 var asyncEvalWrapper = function(callId, functionName) |
| 66 { | 122 { |
| 67 function evalCallback(result) | 123 function evalCallback(result) |
| 68 { | 124 { |
| 69 testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest
.didInvokePageFunctionAsync(" + callId + ", " + JSON.stringify(result) + ");"); | 125 testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest
.didInvokePageFunctionAsync(" + callId + ", " + JSON.stringify(result) + ");"); |
| 70 } | 126 } |
| 127 |
| 71 try { | 128 try { |
| 72 eval(functionName + "(" + evalCallback + ")"); | 129 eval(functionName + "(" + evalCallback + ")"); |
| 73 } catch(e) { | 130 } catch(e) { |
| 74 console.error(e); | 131 InspectorTest.addResult("Error: " + e); |
| 75 evalCallback(String(e)); | 132 evalCallback(String(e)); |
| 76 } | 133 } |
| 77 } | 134 } |
| 78 InspectorTest.evaluateInPage("(" + asyncEvalWrapper.toString() + ")(" + id +
", unescape('" + escape(functionName) + "'))"); | 135 InspectorTest.evaluateInPage("(" + asyncEvalWrapper.toString() + ")(" + id +
", unescape('" + escape(functionName) + "'))"); |
| 79 } | 136 } |
| 80 | 137 |
| 81 InspectorTest.didInvokePageFunctionAsync = function(callId, value) | 138 InspectorTest.didInvokePageFunctionAsync = function(callId, value) |
| 82 { | 139 { |
| 83 var callback = pendingEvalRequests[callId]; | 140 var callback = pendingEvalRequests[callId]; |
| 84 if (!callback) { | 141 if (!callback) { |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 try { | 479 try { |
| 423 Array.prototype.push.call(arguments, result); | 480 Array.prototype.push.call(arguments, result); |
| 424 override.apply(this, arguments); | 481 override.apply(this, arguments); |
| 425 } catch (e) { | 482 } catch (e) { |
| 426 throw ("Exception in overriden method '" + methodName + "': " + e); | 483 throw ("Exception in overriden method '" + methodName + "': " + e); |
| 427 } | 484 } |
| 428 return result; | 485 return result; |
| 429 }; | 486 }; |
| 430 } | 487 } |
| 431 | 488 |
| 489 InspectorTest.addSnifferPromise = function(receiver, methodName) |
| 490 { |
| 491 return new Promise(function (resolve, reject) { |
| 492 var original = receiver[methodName]; |
| 493 if (typeof original !== "function") { |
| 494 reject("Cannot find method to override: " + methodName); |
| 495 return; |
| 496 } |
| 497 |
| 498 receiver[methodName] = function(var_args) { |
| 499 try { |
| 500 var result = original.apply(this, arguments); |
| 501 } finally { |
| 502 receiver[methodName] = original; |
| 503 } |
| 504 // In case of exception the override won't be called. |
| 505 try { |
| 506 Array.prototype.push.call(arguments, result); |
| 507 resolve.apply(this, arguments); |
| 508 } catch (e) { |
| 509 reject("Exception in overriden method '" + methodName + "': " +
e); |
| 510 } |
| 511 return result; |
| 512 }; |
| 513 }); |
| 514 } |
| 515 |
| 432 InspectorTest.addConsoleSniffer = function(override, opt_sticky) | 516 InspectorTest.addConsoleSniffer = function(override, opt_sticky) |
| 433 { | 517 { |
| 434 InspectorTest.addSniffer(WebInspector.ConsoleModel.prototype, "addMessage",
override, opt_sticky); | 518 InspectorTest.addSniffer(WebInspector.ConsoleModel.prototype, "addMessage",
override, opt_sticky); |
| 435 } | 519 } |
| 436 | 520 |
| 437 InspectorTest.override = function(receiver, methodName, override, opt_sticky) | 521 InspectorTest.override = function(receiver, methodName, override, opt_sticky) |
| 438 { | 522 { |
| 439 override = InspectorTest.safeWrap(override); | 523 override = InspectorTest.safeWrap(override); |
| 440 | 524 |
| 441 var original = receiver[methodName]; | 525 var original = receiver[methodName]; |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 974 _output("[page] " + text); | 1058 _output("[page] " + text); |
| 975 } | 1059 } |
| 976 | 1060 |
| 977 function _output(result) | 1061 function _output(result) |
| 978 { | 1062 { |
| 979 if (!outputElement) | 1063 if (!outputElement) |
| 980 createOutputElement(); | 1064 createOutputElement(); |
| 981 outputElement.appendChild(document.createTextNode(result)); | 1065 outputElement.appendChild(document.createTextNode(result)); |
| 982 outputElement.appendChild(document.createElement("br")); | 1066 outputElement.appendChild(document.createElement("br")); |
| 983 } | 1067 } |
| OLD | NEW |