mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 22:35:43 +00:00
Bug 1291652 - Part 2: Make sure that we fetch originAttributes from the nsIloadInfo, but not from the nsIloadContext. r=mayhemer
--HG-- extra : rebase_source : 54ec153c713fe7262a793eb8d3cb53bd43075776
This commit is contained in:
parent
f31ae627b1
commit
a6320a5184
@ -1266,17 +1266,14 @@ NS_GetAppInfo(nsIChannel *aChannel,
|
||||
uint32_t *aAppID,
|
||||
bool *aIsInIsolatedMozBrowserElement)
|
||||
{
|
||||
nsCOMPtr<nsILoadContext> loadContext;
|
||||
NS_QueryNotificationCallbacks(aChannel, loadContext);
|
||||
if (!loadContext) {
|
||||
return false;
|
||||
NeckoOriginAttributes attrs;
|
||||
|
||||
if (!NS_GetOriginAttributes(aChannel, attrs)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
nsresult rv = loadContext->GetAppId(aAppID);
|
||||
NS_ENSURE_SUCCESS(rv, false);
|
||||
|
||||
rv = loadContext->GetIsInIsolatedMozBrowserElement(aIsInIsolatedMozBrowserElement);
|
||||
NS_ENSURE_SUCCESS(rv, false);
|
||||
*aAppID = attrs.mAppId;
|
||||
*aIsInIsolatedMozBrowserElement = attrs.mInIsolatedMozBrowser;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -126,6 +126,8 @@ FTPChannelParent::DoAsyncOpen(const URIParams& aURI,
|
||||
const OptionalInputStreamParams& aUploadStream,
|
||||
const OptionalLoadInfoArgs& aLoadInfoArgs)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
|
||||
if (!uri)
|
||||
return false;
|
||||
@ -137,8 +139,26 @@ FTPChannelParent::DoAsyncOpen(const URIParams& aURI,
|
||||
this, uriSpec.get()));
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIIOService> ios(do_GetIOService(&rv));
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||
rv = mozilla::ipc::LoadInfoArgsToLoadInfo(aLoadInfoArgs,
|
||||
getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
NeckoOriginAttributes attrs;
|
||||
rv = loadInfo->GetOriginAttributes(&attrs);
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
bool app_offline = false;
|
||||
uint32_t appId = GetAppId();
|
||||
uint32_t appId = attrs.mAppId;
|
||||
if (appId != NECKO_UNKNOWN_APP_ID &&
|
||||
appId != NECKO_NO_APP_ID) {
|
||||
gIOService->IsAppOffline(appId, &app_offline);
|
||||
@ -148,18 +168,6 @@ FTPChannelParent::DoAsyncOpen(const URIParams& aURI,
|
||||
if (app_offline)
|
||||
return SendFailedAsyncOpen(NS_ERROR_OFFLINE);
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIIOService> ios(do_GetIOService(&rv));
|
||||
if (NS_FAILED(rv))
|
||||
return SendFailedAsyncOpen(rv);
|
||||
|
||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||
rv = mozilla::ipc::LoadInfoArgsToLoadInfo(aLoadInfoArgs,
|
||||
getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIChannel> chan;
|
||||
rv = NS_NewChannelInternal(getter_AddRefs(chan), uri, loadInfo,
|
||||
nullptr, nullptr,
|
||||
@ -883,8 +891,11 @@ uint32_t
|
||||
FTPChannelParent::GetAppId()
|
||||
{
|
||||
uint32_t appId = NECKO_UNKNOWN_APP_ID;
|
||||
if (mLoadContext) {
|
||||
mLoadContext->GetAppId(&appId);
|
||||
if (mChannel) {
|
||||
NeckoOriginAttributes attrs;
|
||||
if (NS_GetOriginAttributes(mChannel, attrs)) {
|
||||
appId = attrs.mAppId;
|
||||
}
|
||||
}
|
||||
return appId;
|
||||
}
|
||||
|
@ -291,8 +291,21 @@ HttpChannelParent::DoAsyncOpen( const URIParams& aURI,
|
||||
if (NS_FAILED(rv))
|
||||
return SendFailedAsyncOpen(rv);
|
||||
|
||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||
rv = mozilla::ipc::LoadInfoArgsToLoadInfo(aLoadInfoArgs,
|
||||
getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
NeckoOriginAttributes attrs;
|
||||
rv = loadInfo->GetOriginAttributes(&attrs);
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
bool appOffline = false;
|
||||
uint32_t appId = GetAppId();
|
||||
uint32_t appId = attrs.mAppId;
|
||||
if (appId != NECKO_UNKNOWN_APP_ID &&
|
||||
appId != NECKO_NO_APP_ID) {
|
||||
gIOService->IsAppOffline(appId, &appOffline);
|
||||
@ -305,13 +318,6 @@ HttpChannelParent::DoAsyncOpen( const URIParams& aURI,
|
||||
loadFlags |= nsICachingChannel::LOAD_NO_NETWORK_IO;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||
rv = mozilla::ipc::LoadInfoArgsToLoadInfo(aLoadInfoArgs,
|
||||
getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv)) {
|
||||
return SendFailedAsyncOpen(rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIChannel> channel;
|
||||
rv = NS_NewChannelInternal(getter_AddRefs(channel), uri, loadInfo,
|
||||
nullptr, nullptr, loadFlags, ios);
|
||||
@ -459,16 +465,9 @@ HttpChannelParent::DoAsyncOpen( const URIParams& aURI,
|
||||
}
|
||||
|
||||
if (setChooseApplicationCache) {
|
||||
DocShellOriginAttributes docShellAttrs;
|
||||
if (mLoadContext) {
|
||||
bool result = mLoadContext->GetOriginAttributes(docShellAttrs);
|
||||
if (!result) {
|
||||
return SendFailedAsyncOpen(NS_ERROR_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
NeckoOriginAttributes neckoAttrs;
|
||||
neckoAttrs.InheritFromDocShellToNecko(docShellAttrs);
|
||||
NS_GetOriginAttributes(mChannel, neckoAttrs);
|
||||
|
||||
PrincipalOriginAttributes attrs;
|
||||
attrs.InheritFromNecko(neckoAttrs);
|
||||
nsCOMPtr<nsIPrincipal> principal =
|
||||
@ -1608,8 +1607,11 @@ uint32_t
|
||||
HttpChannelParent::GetAppId()
|
||||
{
|
||||
uint32_t appId = NECKO_UNKNOWN_APP_ID;
|
||||
if (mLoadContext) {
|
||||
mLoadContext->GetAppId(&appId);
|
||||
if (mChannel) {
|
||||
NeckoOriginAttributes attrs;
|
||||
if (NS_GetOriginAttributes(mChannel, attrs)) {
|
||||
appId = attrs.mAppId;
|
||||
}
|
||||
}
|
||||
return appId;
|
||||
}
|
||||
|
@ -76,9 +76,21 @@ WebSocketChannelParent::RecvAsyncOpen(const OptionalURIParams& aURI,
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||
|
||||
bool appOffline = false;
|
||||
uint32_t appId = GetAppId();
|
||||
uint32_t appId = NECKO_NO_APP_ID;
|
||||
NeckoOriginAttributes attrs;
|
||||
|
||||
rv = LoadInfoArgsToLoadInfo(aLoadInfoArgs, getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rv = loadInfo->GetOriginAttributes(&attrs);
|
||||
if (NS_FAILED(rv)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
appId = attrs.mAppId;
|
||||
if (appId != NECKO_UNKNOWN_APP_ID &&
|
||||
appId != NECKO_NO_APP_ID) {
|
||||
gIOService->IsAppOffline(appId, &appOffline);
|
||||
@ -102,10 +114,6 @@ WebSocketChannelParent::RecvAsyncOpen(const OptionalURIParams& aURI,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rv = LoadInfoArgsToLoadInfo(aLoadInfoArgs, getter_AddRefs(loadInfo));
|
||||
if (NS_FAILED(rv))
|
||||
goto fail;
|
||||
|
||||
rv = mChannel->SetLoadInfo(loadInfo);
|
||||
if (NS_FAILED(rv)) {
|
||||
goto fail;
|
||||
@ -328,9 +336,18 @@ WebSocketChannelParent::OfflineDisconnect()
|
||||
uint32_t
|
||||
WebSocketChannelParent::GetAppId()
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
uint32_t appId = NECKO_UNKNOWN_APP_ID;
|
||||
if (mLoadContext) {
|
||||
mLoadContext->GetAppId(&appId);
|
||||
if (mChannel) {
|
||||
nsCOMPtr<nsILoadInfo> loadInfo;
|
||||
rv = mChannel->GetLoadInfo(getter_AddRefs(loadInfo));
|
||||
|
||||
if (NS_SUCCEEDED(rv) && loadInfo) {
|
||||
NeckoOriginAttributes attrs;
|
||||
loadInfo->GetOriginAttributes(&attrs);
|
||||
appId = attrs.mAppId;
|
||||
}
|
||||
}
|
||||
return appId;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user