1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/devtools/server/tests/unit/test_objectgrips-10.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,72 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +var gDebuggee; 1.8 +var gClient; 1.9 +var gThreadClient; 1.10 + 1.11 +// Test that closures can be inspected. 1.12 + 1.13 +function run_test() 1.14 +{ 1.15 + initTestDebuggerServer(); 1.16 + gDebuggee = addTestGlobal("test-closures"); 1.17 + 1.18 + gClient = new DebuggerClient(DebuggerServer.connectPipe()); 1.19 + gClient.connect(function() { 1.20 + attachTestTabAndResume(gClient, "test-closures", function(aResponse, aTabClient, aThreadClient) { 1.21 + gThreadClient = aThreadClient; 1.22 + test_object_grip(); 1.23 + }); 1.24 + }); 1.25 + do_test_pending(); 1.26 +} 1.27 + 1.28 +function test_object_grip() 1.29 +{ 1.30 + gThreadClient.addOneTimeListener("paused", function(aEvent, aPacket) { 1.31 + let person = aPacket.frame.environment.bindings.variables.person; 1.32 + 1.33 + do_check_eq(person.value.class, "Object"); 1.34 + 1.35 + let personClient = gThreadClient.pauseGrip(person.value); 1.36 + personClient.getPrototypeAndProperties(aResponse => { 1.37 + do_check_eq(aResponse.ownProperties.getName.value.class, "Function"); 1.38 + 1.39 + do_check_eq(aResponse.ownProperties.getAge.value.class, "Function"); 1.40 + 1.41 + do_check_eq(aResponse.ownProperties.getFoo.value.class, "Function"); 1.42 + 1.43 + let getNameClient = gThreadClient.pauseGrip(aResponse.ownProperties.getName.value); 1.44 + let getAgeClient = gThreadClient.pauseGrip(aResponse.ownProperties.getAge.value); 1.45 + let getFooClient = gThreadClient.pauseGrip(aResponse.ownProperties.getFoo.value); 1.46 + getNameClient.getScope(aResponse => { 1.47 + do_check_eq(aResponse.scope.bindings.arguments[0].name.value, "Bob"); 1.48 + 1.49 + getAgeClient.getScope(aResponse => { 1.50 + do_check_eq(aResponse.scope.bindings.arguments[1].age.value, 58); 1.51 + 1.52 + getFooClient.getScope(aResponse => { 1.53 + do_check_eq(aResponse.scope.bindings.variables.foo.value, 10); 1.54 + 1.55 + gThreadClient.resume(() => finishClient(gClient)); 1.56 + }); 1.57 + }); 1.58 + }); 1.59 + }); 1.60 + 1.61 + }); 1.62 + 1.63 + gDebuggee.eval("(" + function() { 1.64 + var PersonFactory = function(name, age) { 1.65 + var foo = 10; 1.66 + return { 1.67 + getName: function() { return name; }, 1.68 + getAge: function() { return age; }, 1.69 + getFoo: function() { foo = Date.now(); return foo; } 1.70 + }; 1.71 + }; 1.72 + var person = new PersonFactory("Bob", 58); 1.73 + debugger; 1.74 + } + ")()"); 1.75 +}