js/xpconnect/tests/unit/test_sandbox_metadata.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:a465d7998552
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 /* See https://bugzilla.mozilla.org/show_bug.cgi?id=898559 */
6
7 function run_test()
8 {
9 let sandbox = Components.utils.Sandbox("http://www.blah.com", {
10 metadata: "test metadata"
11 });
12
13 do_check_eq(Components.utils.getSandboxMetadata(sandbox), "test metadata");
14
15 let sandbox = Components.utils.Sandbox("http://www.blah.com", {
16 metadata: { foopy: { bar: 2 }, baz: "hi" }
17 });
18
19 let metadata = Components.utils.getSandboxMetadata(sandbox);
20 do_check_eq(metadata.baz, "hi");
21 do_check_eq(metadata.foopy.bar, 2);
22 metadata.baz = "foo";
23
24 metadata = Components.utils.getSandboxMetadata(sandbox);
25 do_check_eq(metadata.baz, "foo");
26
27 metadata = { foo: "bar" };
28 Components.utils.setSandboxMetadata(sandbox, metadata);
29 metadata.foo = "baz";
30 metadata = Components.utils.getSandboxMetadata(sandbox);
31 do_check_eq(metadata.foo, "bar");
32
33 let thrown = false;
34 let reflector = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
35 .createInstance(Components.interfaces.nsIXMLHttpRequest);
36
37 try {
38 Components.utils.setSandboxMetadata(sandbox, { foo: reflector });
39 } catch(e) {
40 thrown = true;
41 }
42
43 do_check_eq(thrown, true);
44
45 sandbox = Components.utils.Sandbox(this, {
46 metadata: { foopy: { bar: 2 }, baz: "hi" }
47 });
48
49 let inner = Components.utils.evalInSandbox("Components.utils.Sandbox('http://www.blah.com')", sandbox);
50
51 metadata = Components.utils.getSandboxMetadata(inner);
52 do_check_eq(metadata.baz, "hi");
53 do_check_eq(metadata.foopy.bar, 2);
54 metadata.baz = "foo";
55 }
56

mercurial