Bug 884410 - Handlify the JS_TransplantObject interfaces; r=jonco

--HG--
extra : rebase_source : f1c2adc7380e5806ce6b4fce5bb41f9400b9e1b1
This commit is contained in:
Terrence Cole 2013-06-13 17:09:55 -07:00
parent 892fe681ec
commit 075d331390
7 changed files with 24 additions and 29 deletions

View File

@ -2395,7 +2395,8 @@ nsGlobalWindow::SetNewDocument(nsIDocument* aDocument,
} else {
JS::Rooted<JSObject*> global(cx,
xpc_UnmarkGrayObject(newInnerWindow->mJSObject));
JSObject* outerObject = NewOuterWindowProxy(cx, global, thisChrome);
JS::Rooted<JSObject*> outerObject(cx,
NewOuterWindowProxy(cx, global, thisChrome));
if (!outerObject) {
NS_ERROR("out of memory");
return NS_ERROR_FAILURE;
@ -2403,7 +2404,8 @@ nsGlobalWindow::SetNewDocument(nsIDocument* aDocument,
js::SetProxyExtra(mJSObject, 0, js::PrivateValue(NULL));
outerObject = xpc::TransplantObject(cx, mJSObject, outerObject);
JS::Rooted<JSObject*> obj(cx, mJSObject);
outerObject = xpc::TransplantObject(cx, obj, outerObject);
if (!outerObject) {
NS_ERROR("unable to transplant wrappers, probably OOM");
return NS_ERROR_FAILURE;

View File

@ -1592,8 +1592,8 @@ ReparentWrapper(JSContext* aCx, JS::HandleObject aObjArg)
if (ww != aObj) {
MOZ_ASSERT(cache->HasSystemOnlyWrapper());
JSObject *newwrapper =
xpc::WrapperFactory::WrapSOWObject(aCx, newobj);
JS::RootedObject newwrapper(aCx,
xpc::WrapperFactory::WrapSOWObject(aCx, newobj));
if (!newwrapper) {
MOZ_CRASH();
}

View File

@ -1594,10 +1594,8 @@ JS_WrapId(JSContext *cx, jsid *idp)
*/
JS_PUBLIC_API(JSObject *)
JS_TransplantObject(JSContext *cx, JSObject *origobjArg, JSObject *targetArg)
JS_TransplantObject(JSContext *cx, HandleObject origobj, HandleObject target)
{
RootedObject origobj(cx, origobjArg);
RootedObject target(cx, targetArg);
AssertHeapIsIdle(cx);
JS_ASSERT(origobj != target);
JS_ASSERT(!IsCrossCompartmentWrapper(origobj));
@ -1667,16 +1665,11 @@ JS_TransplantObject(JSContext *cx, JSObject *origobjArg, JSObject *targetArg)
*/
JS_FRIEND_API(JSObject *)
js_TransplantObjectWithWrapper(JSContext *cx,
JSObject *origobjArg,
JSObject *origwrapperArg,
JSObject *targetobjArg,
JSObject *targetwrapperArg)
HandleObject origobj,
HandleObject origwrapper,
HandleObject targetobj,
HandleObject targetwrapper)
{
RootedObject origobj(cx, origobjArg);
RootedObject origwrapper(cx, origwrapperArg);
RootedObject targetobj(cx, targetobjArg);
RootedObject targetwrapper(cx, targetwrapperArg);
AutoMaybeTouchDeadZones agc(cx);
AutoDisableProxyCheck adpc(cx->runtime());

View File

@ -1999,14 +1999,14 @@ extern JS_PUBLIC_API(JSBool)
JS_WrapId(JSContext *cx, jsid *idp);
extern JS_PUBLIC_API(JSObject *)
JS_TransplantObject(JSContext *cx, JSObject *origobj, JSObject *target);
JS_TransplantObject(JSContext *cx, JS::HandleObject origobj, JS::HandleObject target);
extern JS_FRIEND_API(JSObject *)
js_TransplantObjectWithWrapper(JSContext *cx,
JSObject *origobj,
JSObject *origwrapper,
JSObject *targetobj,
JSObject *targetwrapper);
JS::HandleObject origobj,
JS::HandleObject origwrapper,
JS::HandleObject targetobj,
JS::HandleObject targetwrapper);
extern JS_PUBLIC_API(JSBool)
JS_RefreshCrossCompartmentWrappers(JSContext *cx, JSObject *ob);

View File

@ -1464,9 +1464,9 @@ XPCWrappedNative::ReparentWrapperIfFound(XPCWrappedNativeScope* aOldScope,
MOZ_CRASH();
}
JSObject *ww = wrapper->GetWrapper();
RootedObject ww(cx, wrapper->GetWrapper());
if (ww) {
JSObject *newwrapper;
RootedObject newwrapper(cx);
MOZ_ASSERT(wrapper->NeedsSOW(), "weird wrapper wrapper");
newwrapper = xpc::WrapperFactory::WrapSOWObject(cx, newobj);
if (!newwrapper)

View File

@ -40,12 +40,12 @@ class nsIGlobalObject;
namespace xpc {
JSObject *
TransplantObject(JSContext *cx, JSObject *origobj, JSObject *target);
TransplantObject(JSContext *cx, JS::HandleObject origobj, JS::HandleObject target);
JSObject *
TransplantObjectWithWrapper(JSContext *cx,
JSObject *origobj, JSObject *origwrapper,
JSObject *targetobj, JSObject *targetwrapper);
JS::HandleObject origobj, JS::HandleObject origwrapper,
JS::HandleObject targetobj, JS::HandleObject targetwrapper);
// Return a raw XBL scope object corresponding to contentScope, which must
// be an object whose global is a DOM window.

View File

@ -673,7 +673,7 @@ FixWaiverAfterTransplant(JSContext *cx, HandleObject oldWaiver, HandleObject new
}
JSObject *
TransplantObject(JSContext *cx, JSObject *origobj, JSObject *target)
TransplantObject(JSContext *cx, JS::HandleObject origobj, JS::HandleObject target)
{
RootedObject oldWaiver(cx, WrapperFactory::GetXrayWaiver(origobj));
RootedObject newIdentity(cx, JS_TransplantObject(cx, origobj, target));
@ -687,8 +687,8 @@ TransplantObject(JSContext *cx, JSObject *origobj, JSObject *target)
JSObject *
TransplantObjectWithWrapper(JSContext *cx,
JSObject *origobj, JSObject *origwrapper,
JSObject *targetobj, JSObject *targetwrapper)
HandleObject origobj, HandleObject origwrapper,
HandleObject targetobj, HandleObject targetwrapper)
{
RootedObject oldWaiver(cx, WrapperFactory::GetXrayWaiver(origobj));
RootedObject newSameCompartmentWrapper(cx,