bool ParamTraits<Principal>::Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult) { bool isNull; if (!ReadParam(aMsg, aIter, &isNull)) { return false; } if (isNull) { aResult->mPrincipal = nullptr; return true; } nsCString principalString; if (!ReadParam(aMsg, aIter, &principalString)) { return false; } nsCOMPtr<nsISupports> iSupports; nsresult rv = NS_DeserializeObject(principalString, getter_AddRefs(iSupports)); NS_ENSURE_SUCCESS(rv, false); nsCOMPtr<nsIPrincipal> principal = do_QueryInterface(iSupports); NS_ENSURE_TRUE(principal, false); principal.swap(aResult->mPrincipal); return true; }
NS_IMETHODIMP CacheEntry::GetSecurityInfo(nsISupports * *aSecurityInfo) { { mozilla::MutexAutoLock lock(mLock); if (mSecurityInfoLoaded) { NS_IF_ADDREF(*aSecurityInfo = mSecurityInfo); return NS_OK; } } NS_ENSURE_SUCCESS(mFileStatus, NS_ERROR_NOT_AVAILABLE); nsXPIDLCString info; nsCOMPtr<nsISupports> secInfo; nsresult rv; rv = mFile->GetElement("security-info", getter_Copies(info)); NS_ENSURE_SUCCESS(rv, rv); if (info) { rv = NS_DeserializeObject(info, getter_AddRefs(secInfo)); NS_ENSURE_SUCCESS(rv, rv); } { mozilla::MutexAutoLock lock(mLock); mSecurityInfo.swap(secInfo); mSecurityInfoLoaded = true; NS_IF_ADDREF(*aSecurityInfo = mSecurityInfo); } return NS_OK; }
/** * CreateCacheEntry() * * Creates an nsCacheEntry and sets all fields except for the binding. */ nsCacheEntry * nsDiskCacheEntry::CreateCacheEntry(nsCacheDevice * device) { nsCacheEntry * entry = nsnull; nsresult rv = nsCacheEntry::Create(Key(), nsICache::STREAM_BASED, nsICache::STORE_ON_DISK, device, &entry); if (NS_FAILED(rv) || !entry) return nsnull; entry->SetFetchCount(mFetchCount); entry->SetLastFetched(mLastFetched); entry->SetLastModified(mLastModified); entry->SetExpirationTime(mExpirationTime); entry->SetCacheDevice(device); // XXX why does nsCacheService have to fill out device in BindEntry()? entry->SetDataSize(mDataSize); rv = entry->UnflattenMetaData(MetaData(), mMetaDataSize); if (NS_FAILED(rv)) { delete entry; return nsnull; } // Restore security info, if present const char* info = entry->GetMetaDataElement("security-info"); if (info) { nsCOMPtr<nsISupports> infoObj; NS_DeserializeObject(nsDependentCString(info), getter_AddRefs(infoObj)); entry->SetSecurityInfo(infoObj); } return entry; }
void HttpChannelChild::OnStartRequest(const nsHttpResponseHead& responseHead, const PRBool& useResponseHead, const PRBool& isFromCache, const PRBool& cacheEntryAvailable, const PRUint32& cacheExpirationTime, const nsCString& cachedCharset, const nsCString& securityInfoSerialization) { LOG(("HttpChannelChild::RecvOnStartRequest [this=%x]\n", this)); if (useResponseHead && !mCanceled) mResponseHead = new nsHttpResponseHead(responseHead); if (!securityInfoSerialization.IsEmpty()) { NS_DeserializeObject(securityInfoSerialization, getter_AddRefs(mSecurityInfo)); } mIsFromCache = isFromCache; mCacheEntryAvailable = cacheEntryAvailable; mCacheExpirationTime = cacheExpirationTime; mCachedCharset = cachedCharset; AutoEventEnqueuer ensureSerialDispatch(this); nsresult rv = mListener->OnStartRequest(this, mListenerContext); if (NS_SUCCEEDED(rv)) { if (mResponseHead) SetCookie(mResponseHead->PeekHeader(nsHttp::Set_Cookie)); } else { Cancel(rv); } }
void WyciwygChannelChild::OnStartRequest(const nsresult& statusCode, const PRInt32& contentLength, const PRInt32& source, const nsCString& charset, const nsCString& securityInfo) { LOG(("WyciwygChannelChild::RecvOnStartRequest [this=%x]\n", this)); mState = WCC_ONSTART; mStatus = statusCode; mContentLength = contentLength; mCharsetSource = source; mCharset = charset; if (!securityInfo.IsEmpty()) { NS_DeserializeObject(securityInfo, getter_AddRefs(mSecurityInfo)); } AutoEventEnqueuer ensureSerialDispatch(mEventQ); nsresult rv = mListener->OnStartRequest(this, mListenerContext); if (NS_FAILED(rv)) Cancel(rv); }
bool WyciwygChannelParent::RecvSetSecurityInfo(const nsCString& aSecurityInfo) { if (mChannel) { nsCOMPtr<nsISupports> securityInfo; NS_DeserializeObject(aSecurityInfo, getter_AddRefs(securityInfo)); mChannel->SetSecurityInfo(securityInfo); } return true; }
void HttpChannelChild::OnStartRequest(const nsHttpResponseHead& responseHead, const bool& useResponseHead, const nsHttpHeaderArray& requestHeaders, const bool& isFromCache, const bool& cacheEntryAvailable, const PRUint32& cacheExpirationTime, const nsCString& cachedCharset, const nsCString& securityInfoSerialization, const PRNetAddr& selfAddr, const PRNetAddr& peerAddr) { LOG(("HttpChannelChild::RecvOnStartRequest [this=%x]\n", this)); if (useResponseHead && !mCanceled) mResponseHead = new nsHttpResponseHead(responseHead); if (!securityInfoSerialization.IsEmpty()) { NS_DeserializeObject(securityInfoSerialization, getter_AddRefs(mSecurityInfo)); } mIsFromCache = isFromCache; mCacheEntryAvailable = cacheEntryAvailable; mCacheExpirationTime = cacheExpirationTime; mCachedCharset = cachedCharset; AutoEventEnqueuer ensureSerialDispatch(mEventQ); // replace our request headers with what actually got sent in the parent mRequestHead.Headers() = requestHeaders; // notify "http-on-examine-response" observers gHttpHandler->OnExamineResponse(this); mTracingEnabled = false; nsresult rv = mListener->OnStartRequest(this, mListenerContext); if (NS_FAILED(rv)) { Cancel(rv); return; } if (mResponseHead) SetCookie(mResponseHead->PeekHeader(nsHttp::Set_Cookie)); rv = ApplyContentConversions(); if (NS_FAILED(rv)) Cancel(rv); mSelfAddr = selfAddr; mPeerAddr = peerAddr; }
void HttpChannelChild::OnStartRequest(const nsHttpResponseHead& responseHead, const PRBool& useResponseHead, const RequestHeaderTuples& requestHeaders, const PRBool& isFromCache, const PRBool& cacheEntryAvailable, const PRUint32& cacheExpirationTime, const nsCString& cachedCharset, const nsCString& securityInfoSerialization, const PRNetAddr& selfAddr, const PRNetAddr& peerAddr) { LOG(("HttpChannelChild::RecvOnStartRequest [this=%x]\n", this)); if (useResponseHead && !mCanceled) mResponseHead = new nsHttpResponseHead(responseHead); if (!securityInfoSerialization.IsEmpty()) { NS_DeserializeObject(securityInfoSerialization, getter_AddRefs(mSecurityInfo)); } mIsFromCache = isFromCache; mCacheEntryAvailable = cacheEntryAvailable; mCacheExpirationTime = cacheExpirationTime; mCachedCharset = cachedCharset; AutoEventEnqueuer ensureSerialDispatch(this); // replace our request headers with what actually got sent in the parent mRequestHead.ClearHeaders(); for (PRUint32 i = 0; i < requestHeaders.Length(); i++) { mRequestHead.Headers().SetHeader(nsHttp::ResolveAtom(requestHeaders[i].mHeader), requestHeaders[i].mValue); } nsresult rv = mListener->OnStartRequest(this, mListenerContext); if (NS_FAILED(rv)) { Cancel(rv); return; } if (mResponseHead) SetCookie(mResponseHead->PeekHeader(nsHttp::Set_Cookie)); rv = ApplyContentConversions(); if (NS_FAILED(rv)) Cancel(rv); mSelfAddr = selfAddr; mPeerAddr = peerAddr; }
NS_IMETHODIMP nsSerializationHelper::DeserializeObject(const nsACString & input, nsISupports **_retval) { return NS_DeserializeObject(input, _retval); }