Bug 1611588 - Handle null BrowsingContext in ExternalHelperAppParent. r=nika

Differential Revision: https://phabricator.services.mozilla.com/D61309

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Matt Woodrow 2020-02-03 18:57:08 +00:00
parent f862fc3ecb
commit d70ca2b3dc
2 changed files with 22 additions and 18 deletions

View file

@ -80,6 +80,7 @@ void ExternalHelperAppParent::Init(
SetPropertyAsInterface(NS_LITERAL_STRING("docshell.internalReferrer"), SetPropertyAsInterface(NS_LITERAL_STRING("docshell.internalReferrer"),
referrer); referrer);
if (aContext) {
WindowGlobalParent* parent = aContext->Canonical()->GetCurrentWindowGlobal(); WindowGlobalParent* parent = aContext->Canonical()->GetCurrentWindowGlobal();
if (parent) { if (parent) {
RefPtr<BrowserParent> browser = parent->GetBrowserParent(); RefPtr<BrowserParent> browser = parent->GetBrowserParent();
@ -90,6 +91,7 @@ void ExternalHelperAppParent::Init(
SetPrivate(isPrivate); SetPrivate(isPrivate);
} }
} }
}
helperAppService->CreateListener(aMimeContentType, this, aContext, aForceSave, helperAppService->CreateListener(aMimeContentType, this, aContext, aForceSave,
nullptr, getter_AddRefs(mListener)); nullptr, getter_AddRefs(mListener));

View file

@ -1526,6 +1526,7 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
aChannel->GetContentLength(&mContentLength); aChannel->GetContentLength(&mContentLength);
} }
if (mBrowsingContext) {
mMaybeCloseWindowHelper = new MaybeCloseWindowHelper(mBrowsingContext); mMaybeCloseWindowHelper = new MaybeCloseWindowHelper(mBrowsingContext);
mMaybeCloseWindowHelper->SetShouldCloseWindow(mShouldCloseWindow); mMaybeCloseWindowHelper->SetShouldCloseWindow(mShouldCloseWindow);
@ -1538,6 +1539,7 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
mMaybeCloseWindowHelper->SetShouldCloseWindow(tmp); mMaybeCloseWindowHelper->SetShouldCloseWindow(tmp);
} }
} }
}
// Now get the URI // Now get the URI
if (aChannel) { if (aChannel) {
@ -1552,7 +1554,7 @@ NS_IMETHODIMP nsExternalAppHandler::OnStartRequest(nsIRequest* request) {
// download. We don't run this in the content process, since we have // download. We don't run this in the content process, since we have
// an instance running in the parent as well, which will handle this // an instance running in the parent as well, which will handle this
// if needed. // if needed.
if (!XRE_IsContentProcess()) { if (!XRE_IsContentProcess() && mMaybeCloseWindowHelper) {
mBrowsingContext = mMaybeCloseWindowHelper->MaybeCloseWindow(); mBrowsingContext = mMaybeCloseWindowHelper->MaybeCloseWindow();
} }