test_sandbox_metadata.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. /* See https://bugzilla.mozilla.org/show_bug.cgi?id=898559 */
  5. function run_test()
  6. {
  7. let sandbox = Components.utils.Sandbox("http://www.blah.com", {
  8. metadata: "test metadata",
  9. addonId: "12345"
  10. });
  11. do_check_eq(Components.utils.getSandboxMetadata(sandbox), "test metadata");
  12. do_check_eq(Components.utils.getSandboxAddonId(sandbox), "12345");
  13. sandbox = Components.utils.Sandbox("http://www.blah.com", {
  14. metadata: { foopy: { bar: 2 }, baz: "hi" }
  15. });
  16. let metadata = Components.utils.getSandboxMetadata(sandbox);
  17. do_check_eq(metadata.baz, "hi");
  18. do_check_eq(metadata.foopy.bar, 2);
  19. metadata.baz = "foo";
  20. metadata = Components.utils.getSandboxMetadata(sandbox);
  21. do_check_eq(metadata.baz, "foo");
  22. metadata = { foo: "bar" };
  23. Components.utils.setSandboxMetadata(sandbox, metadata);
  24. metadata.foo = "baz";
  25. metadata = Components.utils.getSandboxMetadata(sandbox);
  26. do_check_eq(metadata.foo, "bar");
  27. let thrown = false;
  28. let reflector = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
  29. .createInstance(Components.interfaces.nsIXMLHttpRequest);
  30. try {
  31. Components.utils.setSandboxMetadata(sandbox, { foo: reflector });
  32. } catch(e) {
  33. thrown = true;
  34. }
  35. do_check_eq(thrown, true);
  36. sandbox = Components.utils.Sandbox(this, {
  37. metadata: { foopy: { bar: 2 }, baz: "hi" }
  38. });
  39. let inner = Components.utils.evalInSandbox("Components.utils.Sandbox('http://www.blah.com')", sandbox);
  40. metadata = Components.utils.getSandboxMetadata(inner);
  41. do_check_eq(metadata.baz, "hi");
  42. do_check_eq(metadata.foopy.bar, 2);
  43. metadata.baz = "foo";
  44. }