nsXPCWrappedJS::nsXPCWrappedJS(XPCCallContext& ccx, JSObject* aJSObj, nsXPCWrappedJSClass* aClass, nsXPCWrappedJS* root, nsISupports* aOuter) : mJSObj(aJSObj), mClass(aClass), mRoot(root ? root : this), mNext(nsnull), mOuter(root ? nsnull : aOuter), mMainThread(NS_IsMainThread()), mMainThreadOnly(root && root->mMainThreadOnly) { #ifdef DEBUG_stats_jband static int count = 0; static const int interval = 10; if (0 == (++count % interval)) printf("//////// %d instances of nsXPCWrappedJS created\n", count); #endif JS_ASSERT_IF(mMainThreadOnly, mMainThread); InitStub(GetClass()->GetIID()); // intentionally do double addref - see Release(). NS_ADDREF_THIS(); NS_ADDREF_THIS(); NS_ADDREF(aClass); NS_IF_ADDREF(mOuter); if (mRoot != this) NS_ADDREF(mRoot); }
nsJavaXPTCStub::nsJavaXPTCStub(jobject aJavaObject, nsIInterfaceInfo *aIInfo, nsresult *rv) : mJavaStrongRef(nsnull) , mIInfo(aIInfo) , mMaster(nsnull) , mWeakRefCnt(0) { const nsIID *iid = nsnull; aIInfo->GetIIDShared(&iid); NS_ASSERTION(iid, "GetIIDShared must not fail!"); *rv = InitStub(*iid); if (NS_FAILED(*rv)) return; JNIEnv* env = GetJNIEnv(); jobject weakref = env->NewObject(weakReferenceClass, weakReferenceConstructorMID, aJavaObject); mJavaWeakRef = env->NewGlobalRef(weakref); mJavaRefHashCode = env->CallStaticIntMethod(systemClass, hashCodeMID, aJavaObject); #ifdef DEBUG_JAVAXPCOM char* iid_str = iid->ToString(); LOG(("+ nsJavaXPTCStub (Java=%08x | XPCOM=%08x | IID=%s)\n", (PRUint32) mJavaRefHashCode, (PRUint32) this, iid_str)); PR_Free(iid_str); #endif }
nsXTFWeakTearoff::nsXTFWeakTearoff(const nsIID& iid, nsISupports* obj, nsresult *rv) : mObj(obj), mIID(iid) { MOZ_COUNT_CTOR(nsXTFWeakTearoff); *rv = InitStub(iid); }
nsresult WSPPropertyBagWrapper::Init(nsIPropertyBag* aPropertyBag, nsIInterfaceInfo* aInterfaceInfo) { mPropertyBag = aPropertyBag; mInterfaceInfo = aInterfaceInfo; mInterfaceInfo->GetIIDShared(&mIID); nsresult rv = InitStub(*mIID); return rv; }
NS_IMETHODIMP WSPProxy::Init(nsIWSDLPort* aPort, nsIInterfaceInfo* aPrimaryInterface, nsIInterfaceInfoManager* aInterfaceInfoManager, const nsAString& aQualifier, PRBool aIsAsync) { NS_ENSURE_ARG(aPort); NS_ENSURE_ARG(aPrimaryInterface); mPort = aPort; mPrimaryInterface = aPrimaryInterface; mInterfaceInfoManager = aInterfaceInfoManager; mPrimaryInterface->GetIIDShared(&mIID); mQualifier.Assign(aQualifier); mIsAsync = aIsAsync; nsresult rv; rv = InitStub(*mIID); if (NS_FAILED(rv)) return rv; mInterfaces = do_CreateInstance(NS_SCRIPTABLE_INTERFACES_CONTRACTID, &rv); if (!mInterfaces) { return rv; } rv = mInterfaces->SetManager(mInterfaceInfoManager); if (NS_FAILED(rv)) { return rv; } if (mIsAsync) { // Get the completion method info const nsXPTMethodInfo* listenerGetter; rv = mPrimaryInterface->GetMethodInfo(3, &listenerGetter); if (NS_FAILED(rv)) { return NS_ERROR_FAILURE; } const nsXPTParamInfo& listenerParam = listenerGetter->GetParam(0); const nsXPTType& type = listenerParam.GetType(); if (!type.IsInterfacePointer()) { return NS_ERROR_FAILURE; } rv = mPrimaryInterface->GetInfoForParam(3, &listenerParam, getter_AddRefs(mListenerInterfaceInfo)); if (NS_FAILED(rv)) { return rv; } } return NS_OK; }