1// 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 5// Flags: --expose-debug-as debug 6 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", 19 "enqueue #3", 20 "didHandle #2", 21 "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 61assertNull(exception); 62