Bug 967023, part 2 - Get rid of XPCWrappedJSClass::GetNewOrUsed out param. r=bholley

This commit is contained in:
Andrew McCreight 2014-02-11 14:56:46 -08:00
parent 283ef4893d
commit 5313ee591a
4 changed files with 17 additions and 24 deletions

View File

@ -334,8 +334,7 @@ nsXPCWrappedJS::GetNewOrUsed(JS::HandleObject jsObj,
return NS_ERROR_FAILURE;
}
nsRefPtr<nsXPCWrappedJSClass> clasp;
nsXPCWrappedJSClass::GetNewOrUsed(cx, aIID, getter_AddRefs(clasp));
nsRefPtr<nsXPCWrappedJSClass> clasp = nsXPCWrappedJSClass::GetNewOrUsed(cx, aIID);
if (!clasp)
return NS_ERROR_FAILURE;
@ -355,9 +354,7 @@ nsXPCWrappedJS::GetNewOrUsed(JS::HandleObject jsObj,
// Make a new root wrapper, because there is no existing
// root wrapper, and the wrapper we are trying to make isn't
// a root.
nsRefPtr<nsXPCWrappedJSClass> rootClasp;
nsXPCWrappedJSClass::GetNewOrUsed(cx, NS_GET_IID(nsISupports),
getter_AddRefs(rootClasp));
nsRefPtr<nsXPCWrappedJSClass> rootClasp = nsXPCWrappedJSClass::GetNewOrUsed(cx, NS_GET_IID(nsISupports));
if (!rootClasp)
return NS_ERROR_FAILURE;

View File

@ -99,9 +99,8 @@ bool xpc_IsReportableErrorCode(nsresult code)
}
// static
nsresult
nsXPCWrappedJSClass::GetNewOrUsed(JSContext* cx, REFNSIID aIID,
nsXPCWrappedJSClass** resultClasp)
already_AddRefed<nsXPCWrappedJSClass>
nsXPCWrappedJSClass::GetNewOrUsed(JSContext* cx, REFNSIID aIID)
{
XPCJSRuntime* rt = nsXPConnect::GetRuntimeInstance();
IID2WrappedJSClassMap* map = rt->GetWrappedJSClassMap();
@ -122,8 +121,7 @@ nsXPCWrappedJSClass::GetNewOrUsed(JSContext* cx, REFNSIID aIID,
}
}
}
clasp.forget(resultClasp);
return NS_OK;
return clasp.forget();
}
nsXPCWrappedJSClass::nsXPCWrappedJSClass(JSContext* cx, REFNSIID aIID,

View File

@ -1525,17 +1525,16 @@ XPCWrappedNative::InitTearOff(XPCWrappedNativeTearOff* aTearOff,
// when asked for nsIPropertyBag. It need not actually *implement*
// nsIPropertyBag - xpconnect will do that work.
nsXPCWrappedJSClass* clasp;
if (iid->Equals(NS_GET_IID(nsIPropertyBag)) && jso &&
NS_SUCCEEDED(nsXPCWrappedJSClass::GetNewOrUsed(cx,*iid,&clasp))&&
clasp) {
RootedObject answer(cx,
clasp->CallQueryInterfaceOnJSObject(cx, jso, *iid));
NS_RELEASE(clasp);
if (!answer) {
NS_RELEASE(obj);
aTearOff->SetInterface(nullptr);
return NS_ERROR_NO_INTERFACE;
if (iid->Equals(NS_GET_IID(nsIPropertyBag)) && jso) {
nsRefPtr<nsXPCWrappedJSClass> clasp = nsXPCWrappedJSClass::GetNewOrUsed(cx, *iid);
if (clasp) {
RootedObject answer(cx, clasp->CallQueryInterfaceOnJSObject(cx, jso, *iid));
if (!answer) {
NS_RELEASE(obj);
aTearOff->SetInterface(nullptr);
return NS_ERROR_NO_INTERFACE;
}
}
}
}

View File

@ -2300,10 +2300,9 @@ class nsXPCWrappedJSClass : public nsIXPCWrappedJSClass
NS_IMETHOD DebugDump(int16_t depth);
public:
static nsresult
static already_AddRefed<nsXPCWrappedJSClass>
GetNewOrUsed(JSContext* cx,
REFNSIID aIID,
nsXPCWrappedJSClass** clazz);
REFNSIID aIID);
REFNSIID GetIID() const {return mIID;}
XPCJSRuntime* GetRuntime() const {return mRuntime;}