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

Unified Diff: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-callFunctionOn-async.js

Issue 2954093003: [DevTools] Migrate inspector-protocol/runtime tests to new harness (Closed)
Patch Set: fail: Created 3 years, 6 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: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-callFunctionOn-async.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-callFunctionOn-async.js b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-callFunctionOn-async.js
new file mode 100644
index 0000000000000000000000000000000000000000..1b616f64ea750b2087dd7f33d3996b0c5d417d8f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-callFunctionOn-async.js
@@ -0,0 +1,118 @@
+(async function(testRunner) {
+ let {page, session, dp} = await testRunner.startBlank('Tests that Runtime.callFunctionOn works with awaitPromise flag.');
+
+ function dumpResult(result) {
+ if (result.exceptionDetails && result.exceptionDetails.scriptId)
+ result.exceptionDetails.scriptId = 0;
+ if (result.result && result.result.objectId)
+ result.result.objectId = '[ObjectId]';
+ if (result.exceptionDetails) {
+ result.exceptionDetails.exceptionId = 0;
+ result.exceptionDetails.exception.objectId = 0;
+ }
+ testRunner.logObject(result);
+ }
+
+ async function callFunctionOn(objectExpression, functionDeclaration, argumentExpressions, returnByValue, generatePreview, awaitPromise) {
+ var objectId = (await dp.Runtime.evaluate({ expression: objectExpression })).result.result.objectId;
+
+ var callArguments = [];
+ for (var argumentExpression of argumentExpressions) {
+ var result = (await dp.Runtime.evaluate({ expression: argumentExpression })).result.result;
+ if (result.objectId) {
+ callArguments.push({ objectId: result.objectId });
+ } else if (result.value) {
+ callArguments.push({ value: result.value })
+ } else if (result.unserializableValue) {
+ callArguments.push({ unserializableValue: result.unserializableValue });
+ } else if (result.type === 'undefined') {
+ callArguments.push({});
+ } else {
+ testRunner.log('Unexpected argument object:');
+ testRunner.logObject(result);
+ testRunner.completeTest();
+ }
+ }
+
+ return dp.Runtime.callFunctionOn({ objectId, functionDeclaration, arguments: callArguments, returnByValue, generatePreview, awaitPromise });
+ }
+
+ await testRunner.runTestSuite([
+ async function testArguments() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ 'function(arg1, arg2, arg3, arg4) { return \'\' + arg1 + \'|\' + arg2 + \'|\' + arg3 + \'|\' + arg4; }',
+ [ 'undefined', 'NaN', '({a:2})', 'window'],
+ /* returnByValue */ true,
+ /* generatePreview */ false,
+ /* awaitPromise */ false);
+ dumpResult(result.result);
+ },
+
+ async function testSyntaxErrorInFunction() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ '\n }',
+ [],
+ /* returnByValue */ false,
+ /* generatePreview */ false,
+ /* awaitPromise */ true);
+ dumpResult(result.result);
+ },
+
+ async function testExceptionInFunctionExpression() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ '(function() { throw new Error() })()',
+ [],
+ /* returnByValue */ false,
+ /* generatePreview */ false,
+ /* awaitPromise */ true);
+ dumpResult(result.result);
+ },
+
+ async function testFunctionReturnNotPromise() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ '(function() { return 239; })',
+ [],
+ /* returnByValue */ false,
+ /* generatePreview */ false,
+ /* awaitPromise */ true);
+ testRunner.logObject(result.error);
+ },
+
+ async function testFunctionReturnResolvedPromiseReturnByValue() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ '(function(arg) { return Promise.resolve({a : this.a + arg.a}); })',
+ [ '({a:2})' ],
+ /* returnByValue */ true,
+ /* generatePreview */ false,
+ /* awaitPromise */ true);
+ dumpResult(result.result);
+ },
+
+ async function testFunctionReturnResolvedPromiseWithPreview() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ '(function(arg) { return Promise.resolve({a : this.a + arg.a}); })',
+ [ '({a:2})' ],
+ /* returnByValue */ false,
+ /* generatePreview */ true,
+ /* awaitPromise */ true);
+ dumpResult(result.result);
+ },
+
+ async function testFunctionReturnRejectedPromise() {
+ var result = await callFunctionOn(
+ '({a : 1})',
+ '(function(arg) { return Promise.reject({a : this.a + arg.a}); })',
+ [ '({a:2})' ],
+ /* returnByValue */ true,
+ /* generatePreview */ false,
+ /* awaitPromise */ true);
+ dumpResult(result.result);
+ }
+ ]);
+})

Powered by Google App Engine
This is Rietveld 408576698