зеркало из https://github.com/mozilla/gecko-dev.git
Bug 775861 - e10s: propagate appId and isInBrowserElement from child to parent process r=jdm
This commit is contained in:
Родитель
7f7428d402
Коммит
9a9096c83f
|
@ -164,6 +164,8 @@ FTPChannelChild::AsyncOpen(::nsIStreamListener* listener, nsISupports* aContext)
|
|||
bool haveLoadContext = false;
|
||||
bool isContent = false;
|
||||
bool usePrivateBrowsing = false;
|
||||
bool isInBrowserElement = false;
|
||||
PRUint32 appId = 0;
|
||||
nsCOMPtr<nsILoadContext> loadContext;
|
||||
NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup,
|
||||
NS_GET_IID(nsILoadContext),
|
||||
|
@ -172,11 +174,13 @@ FTPChannelChild::AsyncOpen(::nsIStreamListener* listener, nsISupports* aContext)
|
|||
haveLoadContext = true;
|
||||
loadContext->GetIsContent(&isContent);
|
||||
loadContext->GetUsePrivateBrowsing(&usePrivateBrowsing);
|
||||
loadContext->GetIsInBrowserElement(&isInBrowserElement);
|
||||
loadContext->GetAppId(&appId);
|
||||
}
|
||||
|
||||
SendAsyncOpen(nsBaseChannel::URI(), mStartPos, mEntityID,
|
||||
IPC::InputStream(mUploadStream), haveLoadContext, isContent,
|
||||
usePrivateBrowsing);
|
||||
IPC::InputStream(mUploadStream), haveLoadContext, isContent,
|
||||
usePrivateBrowsing, isInBrowserElement, appId);
|
||||
|
||||
// The socket transport layer in the chrome process now has a logical ref to
|
||||
// us until OnStopRequest is called.
|
||||
|
|
|
@ -23,6 +23,8 @@ FTPChannelParent::FTPChannelParent()
|
|||
, mHaveLoadContext(false)
|
||||
, mIsContent(false)
|
||||
, mUsePrivateBrowsing(false)
|
||||
, mIsInBrowserElement(false)
|
||||
, mAppId(0)
|
||||
{
|
||||
nsIProtocolHandler* handler;
|
||||
CallGetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "ftp", &handler);
|
||||
|
@ -64,7 +66,9 @@ FTPChannelParent::RecvAsyncOpen(const IPC::URI& aURI,
|
|||
const IPC::InputStream& aUploadStream,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& usePrivateBrowsing)
|
||||
const bool& usePrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId)
|
||||
{
|
||||
nsCOMPtr<nsIURI> uri(aURI);
|
||||
|
||||
|
@ -103,6 +107,8 @@ FTPChannelParent::RecvAsyncOpen(const IPC::URI& aURI,
|
|||
mHaveLoadContext = haveLoadContext;
|
||||
mIsContent = isContent;
|
||||
mUsePrivateBrowsing = usePrivateBrowsing;
|
||||
mIsInBrowserElement = isInBrowserElement;
|
||||
mAppId = appId;
|
||||
mChannel->SetNotificationCallbacks(this);
|
||||
|
||||
rv = mChannel->AsyncOpen(this, nsnull);
|
||||
|
@ -297,6 +303,23 @@ FTPChannelParent::SetUsePrivateBrowsing(bool aUsePrivateBrowsing)
|
|||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FTPChannelParent::GetIsInBrowserElement(bool* aIsInBrowserElement)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsInBrowserElement);
|
||||
|
||||
*aIsInBrowserElement = mIsInBrowserElement;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
FTPChannelParent::GetAppId(PRUint32* aAppId)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAppId);
|
||||
|
||||
*aAppId = mAppId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -42,7 +42,9 @@ protected:
|
|||
const IPC::InputStream& uploadStream,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& aUsePrivateBrowsing);
|
||||
const bool& usingPrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId);
|
||||
NS_OVERRIDE virtual bool RecvConnectChannel(const PRUint32& channelId);
|
||||
NS_OVERRIDE virtual bool RecvCancel(const nsresult& status);
|
||||
NS_OVERRIDE virtual bool RecvSuspend();
|
||||
|
@ -58,6 +60,9 @@ protected:
|
|||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mIsInBrowserElement : 1;
|
||||
|
||||
PRUint32 mAppId;
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
|
|
|
@ -29,7 +29,9 @@ parent:
|
|||
InputStream uploadStream,
|
||||
bool haveLoadContext,
|
||||
bool isContent,
|
||||
bool usePrivateBrowsing);
|
||||
bool usePrivateBrowsing,
|
||||
bool isInBrowserElement,
|
||||
PRUint32 appID);
|
||||
ConnectChannel(PRUint32 channelId);
|
||||
Cancel(nsresult status);
|
||||
Suspend();
|
||||
|
|
|
@ -1019,12 +1019,16 @@ HttpChannelChild::AsyncOpen(nsIStreamListener *listener, nsISupports *aContext)
|
|||
bool haveLoadContext = false;
|
||||
bool isContent = false;
|
||||
bool usePrivateBrowsing = false;
|
||||
bool isInBrowserElement = false;
|
||||
PRUint32 appId = 0;
|
||||
nsCOMPtr<nsILoadContext> loadContext;
|
||||
GetCallback(loadContext);
|
||||
if (loadContext) {
|
||||
haveLoadContext = true;
|
||||
loadContext->GetIsContent(&isContent);
|
||||
loadContext->GetUsePrivateBrowsing(&usePrivateBrowsing);
|
||||
loadContext->GetIsInBrowserElement(&isInBrowserElement);
|
||||
loadContext->GetAppId(&appId);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1054,7 +1058,7 @@ HttpChannelChild::AsyncOpen(nsIStreamListener *listener, nsISupports *aContext)
|
|||
mForceAllowThirdPartyCookie, mSendResumeAt,
|
||||
mStartPos, mEntityID, mChooseApplicationCache,
|
||||
appCacheClientId, mAllowSpdy, haveLoadContext, isContent,
|
||||
usePrivateBrowsing);
|
||||
usePrivateBrowsing, isInBrowserElement, appId);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -38,6 +38,8 @@ HttpChannelParent::HttpChannelParent(PBrowserParent* iframeEmbedding)
|
|||
, mHaveLoadContext(false)
|
||||
, mIsContent(false)
|
||||
, mUsePrivateBrowsing(false)
|
||||
, mIsInBrowserElement(false)
|
||||
, mAppId(0)
|
||||
{
|
||||
// Ensure gHttpHandler is initialized: we need the atom table up and running.
|
||||
nsIHttpProtocolHandler* handler;
|
||||
|
@ -123,7 +125,9 @@ HttpChannelParent::RecvAsyncOpen(const IPC::URI& aURI,
|
|||
const bool& allowSpdy,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& usePrivateBrowsing)
|
||||
const bool& usePrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId)
|
||||
{
|
||||
nsCOMPtr<nsIURI> uri(aURI);
|
||||
nsCOMPtr<nsIURI> originalUri(aOriginalURI);
|
||||
|
@ -149,6 +153,8 @@ HttpChannelParent::RecvAsyncOpen(const IPC::URI& aURI,
|
|||
mHaveLoadContext = haveLoadContext;
|
||||
mIsContent = isContent;
|
||||
mUsePrivateBrowsing = usePrivateBrowsing;
|
||||
mIsInBrowserElement = isInBrowserElement;
|
||||
mAppId = appId;
|
||||
|
||||
nsHttpChannel *httpChan = static_cast<nsHttpChannel *>(mChannel.get());
|
||||
|
||||
|
@ -650,5 +656,22 @@ HttpChannelParent::SetUsePrivateBrowsing(bool aUsePrivateBrowsing)
|
|||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
HttpChannelParent::GetIsInBrowserElement(bool* aIsInBrowserElement)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsInBrowserElement);
|
||||
|
||||
*aIsInBrowserElement = mIsInBrowserElement;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
HttpChannelParent::GetAppId(PRUint32* aAppId)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAppId);
|
||||
|
||||
*aAppId = mAppId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
}} // mozilla::net
|
||||
|
|
|
@ -68,7 +68,9 @@ protected:
|
|||
const bool& allowSpdy,
|
||||
const bool & haveLoadContext,
|
||||
const bool & isContent,
|
||||
const bool& usingPrivateBrowsing);
|
||||
const bool& usingPrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId);
|
||||
|
||||
virtual bool RecvConnectChannel(const PRUint32& channelId);
|
||||
virtual bool RecvSetPriority(const PRUint16& priority);
|
||||
|
@ -108,14 +110,17 @@ private:
|
|||
PRUint64 mStoredProgress;
|
||||
PRUint64 mStoredProgressMax;
|
||||
|
||||
bool mSentRedirect1Begin : 1;
|
||||
bool mSentRedirect1BeginFailed : 1;
|
||||
bool mReceivedRedirect2Verify : 1;
|
||||
bool mSentRedirect1Begin : 1;
|
||||
bool mSentRedirect1BeginFailed : 1;
|
||||
bool mReceivedRedirect2Verify : 1;
|
||||
|
||||
// fields for impersonating nsILoadContext
|
||||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mIsInBrowserElement : 1;
|
||||
|
||||
PRUint32 mAppId;
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
|
|
|
@ -54,7 +54,9 @@ parent:
|
|||
// it in HttpChannelParent too
|
||||
bool haveLoadContext,
|
||||
bool isContent,
|
||||
bool usePrivateBrowsing);
|
||||
bool usePrivateBrowsing,
|
||||
bool isInBrowserElement,
|
||||
PRUint32 appID);
|
||||
|
||||
// Used to connect redirected-to channel on the parent with redirected-to
|
||||
// channel on the child.
|
||||
|
|
|
@ -28,7 +28,9 @@ parent:
|
|||
bool aSecure,
|
||||
bool haveLoadContext,
|
||||
bool isContent,
|
||||
bool usingPrivateBrowsing);
|
||||
bool usePrivateBrowsing,
|
||||
bool isInBrowserElement,
|
||||
PRUint32 appID);
|
||||
Close(PRUint16 code, nsCString reason);
|
||||
SendMsg(nsCString aMsg);
|
||||
SendBinaryMsg(nsCString aMsg);
|
||||
|
|
|
@ -332,6 +332,8 @@ WebSocketChannelChild::AsyncOpen(nsIURI *aURI,
|
|||
bool haveLoadContext = false;
|
||||
bool isContent = false;
|
||||
bool usePrivateBrowsing = false;
|
||||
bool isInBrowserElement = false;
|
||||
PRUint32 appId = 0;
|
||||
nsCOMPtr<nsILoadContext> loadContext;
|
||||
NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup,
|
||||
NS_GET_IID(nsILoadContext),
|
||||
|
@ -340,6 +342,8 @@ WebSocketChannelChild::AsyncOpen(nsIURI *aURI,
|
|||
haveLoadContext = true;
|
||||
loadContext->GetIsContent(&isContent);
|
||||
loadContext->GetUsePrivateBrowsing(&usePrivateBrowsing);
|
||||
loadContext->GetIsInBrowserElement(&isInBrowserElement);
|
||||
loadContext->GetAppId(&appId);
|
||||
}
|
||||
|
||||
// Corresponding release in DeallocPWebSocket
|
||||
|
@ -347,7 +351,8 @@ WebSocketChannelChild::AsyncOpen(nsIURI *aURI,
|
|||
|
||||
gNeckoChild->SendPWebSocketConstructor(this, tabChild);
|
||||
if (!SendAsyncOpen(aURI, nsCString(aOrigin), mProtocol, mEncrypted,
|
||||
haveLoadContext, isContent, usePrivateBrowsing))
|
||||
haveLoadContext, isContent, usePrivateBrowsing,
|
||||
isInBrowserElement, appId))
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
|
||||
mOriginalURI = aURI;
|
||||
|
|
|
@ -22,6 +22,8 @@ WebSocketChannelParent::WebSocketChannelParent(nsIAuthPromptProvider* aAuthProvi
|
|||
, mHaveLoadContext(false)
|
||||
, mIsContent(false)
|
||||
, mUsePrivateBrowsing(false)
|
||||
, mIsInBrowserElement(false)
|
||||
, mAppId(0)
|
||||
{
|
||||
#if defined(PR_LOGGING)
|
||||
if (!webSocketLog)
|
||||
|
@ -49,7 +51,9 @@ WebSocketChannelParent::RecvAsyncOpen(const IPC::URI& aURI,
|
|||
const bool& aSecure,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& usePrivateBrowsing)
|
||||
const bool& usePrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId)
|
||||
{
|
||||
LOG(("WebSocketChannelParent::RecvAsyncOpen() %p\n", this));
|
||||
nsresult rv;
|
||||
|
@ -67,6 +71,8 @@ WebSocketChannelParent::RecvAsyncOpen(const IPC::URI& aURI,
|
|||
mHaveLoadContext = haveLoadContext;
|
||||
mIsContent = isContent;
|
||||
mUsePrivateBrowsing = usePrivateBrowsing;
|
||||
mIsInBrowserElement = isInBrowserElement;
|
||||
mAppId = appId;
|
||||
rv = mChannel->SetNotificationCallbacks(this);
|
||||
if (NS_FAILED(rv))
|
||||
goto fail;
|
||||
|
@ -278,6 +284,24 @@ WebSocketChannelParent::SetUsePrivateBrowsing(bool aUsePrivateBrowsing)
|
|||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebSocketChannelParent::GetIsInBrowserElement(bool* aIsInBrowserElement)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsInBrowserElement);
|
||||
|
||||
*aIsInBrowserElement = mIsInBrowserElement;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebSocketChannelParent::GetAppId(PRUint32* aAppId)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAppId);
|
||||
|
||||
*aAppId = mAppId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
} // namespace net
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -39,7 +39,9 @@ class WebSocketChannelParent : public PWebSocketParent,
|
|||
const bool& aSecure,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& usingPrivateBrowsing);
|
||||
const bool& usingPrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId);
|
||||
bool RecvClose(const PRUint16 & code, const nsCString & reason);
|
||||
bool RecvSendMsg(const nsCString& aMsg);
|
||||
bool RecvSendBinaryMsg(const nsCString& aMsg);
|
||||
|
@ -54,9 +56,12 @@ class WebSocketChannelParent : public PWebSocketParent,
|
|||
bool mIPCOpen;
|
||||
|
||||
// fields for impersonating nsILoadContext
|
||||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mIsInBrowserElement : 1;
|
||||
|
||||
PRUint32 mAppId;
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
|
|
|
@ -24,7 +24,9 @@ parent:
|
|||
PRUint32 loadFlags,
|
||||
bool haveLoadContext,
|
||||
bool isContent,
|
||||
bool usingPrivateBrowsing);
|
||||
bool usePrivateBrowsing,
|
||||
bool isInBrowserElement,
|
||||
PRUint32 appID);
|
||||
|
||||
// methods corresponding to those of nsIWyciwygChannel
|
||||
WriteToCacheEntry(nsString data);
|
||||
|
|
|
@ -566,6 +566,8 @@ WyciwygChannelChild::AsyncOpen(nsIStreamListener *aListener, nsISupports *aConte
|
|||
bool haveLoadContext = false;
|
||||
bool isContent = false;
|
||||
bool usePrivateBrowsing = false;
|
||||
bool isInBrowserElement = false;
|
||||
PRUint32 appId = 0;
|
||||
nsCOMPtr<nsILoadContext> loadContext;
|
||||
NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup,
|
||||
NS_GET_IID(nsILoadContext),
|
||||
|
@ -574,10 +576,12 @@ WyciwygChannelChild::AsyncOpen(nsIStreamListener *aListener, nsISupports *aConte
|
|||
haveLoadContext = true;
|
||||
loadContext->GetIsContent(&isContent);
|
||||
loadContext->GetUsePrivateBrowsing(&usePrivateBrowsing);
|
||||
loadContext->GetIsInBrowserElement(&isInBrowserElement);
|
||||
loadContext->GetAppId(&appId);
|
||||
}
|
||||
|
||||
SendAsyncOpen(IPC::URI(mOriginalURI), mLoadFlags, haveLoadContext, isContent,
|
||||
usePrivateBrowsing);
|
||||
usePrivateBrowsing, isInBrowserElement, appId);
|
||||
|
||||
mState = WCC_OPENED;
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ WyciwygChannelParent::WyciwygChannelParent()
|
|||
, mHaveLoadContext(false)
|
||||
, mIsContent(false)
|
||||
, mUsePrivateBrowsing(false)
|
||||
, mIsInBrowserElement(false)
|
||||
, mAppId(0)
|
||||
{
|
||||
#if defined(PR_LOGGING)
|
||||
if (!gWyciwygLog)
|
||||
|
@ -86,7 +88,9 @@ WyciwygChannelParent::RecvAsyncOpen(const IPC::URI& aOriginal,
|
|||
const PRUint32& aLoadFlags,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& usePrivateBrowsing)
|
||||
const bool& usePrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId)
|
||||
{
|
||||
nsCOMPtr<nsIURI> original(aOriginal);
|
||||
|
||||
|
@ -109,6 +113,8 @@ WyciwygChannelParent::RecvAsyncOpen(const IPC::URI& aOriginal,
|
|||
mHaveLoadContext = haveLoadContext;
|
||||
mIsContent = isContent;
|
||||
mUsePrivateBrowsing = usePrivateBrowsing;
|
||||
mIsInBrowserElement = isInBrowserElement;
|
||||
mAppId = appId;
|
||||
mChannel->SetNotificationCallbacks(this);
|
||||
|
||||
rv = mChannel->AsyncOpen(this, nsnull);
|
||||
|
@ -316,5 +322,22 @@ WyciwygChannelParent::SetUsePrivateBrowsing(bool aUsePrivateBrowsing)
|
|||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WyciwygChannelParent::GetIsInBrowserElement(bool* aIsInBrowserElement)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsInBrowserElement);
|
||||
|
||||
*aIsInBrowserElement = mIsInBrowserElement;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WyciwygChannelParent::GetAppId(PRUint32* aAppId)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAppId);
|
||||
|
||||
*aAppId = mAppId;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
}} // mozilla::net
|
||||
|
|
|
@ -37,7 +37,9 @@ protected:
|
|||
const PRUint32& loadFlags,
|
||||
const bool& haveLoadContext,
|
||||
const bool& isContent,
|
||||
const bool& usingPrivateBrowsing);
|
||||
const bool& usingPrivateBrowsing,
|
||||
const bool& isInBrowserElement,
|
||||
const PRUint32& appId);
|
||||
virtual bool RecvWriteToCacheEntry(const nsString& data);
|
||||
virtual bool RecvCloseCacheEntry(const nsresult& reason);
|
||||
virtual bool RecvSetCharsetAndSource(const PRInt32& source,
|
||||
|
@ -51,9 +53,12 @@ protected:
|
|||
bool mIPCClosed;
|
||||
|
||||
// fields for impersonating nsILoadContext
|
||||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mHaveLoadContext : 1;
|
||||
bool mIsContent : 1;
|
||||
bool mUsePrivateBrowsing : 1;
|
||||
bool mIsInBrowserElement : 1;
|
||||
|
||||
PRUint32 mAppId;
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
|
|
Загрузка…
Ссылка в новой задаче