NS_IMETHODIMP CacheEntry::SetSecurityInfo(nsISupports *aSecurityInfo) { nsresult rv; NS_ENSURE_SUCCESS(mFileStatus, mFileStatus); { mozilla::MutexAutoLock lock(mLock); mSecurityInfo = aSecurityInfo; mSecurityInfoLoaded = true; } nsCOMPtr<nsISerializable> serializable = do_QueryInterface(aSecurityInfo); if (aSecurityInfo && !serializable) return NS_ERROR_UNEXPECTED; nsCString info; if (serializable) { rv = NS_SerializeToString(serializable, info); NS_ENSURE_SUCCESS(rv, rv); } rv = mFile->SetElement("security-info", info.Length() ? info.get() : nullptr); NS_ENSURE_SUCCESS(rv, rv); return NS_OK; }
void ParamTraits<Principal>::Write(Message* aMsg, const paramType& aParam) { bool isNull = !aParam.mPrincipal; WriteParam(aMsg, isNull); if (isNull) { return; } bool isSerialized = false; nsCString principalString; nsCOMPtr<nsISerializable> serializable = do_QueryInterface(aParam.mPrincipal); if (serializable) { nsresult rv = NS_SerializeToString(serializable, principalString); if (NS_SUCCEEDED(rv)) { isSerialized = true; } } if (!isSerialized) { MOZ_CRASH("Unable to serialize principal."); return; } WriteParam(aMsg, principalString); }
void InternalResponse::SetSecurityInfo(nsISupports* aSecurityInfo) { MOZ_ASSERT(mSecurityInfo.IsEmpty(), "security info should only be set once"); nsCOMPtr<nsISerializable> serializable = do_QueryInterface(aSecurityInfo); if (!serializable) { NS_WARNING("A non-serializable object was passed to InternalResponse::SetSecurityInfo"); return; } NS_SerializeToString(serializable, mSecurityInfo); }
/* void setSecurityInfo (in nsISupports aSecurityInfo); */ NS_IMETHODIMP WyciwygChannelChild::SetSecurityInfo(nsISupports *aSecurityInfo) { mSecurityInfo = aSecurityInfo; if (mSecurityInfo) { nsCOMPtr<nsISerializable> serializable = do_QueryInterface(mSecurityInfo); if (serializable) { nsCString secInfoStr; NS_SerializeToString(serializable, secInfoStr); SendSetSecurityInfo(secInfoStr); } else { NS_WARNING("Can't serialize security info"); } } return NS_OK; }
NS_IMETHODIMP WyciwygChannelParent::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) { LOG(("WyciwygChannelParent::OnStartRequest [this=%x]\n", this)); nsresult rv; nsCOMPtr<nsIWyciwygChannel> chan = do_QueryInterface(aRequest, &rv); NS_ENSURE_SUCCESS(rv, rv); nsresult status; chan->GetStatus(&status); PRInt32 contentLength = -1; chan->GetContentLength(&contentLength); PRInt32 charsetSource = kCharsetUninitialized; nsCAutoString charset; chan->GetCharsetAndSource(&charsetSource, charset); nsCOMPtr<nsISupports> securityInfo; chan->GetSecurityInfo(getter_AddRefs(securityInfo)); nsCString secInfoStr; if (securityInfo) { nsCOMPtr<nsISerializable> serializable = do_QueryInterface(securityInfo); if (serializable) NS_SerializeToString(serializable, secInfoStr); else { NS_ERROR("Can't serialize security info"); return NS_ERROR_UNEXPECTED; } } if (mIPCClosed || !SendOnStartRequest(status, contentLength, charsetSource, charset, secInfoStr)) { return NS_ERROR_UNEXPECTED; } return NS_OK; }
NS_IMETHODIMP HttpChannelParent::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) { LOG(("HttpChannelParent::OnStartRequest [this=%x]\n", this)); nsHttpChannel *chan = static_cast<nsHttpChannel *>(aRequest); nsHttpResponseHead *responseHead = chan->GetResponseHead(); nsHttpRequestHead *requestHead = chan->GetRequestHead(); bool isFromCache = false; chan->IsFromCache(&isFromCache); PRUint32 expirationTime = nsICache::NO_EXPIRATION_TIME; chan->GetCacheTokenExpirationTime(&expirationTime); nsCString cachedCharset; chan->GetCacheTokenCachedCharset(cachedCharset); bool loadedFromApplicationCache; chan->GetLoadedFromApplicationCache(&loadedFromApplicationCache); if (loadedFromApplicationCache) { nsCOMPtr<nsIApplicationCache> appCache; chan->GetApplicationCache(getter_AddRefs(appCache)); nsCString appCacheGroupId; nsCString appCacheClientId; appCache->GetGroupID(appCacheGroupId); appCache->GetClientID(appCacheClientId); if (mIPCClosed || !SendAssociateApplicationCache(appCacheGroupId, appCacheClientId)) { return NS_ERROR_UNEXPECTED; } } nsCOMPtr<nsIEncodedChannel> encodedChannel = do_QueryInterface(aRequest); if (encodedChannel) encodedChannel->SetApplyConversion(PR_FALSE); // Keep the cache entry for future use in RecvSetCacheTokenCachedCharset(). // It could be already released by nsHttpChannel at that time. chan->GetCacheToken(getter_AddRefs(mCacheDescriptor)); nsCString secInfoSerialization; nsCOMPtr<nsISupports> secInfoSupp; chan->GetSecurityInfo(getter_AddRefs(secInfoSupp)); if (secInfoSupp) { mAssociatedContentSecurity = do_QueryInterface(secInfoSupp); nsCOMPtr<nsISerializable> secInfoSer = do_QueryInterface(secInfoSupp); if (secInfoSer) NS_SerializeToString(secInfoSer, secInfoSerialization); } // sync request headers to child, in case they've changed RequestHeaderTuples headers; mHeadersToSyncToChild = &headers; requestHead->Headers().VisitHeaders(this); mHeadersToSyncToChild = 0; nsHttpChannel *httpChan = static_cast<nsHttpChannel *>(mChannel.get()); if (mIPCClosed || !SendOnStartRequest(responseHead ? *responseHead : nsHttpResponseHead(), !!responseHead, headers, isFromCache, mCacheDescriptor ? PR_TRUE : PR_FALSE, expirationTime, cachedCharset, secInfoSerialization, httpChan->GetSelfAddr(), httpChan->GetPeerAddr())) { return NS_ERROR_UNEXPECTED; } return NS_OK; }
NS_IMETHODIMP HttpChannelParent::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) { LOG(("HttpChannelParent::OnStartRequest [this=%x]\n", this)); nsHttpChannel *chan = static_cast<nsHttpChannel *>(aRequest); nsHttpResponseHead *responseHead = chan->GetResponseHead(); nsHttpRequestHead *requestHead = chan->GetRequestHead(); PRBool isFromCache = false; chan->IsFromCache(&isFromCache); PRUint32 expirationTime = nsICache::NO_EXPIRATION_TIME; chan->GetCacheTokenExpirationTime(&expirationTime); nsCString cachedCharset; chan->GetCacheTokenCachedCharset(cachedCharset); PRBool loadedFromApplicationCache; chan->GetLoadedFromApplicationCache(&loadedFromApplicationCache); if (loadedFromApplicationCache) { nsCOMPtr<nsIApplicationCache> appCache; chan->GetApplicationCache(getter_AddRefs(appCache)); nsCString appCacheGroupId; nsCString appCacheClientId; appCache->GetGroupID(appCacheGroupId); appCache->GetClientID(appCacheClientId); if (mIPCClosed || !SendAssociateApplicationCache(appCacheGroupId, appCacheClientId)) { return NS_ERROR_UNEXPECTED; } } nsCOMPtr<nsIEncodedChannel> encodedChannel = do_QueryInterface(aRequest); if (encodedChannel) encodedChannel->SetApplyConversion(PR_FALSE); // Keep the cache entry for future use in RecvSetCacheTokenCachedCharset(). // It could be already released by nsHttpChannel at that time. chan->GetCacheToken(getter_AddRefs(mCacheDescriptor)); nsCString secInfoSerialization; nsCOMPtr<nsISupports> secInfoSupp; chan->GetSecurityInfo(getter_AddRefs(secInfoSupp)); if (secInfoSupp) { nsCOMPtr<nsISerializable> secInfoSer = do_QueryInterface(secInfoSupp); if (secInfoSer) NS_SerializeToString(secInfoSer, secInfoSerialization); } RequestHeaderTuples headers; nsHttpHeaderArray harray = requestHead->Headers(); for (PRUint32 i = 0; i < harray.Count(); i++) { RequestHeaderTuple* tuple = headers.AppendElement(); tuple->mHeader = harray.Headers()[i].header; tuple->mValue = harray.Headers()[i].value; tuple->mMerge = false; } if (mIPCClosed || !SendOnStartRequest(responseHead ? *responseHead : nsHttpResponseHead(), !!responseHead, headers, isFromCache, mCacheDescriptor ? PR_TRUE : PR_FALSE, expirationTime, cachedCharset, secInfoSerialization)) { return NS_ERROR_UNEXPECTED; } return NS_OK; }
NS_IMETHODIMP nsSerializationHelper::SerializeToString(nsISerializable *serializable, nsACString & _retval) { return NS_SerializeToString(serializable, _retval); }