blob: 0b0fa1e64f1509154a494fa58fe72839cd90e3df [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Ben Murdoch61f157c2016-09-16 13:49:30 +01005// Flags: --expose-debug-as debug --allow-natives-syntax
Ben Murdochb8a8cc12014-11-26 15:28:44 +00006
7Debug = debug.Debug;
8
9var base_id = -1;
10var exception = null;
11var expected = [
12 "enqueue #1",
13 "willHandle #1",
14 "then #1",
15 "enqueue #2",
16 "didHandle #1",
17 "willHandle #2",
18 "then #2",
Ben Murdochb8a8cc12014-11-26 15:28:44 +000019 "didHandle #2",
Ben Murdoch61f157c2016-09-16 13:49:30 +010020 "enqueue #3",
Ben Murdochb8a8cc12014-11-26 15:28:44 +000021 "willHandle #3",
22 "didHandle #3"
23];
24
25function assertLog(msg) {
26 print(msg);
27 assertTrue(expected.length > 0);
28 assertEquals(expected.shift(), msg);
29 if (!expected.length) {
30 Debug.setListener(null);
31 }
32}
33
34function listener(event, exec_state, event_data, data) {
35 if (event != Debug.DebugEvent.AsyncTaskEvent) return;
36 try {
37 if (base_id < 0)
38 base_id = event_data.id();
39 var id = event_data.id() - base_id + 1;
40 assertEquals("Promise.resolve", event_data.name());
41 assertLog(event_data.type() + " #" + id);
42 } catch (e) {
43 print(e + e.stack)
44 exception = e;
45 }
46}
47
48Debug.setListener(listener);
49
50var resolver;
51var p = new Promise(function(resolve, reject) {
52 resolver = resolve;
53});
54p.then(function() {
55 assertLog("then #1");
56}).then(function() {
57 assertLog("then #2");
58});
59resolver();
60
Ben Murdoch61f157c2016-09-16 13:49:30 +010061%RunMicrotasks();
62
Ben Murdochb8a8cc12014-11-26 15:28:44 +000063assertNull(exception);