mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
browser(firefox): force always active docshell (#4363)
This forces active docshell for all content processes. References #4208
This commit is contained in:
parent
49e4d9a347
commit
c522a0dfba
@ -1,2 +1,2 @@
|
||||
1202
|
||||
Changed: yurys@chromium.org Thu Nov 5 20:30:30 GMTST 2020
|
||||
1203
|
||||
Changed: lushnikov@chromium.org Thu Nov 5 17:39:41 PST 2020
|
||||
|
@ -92,6 +92,7 @@ function initialize() {
|
||||
|
||||
// Enforce focused state for all top level documents.
|
||||
docShell.overrideHasFocus = true;
|
||||
docShell.forceActiveState = true;
|
||||
frameTree = new FrameTree(docShell);
|
||||
for (const [name, value] of Object.entries(settings)) {
|
||||
if (value !== undefined)
|
||||
|
@ -178,7 +178,7 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28
|
||||
const transportProvider = {
|
||||
setListener(upgradeListener) {
|
||||
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
|
||||
index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336a1baf2e4 100644
|
||||
index 665db419cb4909d34cdd3963d922aed12cf2c8ac..feadde48633ee78a5910c776d34d42864bf0e682 100644
|
||||
--- a/docshell/base/nsDocShell.cpp
|
||||
+++ b/docshell/base/nsDocShell.cpp
|
||||
@@ -15,6 +15,12 @@
|
||||
@ -226,19 +226,20 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
#include "nsNetCID.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsObjectLoadingContent.h"
|
||||
@@ -391,6 +401,11 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext,
|
||||
@@ -391,6 +401,12 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext,
|
||||
mAllowDNSPrefetch(true),
|
||||
mAllowWindowControl(true),
|
||||
mCSSErrorReportingEnabled(false),
|
||||
+ mFileInputInterceptionEnabled(false),
|
||||
+ mOverrideHasFocus(false),
|
||||
+ mBypassCSPEnabled(false),
|
||||
+ mForceActiveState(false),
|
||||
+ mOnlineOverride(nsIDocShell::ONLINE_OVERRIDE_NONE),
|
||||
+ mColorSchemeOverride(COLOR_SCHEME_OVERRIDE_NONE),
|
||||
mAllowAuth(mItemType == typeContent),
|
||||
mAllowKeywordFixup(false),
|
||||
mIsOffScreenBrowser(false),
|
||||
@@ -1418,6 +1433,7 @@ bool nsDocShell::SetCurrentURI(nsIURI* aURI, nsIRequest* aRequest,
|
||||
@@ -1418,6 +1434,7 @@ bool nsDocShell::SetCurrentURI(nsIURI* aURI, nsIRequest* aRequest,
|
||||
}
|
||||
}
|
||||
|
||||
@ -246,7 +247,7 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
if (!isSubFrame && !isRoot) {
|
||||
/*
|
||||
* We don't want to send OnLocationChange notifications when
|
||||
@@ -3214,6 +3230,189 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
|
||||
@@ -3214,6 +3231,204 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -272,6 +273,21 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsDocShell::GetForceActiveState(bool* aEnabled) {
|
||||
+ MOZ_ASSERT(aEnabled);
|
||||
+ *aEnabled = mForceActiveState;
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsDocShell::SetForceActiveState(bool aEnabled) {
|
||||
+ mForceActiveState = aEnabled;
|
||||
+ if (aEnabled)
|
||||
+ SetIsActive(true);
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+bool nsDocShell::IsBypassCSPEnabled() {
|
||||
+ return GetRootDocShell()->mBypassCSPEnabled;
|
||||
+}
|
||||
@ -436,7 +452,17 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
NS_IMETHODIMP
|
||||
nsDocShell::GetIsNavigating(bool* aOut) {
|
||||
*aOut = mIsNavigating;
|
||||
@@ -8526,6 +8725,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) {
|
||||
@@ -4821,6 +5036,9 @@ nsDocShell::GetSuspendMediaWhenInactive(bool* aSuspendMediaWhenInactive) {
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDocShell::SetIsActive(bool aIsActive) {
|
||||
+ if (mForceActiveState && !aIsActive)
|
||||
+ return NS_OK;
|
||||
+
|
||||
// Keep track ourselves.
|
||||
// Changing the activeness on a discarded browsing context has no effect.
|
||||
Unused << mBrowsingContext->SetIsActive(aIsActive);
|
||||
@@ -8526,6 +8744,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) {
|
||||
true, // aForceNoOpener
|
||||
getter_AddRefs(newBC));
|
||||
MOZ_ASSERT(!newBC);
|
||||
@ -449,7 +475,7 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -12413,6 +12618,9 @@ class OnLinkClickEvent : public Runnable {
|
||||
@@ -12413,6 +12637,9 @@ class OnLinkClickEvent : public Runnable {
|
||||
mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied,
|
||||
mTriggeringPrincipal);
|
||||
}
|
||||
@ -459,7 +485,7 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -12498,6 +12706,8 @@ nsresult nsDocShell::OnLinkClick(
|
||||
@@ -12498,6 +12725,8 @@ nsresult nsDocShell::OnLinkClick(
|
||||
nsCOMPtr<nsIRunnable> ev =
|
||||
new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied,
|
||||
aIsTrusted, aTriggeringPrincipal);
|
||||
@ -469,7 +495,7 @@ index 665db419cb4909d34cdd3963d922aed12cf2c8ac..9323dade18a7780802275fa6fcebe336
|
||||
}
|
||||
|
||||
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
|
||||
index 0d3594f977ac28595f830cbc5e310a8af284d777..7e3222a0cafc3f38e335c9dc8654019a067a7a39 100644
|
||||
index 0d3594f977ac28595f830cbc5e310a8af284d777..0149141757abef2787a09bba20d98714fd50d50d 100644
|
||||
--- a/docshell/base/nsDocShell.h
|
||||
+++ b/docshell/base/nsDocShell.h
|
||||
@@ -13,6 +13,7 @@
|
||||
@ -513,13 +539,14 @@ index 0d3594f977ac28595f830cbc5e310a8af284d777..7e3222a0cafc3f38e335c9dc8654019a
|
||||
// Handles retrieval of subframe session history for nsDocShell::LoadURI. If a
|
||||
// load is requested in a subframe of the current DocShell, the subframe
|
||||
// loadType may need to reflect the loadType of the parent document, or in
|
||||
@@ -1264,6 +1277,14 @@ class nsDocShell final : public nsDocLoader,
|
||||
@@ -1264,6 +1277,15 @@ class nsDocShell final : public nsDocLoader,
|
||||
bool mAllowDNSPrefetch : 1;
|
||||
bool mAllowWindowControl : 1;
|
||||
bool mCSSErrorReportingEnabled : 1;
|
||||
+ bool mFileInputInterceptionEnabled: 1;
|
||||
+ bool mOverrideHasFocus : 1;
|
||||
+ bool mBypassCSPEnabled : 1;
|
||||
+ bool mForceActiveState : 1;
|
||||
+ nsString mLanguageOverride;
|
||||
+ RefPtr<nsGeolocationService> mGeolocationServiceOverride;
|
||||
+ OnlineOverride mOnlineOverride;
|
||||
@ -529,7 +556,7 @@ index 0d3594f977ac28595f830cbc5e310a8af284d777..7e3222a0cafc3f38e335c9dc8654019a
|
||||
bool mAllowKeywordFixup : 1;
|
||||
bool mIsOffScreenBrowser : 1;
|
||||
diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl
|
||||
index 605de327047b338a0abde638e3b3a9fc5a617815..773511a4ae35b14262afeb3d005b437d30d96c0a 100644
|
||||
index 605de327047b338a0abde638e3b3a9fc5a617815..4e16debccf367a72c07660fb92015c5fb5de9b34 100644
|
||||
--- a/docshell/base/nsIDocShell.idl
|
||||
+++ b/docshell/base/nsIDocShell.idl
|
||||
@@ -44,6 +44,7 @@ interface nsIURI;
|
||||
@ -540,7 +567,7 @@ index 605de327047b338a0abde638e3b3a9fc5a617815..773511a4ae35b14262afeb3d005b437d
|
||||
interface nsIDocShellLoadInfo;
|
||||
interface nsIEditor;
|
||||
interface nsIEditingSession;
|
||||
@@ -923,6 +924,33 @@ interface nsIDocShell : nsIDocShellTreeItem
|
||||
@@ -923,6 +924,35 @@ interface nsIDocShell : nsIDocShellTreeItem
|
||||
*/
|
||||
void synchronizeLayoutHistoryState();
|
||||
|
||||
@ -550,6 +577,8 @@ index 605de327047b338a0abde638e3b3a9fc5a617815..773511a4ae35b14262afeb3d005b437d
|
||||
+
|
||||
+ attribute boolean bypassCSPEnabled;
|
||||
+
|
||||
+ attribute boolean forceActiveState;
|
||||
+
|
||||
+ attribute AString languageOverride;
|
||||
+
|
||||
+ boolean overrideTimezone(in AString timezoneId);
|
||||
|
Loading…
x
Reference in New Issue
Block a user