OLD | NEW |
| (Empty) |
1 <html> | |
2 <head> | |
3 <script type="text/javascript" src="../../http/tests/inspector-protocol/resource
s/inspector-protocol-test.js"></script> | |
4 <script> | |
5 | |
6 testRunner.setDumpConsoleMessages(false); | |
7 function test() | |
8 { | |
9 InspectorTest.runTestSuite([ | |
10 function testArguments(next) | |
11 { | |
12 callFunctionOn( | |
13 "({a : 1})", | |
14 "function(arg1, arg2, arg3, arg4) { return \"\" + arg1 + \"|\" +
arg2 + \"|\" + arg3 + \"|\" + arg4; }", | |
15 [ "undefined", "NaN", "({a:2})", "window"], | |
16 /* returnByValue */ true, | |
17 /* generatePreview */ false, | |
18 /* awaitPromise */ false) | |
19 .then((result) => dumpResult(result.result)) | |
20 .then(() => next()); | |
21 }, | |
22 | |
23 function testSyntaxErrorInFunction(next) | |
24 { | |
25 callFunctionOn( | |
26 "({a : 1})", | |
27 "\n }", | |
28 [], | |
29 /* returnByValue */ false, | |
30 /* generatePreview */ false, | |
31 /* awaitPromise */ true) | |
32 .then((result) => dumpResult(result.result)) | |
33 .then(() => next()); | |
34 }, | |
35 | |
36 function testExceptionInFunctionExpression(next) | |
37 { | |
38 callFunctionOn( | |
39 "({a : 1})", | |
40 "(function() { throw new Error() })()", | |
41 [], | |
42 /* returnByValue */ false, | |
43 /* generatePreview */ false, | |
44 /* awaitPromise */ true) | |
45 .then((result) => dumpResult(result.result)) | |
46 .then(() => next()); | |
47 }, | |
48 | |
49 function testFunctionReturnNotPromise(next) | |
50 { | |
51 callFunctionOn( | |
52 "({a : 1})", | |
53 "(function() { return 239; })", | |
54 [], | |
55 /* returnByValue */ false, | |
56 /* generatePreview */ false, | |
57 /* awaitPromise */ true) | |
58 .then((result) => InspectorTest.logObject(result.error)) | |
59 .then(() => next()); | |
60 }, | |
61 | |
62 function testFunctionReturnResolvedPromiseReturnByValue(next) | |
63 { | |
64 callFunctionOn( | |
65 "({a : 1})", | |
66 "(function(arg) { return Promise.resolve({a : this.a + arg.a});
})", | |
67 [ "({a:2})" ], | |
68 /* returnByValue */ true, | |
69 /* generatePreview */ false, | |
70 /* awaitPromise */ true) | |
71 .then((result) => dumpResult(result.result)) | |
72 .then(() => next()); | |
73 }, | |
74 | |
75 function testFunctionReturnResolvedPromiseWithPreview(next) | |
76 { | |
77 callFunctionOn( | |
78 "({a : 1})", | |
79 "(function(arg) { return Promise.resolve({a : this.a + arg.a});
})", | |
80 [ "({a:2})" ], | |
81 /* returnByValue */ false, | |
82 /* generatePreview */ true, | |
83 /* awaitPromise */ true) | |
84 .then((result) => dumpResult(result.result)) | |
85 .then(() => next()); | |
86 }, | |
87 | |
88 function testFunctionReturnRejectedPromise(next) | |
89 { | |
90 callFunctionOn( | |
91 "({a : 1})", | |
92 "(function(arg) { return Promise.reject({a : this.a + arg.a}); }
)", | |
93 [ "({a:2})" ], | |
94 /* returnByValue */ true, | |
95 /* generatePreview */ false, | |
96 /* awaitPromise */ true) | |
97 .then((result) => dumpResult(result.result)) | |
98 .then(() => next()); | |
99 } | |
100 ]); | |
101 | |
102 function callFunctionOn(objectExpression, functionDeclaration, argumentExpre
ssions, returnByValue, generatePreview, awaitPromise) | |
103 { | |
104 var objectId; | |
105 var callArguments = []; | |
106 var promise = InspectorTest.sendCommandPromise("Runtime.evaluate", { exp
ression: objectExpression }) | |
107 .then((result) => objectId = result.result.result.objectId) | |
108 for (let argumentExpression of argumentExpressions) { | |
109 promise = promise | |
110 .then(() => InspectorTest.sendCommandPromise("Runtime.evaluate",
{ expression: argumentExpression })) | |
111 .then((result) => addArgument(result.result.result)); | |
112 } | |
113 return promise.then(() => InspectorTest.sendCommandPromise("Runtime.call
FunctionOn", { objectId: objectId, functionDeclaration: functionDeclaration, arg
uments: callArguments, returnByValue: returnByValue, generatePreview: generatePr
eview, awaitPromise: awaitPromise })); | |
114 | |
115 function addArgument(result) | |
116 { | |
117 if (result.objectId) { | |
118 callArguments.push({ objectId: result.objectId }); | |
119 } else if (result.value) { | |
120 callArguments.push({ value: result.value }) | |
121 } else if (result.unserializableValue) { | |
122 callArguments.push({ unserializableValue: result.unserializableV
alue }); | |
123 } else if (result.type === "undefined") { | |
124 callArguments.push({}); | |
125 } else { | |
126 InspectorTest.log("Unexpected argument object:"); | |
127 InspectorTest.logObject(result); | |
128 InspectorTest.completeTest(); | |
129 } | |
130 } | |
131 } | |
132 | |
133 function dumpResult(result) | |
134 { | |
135 if (result.exceptionDetails && result.exceptionDetails.scriptId) | |
136 result.exceptionDetails.scriptId = 0; | |
137 if (result.result && result.result.objectId) | |
138 result.result.objectId = "[ObjectId]"; | |
139 if (result.exceptionDetails) { | |
140 result.exceptionDetails.exceptionId = 0; | |
141 result.exceptionDetails.exception.objectId = 0; | |
142 } | |
143 InspectorTest.logObject(result); | |
144 } | |
145 } | |
146 </script> | |
147 </head> | |
148 <body onLoad="runTest();"> | |
149 Tests that Runtime.callFunctionOn works with awaitPromise flag. | |
150 </body> | |
151 </html> | |
152 | |
OLD | NEW |