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: --harmony-object-observe 6// Flags: --expose-debug-as debug 7 8Debug = debug.Debug; 9 10var base_id = -1; 11var exception = null; 12var expected = [ 13 "enqueue #1", 14 "willHandle #1", 15 "didHandle #1", 16]; 17 18function assertLog(msg) { 19 print(msg); 20 assertTrue(expected.length > 0); 21 assertEquals(expected.shift(), msg); 22 if (!expected.length) { 23 Debug.setListener(null); 24 } 25} 26 27function listener(event, exec_state, event_data, data) { 28 if (event != Debug.DebugEvent.AsyncTaskEvent) return; 29 try { 30 if (base_id < 0) 31 base_id = event_data.id(); 32 var id = event_data.id() - base_id + 1; 33 assertEquals("Object.observe", event_data.name()); 34 assertLog(event_data.type() + " #" + id); 35 } catch (e) { 36 print(e + e.stack) 37 exception = e; 38 } 39} 40 41Debug.setListener(listener); 42 43var obj = {}; 44Object.observe(obj, function(changes) { 45 print(change.type + " " + change.name + " " + change.oldValue); 46}); 47 48obj.foo = 1; 49obj.zoo = 2; 50obj.foo = 3; 51 52assertNull(exception); 53