3 <script src="../../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../../http/tests/inspector/debugger-test.js"></script>
7 function testFunction()
9 var promise = new Promise(function promiseConstructor(resolve, reject) {
13 .then(thenCallback, errorCallback)
14 .then(thenCallback2, errorCallback);
17 function thenCallback() { }
19 function thenCallback2()
24 function errorCallback() { }
26 var test = function ()
28 InspectorTest.startDebuggerTest(step1);
32 DebuggerAgent.enablePromiseTracker();
33 InspectorTest.runTestFunctionAndWaitUntilPaused(step2);
38 DebuggerAgent.getPromises(didGetPromises);
41 function didGetPromises(error, response)
43 InspectorTest.assertTrue(!error, "FAIL: " + error);
45 function comparePromiseData(x, y)
49 else if (x.id === y.id)
56 if (response.length) {
57 minPromiseId = response[0].id;
58 for (var i = 0; i < response.length; i++)
59 minPromiseId = Math.min(minPromiseId, response[i].id);
61 response.sort(comparePromiseData);
64 for (var i = 0; i < response.length; i++) {
65 var promise = response[i];
66 var parentId = promise.parentId ? promise.parentId - minPromiseId : undefined;
67 var promiseInfo = "Promise:" +
68 "\n id: " + (promise.id - minPromiseId) +
69 "\n status: " + promise.status +
70 "\n parent id: " + parentId;
71 var callFrame = promise.callFrame;
73 var url = WebInspector.displayNameForURL(callFrame.url);
74 promiseInfo += "\n " + callFrame.functionName + " " + url + ":" + callFrame.lineNumber;
76 output.push(promiseInfo);
79 InspectorTest.addResults(output);
81 DebuggerAgent.getPromiseById(response[0].id, "console", didGetPromiseById);
84 function didGetPromiseById(error, response)
86 InspectorTest.assertTrue(!error, "FAIL: " + error);
87 InspectorTest.assertTrue(response && response.type === "object" && response.className === "Promise", "FAIL: returned by ID object is not a Promise.");
89 RuntimeAgent.getProperties(response.objectId, didGetProperties);
92 function didGetProperties(error, properties, internalProperties) {
93 InspectorTest.assertTrue(!error, "FAIL: " + error);
94 InspectorTest.assertTrue(internalProperties && internalProperties.length > 0, "FAIL: no internal properties.");
97 for (var i = 0; i < internalProperties.length; i++) {
98 var property = internalProperties[i];
99 if (property.name === "[[PromiseStatus]]")
100 status = property.value.value;
101 if (property.name === "[[PromiseValue]]")
102 value = property.value.value;
105 InspectorTest.addResult("Promise:\n status: " + status + "\n value: " + value);
107 DebuggerAgent.disablePromiseTracker();
108 DebuggerAgent.getPromises(didGetPromises2);
111 function didGetPromises2(error, response)
113 var hasData = !error && response && response.length > 0;
114 InspectorTest.assertTrue(!hasData, "FAIL: expected error or no data after disabling promise tracker.");
115 InspectorTest.completeDebuggerTest();
122 <body onload="runTest()">
124 Tests promise tracker in debugger.