From 98fb58a90f392aff5ccb4e113e6754cb90540269 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 10 Feb 2016 23:31:33 -0500 Subject: [PATCH] Bug 1241349 part 5. Start using binding_detail::UnprivilegedJunkScopeOrWorkerGlobal in dictionary ToJSON conversions. r=bholley --- dom/bindings/Codegen.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py index bd531c961486..1905377bcdb9 100644 --- a/dom/bindings/Codegen.py +++ b/dom/bindings/Codegen.py @@ -12257,11 +12257,15 @@ class CGDictionary(CGThing): "ToJSON", "bool", [Argument('nsAString&', 'aJSON')], body=dedent(""" - MOZ_ASSERT(NS_IsMainThread()); AutoJSAPI jsapi; jsapi.Init(); JSContext *cx = jsapi.cx(); - JSAutoCompartment ac(cx, xpc::UnprivilegedJunkScope()); // Usage approved by bholley + // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here + // because we'll only be creating objects, in ways that have no + // side-effects, followed by a call to JS::ToJSONMaybeSafely, + // which likewise guarantees no side-effects for the sorts of + // things we will pass it. + JSAutoCompartment ac(cx, binding_detail::UnprivilegedJunkScopeOrWorkerGlobal()); JS::Rooted val(cx); if (!ToObjectInternal(cx, &val)) { return false; @@ -13242,7 +13246,6 @@ class CGBindingRoot(CGThing): bindingHeaders["WrapperFactory.h"] = descriptors bindingHeaders["mozilla/dom/DOMJSClass.h"] = descriptors bindingHeaders["mozilla/dom/ScriptSettings.h"] = dictionaries # AutoJSAPI - bindingHeaders["xpcpublic.h"] = dictionaries # xpc::UnprivilegedJunkScope # Ensure we see our enums in the generated .cpp file, for the ToJSValue # method body. Also ensure that we see jsapi.h. if enums: