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

Unified Diff: LayoutTests/http/tests/inspector/inspector-test.js

Issue 1044203004: [Storage] Cache storage inspection on all the frames! (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: comments and rebase Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: LayoutTests/http/tests/inspector/inspector-test.js
diff --git a/LayoutTests/http/tests/inspector/inspector-test.js b/LayoutTests/http/tests/inspector/inspector-test.js
index 6f5e630b2f44883b6fa884399ce76c89afd4d762..7bfad0f162e9210a06a56774855528a2175f2ffa 100644
--- a/LayoutTests/http/tests/inspector/inspector-test.js
+++ b/LayoutTests/http/tests/inspector/inspector-test.js
@@ -58,6 +58,62 @@ InspectorTest.evaluateInPageWithTimeout = function(code)
var lastEvalId = 0;
var pendingEvalRequests = {};
+var lastPromiseEvalId = 0;
+var pendingPromiseEvalRequests = {};
+
+/**
+ * The given function should take two callback paraters before the arguments:
+ * * resolve - called when successful (with optional result)
+ * * reject - called when there was a failure (with optional error)
+ */
+InspectorTest.invokePageFunctionPromise = function(functionName, parameters)
+{
+ return new Promise(function(resolve, reject) {
+ var id = ++lastPromiseEvalId;
+ pendingPromiseEvalRequests[id] = { resolve: InspectorTest.safeWrap(resolve), reject: InspectorTest.safeWrap(reject) };
+
+ var jsonParameters = [];
+ for (var i = 0; i < parameters.length; ++i)
+ jsonParameters.push(JSON.stringify(parameters[i]));
+ var asyncEvalWrapper = function(callId, functionName, argumentsArray)
+ {
+ function evalCallbackResolve(result)
+ {
+ testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest.didInvokePageFunctionPromise(" + callId + ", " + JSON.stringify(result) + ", true);");
+ }
+
+ function evalCallbackReject(result)
+ {
+ testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest.didInvokePageFunctionPromise(" + callId + ", " + JSON.stringify(result) + ", false);");
+ }
+
+ var args = [evalCallbackResolve, evalCallbackReject].concat(argumentsArray.map(JSON.stringify));
+ var functionCall = functionName + ".call(null, " + args.join(", ") + ")";
+ try {
+ eval(functionCall);
+ } catch(e) {
+ InspectorTest.addResult("Error: " + e);
+ evalCallbackReject(e);
+ }
+ }
+ var pageRequest = "(" + asyncEvalWrapper.toString() + ")(" + id + ", unescape('" + escape(functionName) + "'), [" + jsonParameters.join(", ") + "])";
+ InspectorTest.evaluateInPage(pageRequest);
+ });
+}
+
+
+InspectorTest.didInvokePageFunctionPromise = function(callId, value, didResolve)
+{
+ var callbacks = pendingPromiseEvalRequests[callId];
+ if (!callbacks) {
+ InspectorTest.addResult("Missing callback for async eval " + callId + ", perhaps callback invoked twice?");
+ return;
+ }
+ var callback = didResolve ? callbacks.resolve : callbacks.reject;
+ delete pendingPromiseEvalRequests[callId];
+ callback(value);
+}
+
InspectorTest.invokePageFunctionAsync = function(functionName, callback)
{
var id = ++lastEvalId;
@@ -68,10 +124,11 @@ InspectorTest.invokePageFunctionAsync = function(functionName, callback)
{
testRunner.evaluateInWebInspector(evalCallbackCallId, "InspectorTest.didInvokePageFunctionAsync(" + callId + ", " + JSON.stringify(result) + ");");
}
+
try {
eval(functionName + "(" + evalCallback + ")");
} catch(e) {
- console.error(e);
+ InspectorTest.addResult("Error: " + e);
evalCallback(String(e));
}
}
@@ -429,6 +486,33 @@ InspectorTest.addSniffer = function(receiver, methodName, override, opt_sticky)
};
}
+InspectorTest.addSnifferPromise = function(receiver, methodName)
+{
+ return new Promise(function (resolve, reject) {
+ var original = receiver[methodName];
+ if (typeof original !== "function") {
+ reject("Cannot find method to override: " + methodName);
+ return;
+ }
+
+ receiver[methodName] = function(var_args) {
+ try {
+ var result = original.apply(this, arguments);
+ } finally {
+ receiver[methodName] = original;
+ }
+ // In case of exception the override won't be called.
+ try {
+ Array.prototype.push.call(arguments, result);
+ resolve.apply(this, arguments);
+ } catch (e) {
+ reject("Exception in overriden method '" + methodName + "': " + e);
+ }
+ return result;
+ };
+ });
+}
+
InspectorTest.addConsoleSniffer = function(override, opt_sticky)
{
InspectorTest.addSniffer(WebInspector.ConsoleModel.prototype, "addMessage", override, opt_sticky);

Powered by Google App Engine
This is Rietveld 408576698