michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: /** michael@0: * This test checks that objects which are not extensible report themselves as michael@0: * such. michael@0: */ michael@0: michael@0: var gDebuggee; michael@0: var gClient; michael@0: var gThreadClient; michael@0: michael@0: function run_test() michael@0: { michael@0: initTestDebuggerServer(); michael@0: gDebuggee = addTestGlobal("test-grips"); michael@0: gDebuggee.eval(function stopMe(arg1, arg2, arg3, arg4) { michael@0: debugger; michael@0: }.toString()); michael@0: michael@0: gClient = new DebuggerClient(DebuggerServer.connectPipe()); michael@0: gClient.connect(function() { michael@0: attachTestTabAndResume(gClient, "test-grips", function(aResponse, aTabClient, aThreadClient) { michael@0: gThreadClient = aThreadClient; michael@0: test_object_grip(); michael@0: }); michael@0: }); michael@0: do_test_pending(); michael@0: } michael@0: michael@0: function test_object_grip() michael@0: { michael@0: gThreadClient.addOneTimeListener("paused", function(aEvent, aPacket) { michael@0: let [f, s, ne, e] = aPacket.frame.arguments; michael@0: let [fClient, sClient, neClient, eClient] = aPacket.frame.arguments.map( michael@0: a => gThreadClient.pauseGrip(a)); michael@0: michael@0: do_check_false(f.extensible); michael@0: do_check_false(fClient.isExtensible); michael@0: michael@0: do_check_false(s.extensible); michael@0: do_check_false(sClient.isExtensible); michael@0: michael@0: do_check_false(ne.extensible); michael@0: do_check_false(neClient.isExtensible); michael@0: michael@0: do_check_true(e.extensible); michael@0: do_check_true(eClient.isExtensible); michael@0: michael@0: gThreadClient.resume(_ => { michael@0: finishClient(gClient); michael@0: }); michael@0: }); michael@0: michael@0: gDebuggee.eval("(" + function () { michael@0: let f = {}; michael@0: Object.freeze(f); michael@0: let s = {}; michael@0: Object.seal(s); michael@0: let ne = {}; michael@0: Object.preventExtensions(ne); michael@0: stopMe(f, s, ne, {}); michael@0: } + "())"); michael@0: } michael@0: