| // Copyright 2016 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| InspectorTest.log("Tests that Runtime.evaluate works with awaitPromise flag."); |
| |
| InspectorTest.addScript(` |
| function createPromiseAndScheduleResolve() |
| { |
| var resolveCallback; |
| var promise = new Promise((resolve) => resolveCallback = resolve); |
| setTimeout(resolveCallback.bind(null, { a : 239 }), 0); |
| return promise; |
| }`); |
| |
| InspectorTest.runTestSuite([ |
| function testResolvedPromise(next) |
| { |
| Protocol.Runtime.evaluate({ expression: "Promise.resolve(239)", awaitPromise: true, generatePreview: true }) |
| .then(result => InspectorTest.logMessage(result)) |
| .then(() => next()); |
| }, |
| |
| function testRejectedPromise(next) |
| { |
| Protocol.Runtime.evaluate({ expression: "Promise.reject(239)", awaitPromise: true }) |
| .then(result => InspectorTest.logMessage(result)) |
| .then(() => next()); |
| }, |
| |
| function testPrimitiveValueInsteadOfPromise(next) |
| { |
| Protocol.Runtime.evaluate({ expression: "true", awaitPromise: true }) |
| .then(result => InspectorTest.logMessage(result)) |
| .then(() => next()); |
| }, |
| |
| function testObjectInsteadOfPromise(next) |
| { |
| Protocol.Runtime.evaluate({ expression: "({})", awaitPromise: true }) |
| .then(result => InspectorTest.logMessage(result)) |
| .then(() => next()); |
| }, |
| |
| function testPendingPromise(next) |
| { |
| Protocol.Runtime.evaluate({ expression: "createPromiseAndScheduleResolve()", awaitPromise: true, returnByValue: true }) |
| .then(result => InspectorTest.logMessage(result)) |
| .then(() => next()); |
| }, |
| |
| function testExceptionInEvaluate(next) |
| { |
| Protocol.Runtime.evaluate({ expression: "throw 239", awaitPromise: true }) |
| .then(result => InspectorTest.logMessage(result)) |
| .then(() => next()); |
| } |
| ]); |