diff options
Diffstat (limited to '')
-rw-r--r-- | dom/base/nsFrameLoader.cpp | 146 |
1 files changed, 13 insertions, 133 deletions
diff --git a/dom/base/nsFrameLoader.cpp b/dom/base/nsFrameLoader.cpp index a40bc427dd..eca528f258 100644 --- a/dom/base/nsFrameLoader.cpp +++ b/dom/base/nsFrameLoader.cpp @@ -39,7 +39,6 @@ #include "nsSubDocumentFrame.h" #include "nsError.h" #include "nsIAppWindow.h" -#include "nsIMozBrowserFrame.h" #include "nsIScriptError.h" #include "nsGlobalWindowInner.h" #include "nsGlobalWindowOuter.h" @@ -262,13 +261,6 @@ static bool IsTopContent(BrowsingContext* aParent, Element* aOwner) { return false; } - // If we have a (deprecated) mozbrowser element, we want to start a new - // BrowsingContext tree regardless of whether the parent is chrome or content. - nsCOMPtr<nsIMozBrowserFrame> mozbrowser = aOwner->GetAsMozBrowserFrame(); - if (mozbrowser && mozbrowser->GetReallyIsBrowser()) { - return true; - } - if (aParent->IsContent()) { // If we're already in content, we may still want to create a new // BrowsingContext tree if our element is a xul browser element with a @@ -365,17 +357,8 @@ static bool InitialLoadIsRemote(Element* aOwner) { return false; } - // If we're an <iframe mozbrowser> and we don't have a "remote" attribute, - // fall back to the default. - nsCOMPtr<nsIMozBrowserFrame> browserFrame = do_QueryInterface(aOwner); - bool isMozBrowserFrame = browserFrame && browserFrame->GetReallyIsBrowser(); - if (isMozBrowserFrame && !aOwner->HasAttr(nsGkAtoms::remote)) { - return Preferences::GetBool("dom.ipc.browser_frames.oop_by_default", false); - } - - // Otherwise, we're remote if we have "remote=true" and we're either a - // browser frame or a XUL element. - return (isMozBrowserFrame || aOwner->GetNameSpaceID() == kNameSpaceID_XUL) && + // Otherwise, we're remote if we have "remote=true" and we're a XUL element. + return (aOwner->GetNameSpaceID() == kNameSpaceID_XUL) && aOwner->AttrValueIs(kNameSpaceID_None, nsGkAtoms::remote, nsGkAtoms::_true, eCaseMatters); } @@ -706,12 +689,6 @@ nsresult nsFrameLoader::ReallyStartLoadingInternal() { // Default flags: int32_t flags = nsIWebNavigation::LOAD_FLAGS_NONE; - - // Flags for browser frame: - if (OwnerIsMozBrowserFrame()) { - flags = nsIWebNavigation::LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP | - nsIWebNavigation::LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL; - } loadState->SetLoadFlags(flags); loadState->SetFirstParty(false); @@ -875,14 +852,6 @@ static bool CheckDocShellType(mozilla::dom::Element* aOwnerContent, bool isContent = aOwnerContent->AttrValueIs(kNameSpaceID_None, aAtom, nsGkAtoms::content, eIgnoreCase); - if (!isContent) { - nsCOMPtr<nsIMozBrowserFrame> mozbrowser = - aOwnerContent->GetAsMozBrowserFrame(); - if (mozbrowser) { - mozbrowser->GetMozbrowser(&isContent); - } - } - if (isContent) { return aDocShell->ItemType() == nsIDocShellTreeItem::typeContent; } @@ -1156,7 +1125,6 @@ bool nsFrameLoader::ShowRemoteFrame(const ScreenIntSize& size, if (nsCOMPtr<nsIObserverService> os = services::GetObserverService()) { os->NotifyObservers(ToSupports(this), "remote-browser-shown", nullptr); } - ProcessPriorityManager::RemoteBrowserFrameShown(this); } } else { nsIntRect dimensions; @@ -1329,14 +1297,6 @@ nsresult nsFrameLoader::SwapWithOtherRemoteLoader( return NS_ERROR_NOT_IMPLEMENTED; } - // Destroy browser frame scripts for content leaving a frame with browser API - if (OwnerIsMozBrowserFrame() && !aOther->OwnerIsMozBrowserFrame()) { - DestroyBrowserFrameScripts(); - } - if (!OwnerIsMozBrowserFrame() && aOther->OwnerIsMozBrowserFrame()) { - aOther->DestroyBrowserFrameScripts(); - } - otherBrowserParent->SetBrowserDOMWindow(browserDOMWindow); browserParent->SetBrowserDOMWindow(otherBrowserDOMWindow); @@ -1405,10 +1365,6 @@ nsresult nsFrameLoader::SwapWithOtherRemoteLoader( ourPresShell->BackingScaleFactorChanged(); otherPresShell->BackingScaleFactorChanged(); - // Initialize browser API if needed now that owner content has changed. - InitializeBrowserAPI(); - aOther->InitializeBrowserAPI(); - mInSwap = aOther->mInSwap = false; // Send an updated tab context since owner content type may have changed. @@ -1536,13 +1492,8 @@ nsresult nsFrameLoader::SwapWithOtherLoader(nsFrameLoader* aOther, return NS_ERROR_NOT_IMPLEMENTED; } - bool ourFullscreenAllowed = ourContent->IsXULElement() || - (OwnerIsMozBrowserFrame() && - ourContent->HasAttr(nsGkAtoms::allowfullscreen)); - bool otherFullscreenAllowed = - otherContent->IsXULElement() || - (aOther->OwnerIsMozBrowserFrame() && - otherContent->HasAttr(nsGkAtoms::allowfullscreen)); + bool ourFullscreenAllowed = ourContent->IsXULElement(); + bool otherFullscreenAllowed = otherContent->IsXULElement(); if (ourFullscreenAllowed != otherFullscreenAllowed) { return NS_ERROR_NOT_IMPLEMENTED; } @@ -1732,14 +1683,6 @@ nsresult nsFrameLoader::SwapWithOtherLoader(nsFrameLoader* aOther, return rv; } - // Destroy browser frame scripts for content leaving a frame with browser API - if (OwnerIsMozBrowserFrame() && !aOther->OwnerIsMozBrowserFrame()) { - DestroyBrowserFrameScripts(); - } - if (!OwnerIsMozBrowserFrame() && aOther->OwnerIsMozBrowserFrame()) { - aOther->DestroyBrowserFrameScripts(); - } - // Now move the docshells to the right docshell trees. Note that this // resets their treeowners to null. ourParentItem->RemoveChild(ourDocshell); @@ -1837,10 +1780,6 @@ nsresult nsFrameLoader::SwapWithOtherLoader(nsFrameLoader* aOther, ourFrame->PresShell()->BackingScaleFactorChanged(); otherFrame->PresShell()->BackingScaleFactorChanged(); - // Initialize browser API if needed now that owner content has changed - InitializeBrowserAPI(); - aOther->InitializeBrowserAPI(); - return NS_OK; } @@ -2174,11 +2113,6 @@ void nsFrameLoader::SetOwnerContent(Element* aContent) { } } -bool nsFrameLoader::OwnerIsMozBrowserFrame() { - nsCOMPtr<nsIMozBrowserFrame> browserFrame = do_QueryInterface(mOwnerContent); - return browserFrame ? browserFrame->GetReallyIsBrowser() : false; -} - nsIContent* nsFrameLoader::GetParentObject() const { return mOwnerContent; } void nsFrameLoader::AssertSafeToInit() { @@ -2338,16 +2272,7 @@ nsresult nsFrameLoader::MaybeCreateDocShell() { MOZ_ALWAYS_SUCCEEDS(mPendingBrowsingContext->SetInitialSandboxFlags( mPendingBrowsingContext->GetSandboxFlags())); - if (OwnerIsMozBrowserFrame()) { - // For inproc frames, set the docshell properties. - nsAutoString name; - if (mOwnerContent->GetAttr(nsGkAtoms::name, name)) { - docShell->SetName(name); - } - } - ReallyLoadFrameScripts(); - InitializeBrowserAPI(); // Previously we would forcibly create the initial about:blank document for // in-process content frames from a frame script which eagerly loaded in @@ -2588,11 +2513,8 @@ bool nsFrameLoader::TryRemoteBrowserInternal() { // Graphics initialization code relies on having a frame for the // remote browser case, as we can be inside a popup, which is a different // widget. - // - // FIXME: Ideally this should be unconditional, but we skip if for <iframe - // mozbrowser> because the old RDM ui depends on current behavior, and the - // mozbrowser frame code is scheduled for deletion, see bug 1574886. - if (!OwnerIsMozBrowserFrame() && !mOwnerContent->GetPrimaryFrame()) { + + if (!mOwnerContent->GetPrimaryFrame()) { doc->FlushPendingNotifications(FlushType::Frames); } @@ -2647,12 +2569,11 @@ bool nsFrameLoader::TryRemoteBrowserInternal() { mPendingBrowsingContext->InitSessionHistory(); } - // <iframe mozbrowser> gets to skip these checks. // iframes for JS plugins also get to skip these checks. We control the URL // that gets loaded, but the load is triggered from the document containing // the plugin. // out of process iframes also get to skip this check. - if (!OwnerIsMozBrowserFrame() && !XRE_IsContentProcess()) { + if (!XRE_IsContentProcess()) { if (parentDocShell->ItemType() != nsIDocShellTreeItem::typeChrome) { // Allow three exceptions to this rule : // - about:addons so it can load remote extension options pages @@ -2817,7 +2738,6 @@ bool nsFrameLoader::TryRemoteBrowserInternal() { } ReallyLoadFrameScripts(); - InitializeBrowserAPI(); return true; } @@ -3053,7 +2973,7 @@ nsresult nsFrameLoader::EnsureMessageManager() { return NS_OK; } - if (!mIsTopLevelContent && !OwnerIsMozBrowserFrame() && !IsRemoteFrame() && + if (!mIsTopLevelContent && !IsRemoteFrame() && !(mOwnerContent->IsXULElement() && mOwnerContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::forcemessagemanager, @@ -3096,7 +3016,7 @@ nsresult nsFrameLoader::EnsureMessageManager() { NS_ENSURE_TRUE(mChildMessageManager, NS_ERROR_UNEXPECTED); // Set up session store - if (StaticPrefs::browser_sessionstore_platform_collection_AtStartup()) { + if (SessionStorePlatformCollection()) { if (XRE_IsParentProcess() && mIsTopLevelContent) { mSessionStoreChild = SessionStoreChild::GetOrCreate( GetExtantBrowsingContext(), mOwnerContent); @@ -3538,36 +3458,6 @@ BrowsingContext* nsFrameLoader::GetExtantBrowsingContext() { return mPendingBrowsingContext; } -void nsFrameLoader::InitializeBrowserAPI() { - if (!OwnerIsMozBrowserFrame()) { - return; - } - - nsresult rv = EnsureMessageManager(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return; - } - mMessageManager->LoadFrameScript( - u"chrome://global/content/BrowserElementChild.js"_ns, - /* allowDelayedLoad = */ true, - /* aRunInGlobalScope */ true, IgnoreErrors()); - - nsCOMPtr<nsIMozBrowserFrame> browserFrame = do_QueryInterface(mOwnerContent); - if (browserFrame) { - browserFrame->InitializeBrowserAPI(); - } -} - -void nsFrameLoader::DestroyBrowserFrameScripts() { - if (!OwnerIsMozBrowserFrame()) { - return; - } - nsCOMPtr<nsIMozBrowserFrame> browserFrame = do_QueryInterface(mOwnerContent); - if (browserFrame) { - browserFrame->DestroyBrowserFrameScripts(); - } -} - void nsFrameLoader::StartPersistence( BrowsingContext* aContext, nsIWebBrowserPersistDocumentReceiver* aRecv, ErrorResult& aRv) { @@ -3673,9 +3563,9 @@ nsresult nsFrameLoader::GetNewTabContext(MutableTabContext* aTabContext, nsresult nsFrameLoader::PopulateOriginContextIdsFromAttributes( OriginAttributes& aAttr) { - // Only XUL or mozbrowser frames are allowed to set context IDs + // Only XUL are allowed to set context IDs uint32_t namespaceID = mOwnerContent->GetNameSpaceID(); - if (namespaceID != kNameSpaceID_XUL && !OwnerIsMozBrowserFrame()) { + if (namespaceID != kNameSpaceID_XUL) { return NS_OK; } @@ -3693,7 +3583,7 @@ nsresult nsFrameLoader::PopulateOriginContextIdsFromAttributes( mOwnerContent->GetAttr(nsGkAtoms::geckoViewSessionContextId, attributeValue) && !attributeValue.IsEmpty()) { - // XXX: Should we check the format from `GeckoViewNavigation.jsm` here? + // XXX: Should we check the format from `GeckoViewNavigation.sys.mjs` here? aAttr.mGeckoViewSessionContextId = attributeValue; } @@ -3899,8 +3789,7 @@ bool nsFrameLoader::EnsureBrowsingContextAttached() { // Inherit the `mFirstPartyDomain` flag from our parent document's result // principal, if it was set. if (parentContext->IsContent() && - !parentDoc->NodePrincipal()->IsSystemPrincipal() && - !OwnerIsMozBrowserFrame()) { + !parentDoc->NodePrincipal()->IsSystemPrincipal()) { OriginAttributes docAttrs = parentDoc->NodePrincipal()->OriginAttributesRef(); // We only want to inherit firstPartyDomain here, other attributes should @@ -3918,15 +3807,6 @@ bool nsFrameLoader::EnsureBrowsingContextAttached() { if (NS_WARN_IF(NS_FAILED(rv))) { return false; } - - // <iframe mozbrowser> is allowed to set `mozprivatebrowsing` to - // force-enable private browsing. - if (OwnerIsMozBrowserFrame()) { - if (mOwnerContent->HasAttr(nsGkAtoms::mozprivatebrowsing)) { - attrs.SyncAttributesWithPrivateBrowsing(true); - usePrivateBrowsing = true; - } - } } // If we've already been attached, return. |