|
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 |