Bug 1588926 - Disable opener tabgroup check in fission mode; r=farre

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

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Edgar Chen 2019-11-25 15:28:27 +00:00
Родитель 94d29ad147
Коммит ddad40ef9a
1 изменённых файлов: 12 добавлений и 3 удалений

Просмотреть файл

@ -99,6 +99,7 @@
#include "mozilla/PresShell.h"
#include "mozilla/ProcessHangMonitor.h"
#include "mozilla/StaticPrefs_dom.h"
#include "mozilla/StaticPrefs_fission.h"
#include "mozilla/ThrottledEventQueue.h"
#include "AudioChannelService.h"
#include "nsAboutProtocolUtils.h"
@ -3622,7 +3623,9 @@ Maybe<CSSIntSize> nsGlobalWindowOuter::GetRDMDeviceSize(
// Bug 1576256: This does not work for cross-process subframes.
const Document* topInProcessContentDoc =
aDocument.GetTopLevelContentDocument();
BrowsingContext* bc = topInProcessContentDoc ? topInProcessContentDoc->GetBrowsingContext() : nullptr;
BrowsingContext* bc = topInProcessContentDoc
? topInProcessContentDoc->GetBrowsingContext()
: nullptr;
if (bc && bc->InRDMPane()) {
nsIDocShell* docShell = topInProcessContentDoc->GetDocShell();
if (docShell) {
@ -7751,8 +7754,14 @@ mozilla::dom::TabGroup* nsGlobalWindowOuter::TabGroupOuter() {
RefPtr<BrowsingContext> openerBC = GetBrowsingContext()->GetOpener();
nsPIDOMWindowOuter* opener =
openerBC ? openerBC->GetDOMWindow() : nullptr;
MOZ_ASSERT_IF(opener && Cast(opener) != this,
opener->TabGroup() == mTabGroup);
// For the case that a page A (foo.com) contains an iframe B (bar.com) and
// B contains an iframe C (foo.com), it can not guarantee that A and C are
// in same tabgroup in Fission mode. And if C reference back to A via
// window.open, we hit this assertion. Ignore this assertion in Fission
// given that tabgroup eventually will be removed after bug 1561715.
MOZ_ASSERT_IF(
!StaticPrefs::fission_autostart() && opener && Cast(opener) != this,
opener->TabGroup() == mTabGroup);
}
mIsValidatingTabGroup = false;
}