michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* See https://bugzilla.mozilla.org/show_bug.cgi?id=898559 */ michael@0: michael@0: function run_test() michael@0: { michael@0: let sandbox = Components.utils.Sandbox("http://www.blah.com", { michael@0: metadata: "test metadata" michael@0: }); michael@0: michael@0: do_check_eq(Components.utils.getSandboxMetadata(sandbox), "test metadata"); michael@0: michael@0: let sandbox = Components.utils.Sandbox("http://www.blah.com", { michael@0: metadata: { foopy: { bar: 2 }, baz: "hi" } michael@0: }); michael@0: michael@0: let metadata = Components.utils.getSandboxMetadata(sandbox); michael@0: do_check_eq(metadata.baz, "hi"); michael@0: do_check_eq(metadata.foopy.bar, 2); michael@0: metadata.baz = "foo"; michael@0: michael@0: metadata = Components.utils.getSandboxMetadata(sandbox); michael@0: do_check_eq(metadata.baz, "foo"); michael@0: michael@0: metadata = { foo: "bar" }; michael@0: Components.utils.setSandboxMetadata(sandbox, metadata); michael@0: metadata.foo = "baz"; michael@0: metadata = Components.utils.getSandboxMetadata(sandbox); michael@0: do_check_eq(metadata.foo, "bar"); michael@0: michael@0: let thrown = false; michael@0: let reflector = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] michael@0: .createInstance(Components.interfaces.nsIXMLHttpRequest); michael@0: michael@0: try { michael@0: Components.utils.setSandboxMetadata(sandbox, { foo: reflector }); michael@0: } catch(e) { michael@0: thrown = true; michael@0: } michael@0: michael@0: do_check_eq(thrown, true); michael@0: michael@0: sandbox = Components.utils.Sandbox(this, { michael@0: metadata: { foopy: { bar: 2 }, baz: "hi" } michael@0: }); michael@0: michael@0: let inner = Components.utils.evalInSandbox("Components.utils.Sandbox('http://www.blah.com')", sandbox); michael@0: michael@0: metadata = Components.utils.getSandboxMetadata(inner); michael@0: do_check_eq(metadata.baz, "hi"); michael@0: do_check_eq(metadata.foopy.bar, 2); michael@0: metadata.baz = "foo"; michael@0: } michael@0: