parent
5fc1a04412
commit
840e69b85c
|
|
@ -1 +1 @@
|
|||
1044
|
||||
1045
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28
|
|||
const transportProvider = {
|
||||
setListener(upgradeListener) {
|
||||
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
|
||||
index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..abcc9be78508a9788c3b4872a1eb344ddf2f9464 100644
|
||||
index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..74d392e71ce3a0b1a0c640cc9149777794164e7b 100644
|
||||
--- a/docshell/base/nsDocShell.cpp
|
||||
+++ b/docshell/base/nsDocShell.cpp
|
||||
@@ -53,6 +53,7 @@
|
||||
|
|
@ -174,7 +174,7 @@ index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..abcc9be78508a9788c3b4872a1eb344d
|
|||
if (!isSubFrame && !isRoot) {
|
||||
/*
|
||||
* We don't want to send OnLocationChange notifications when
|
||||
@@ -3363,6 +3368,72 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
|
||||
@@ -3363,6 +3368,85 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
@ -203,6 +203,19 @@ index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..abcc9be78508a9788c3b4872a1eb344d
|
|||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsDocShell::GetLanguageOverride(nsAString& aLanguageOverride) {
|
||||
+ MOZ_ASSERT(aEnabled);
|
||||
+ aLanguageOverride = mLanguageOverride;
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsDocShell::SetLanguageOverride(const nsAString& aLanguageOverride) {
|
||||
+ mLanguageOverride = aLanguageOverride;
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsDocShell::GetFileInputInterceptionEnabled(bool* aEnabled) {
|
||||
+ MOZ_ASSERT(aEnabled);
|
||||
+ *aEnabled = mFileInputInterceptionEnabled;
|
||||
|
|
@ -247,7 +260,7 @@ index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..abcc9be78508a9788c3b4872a1eb344d
|
|||
NS_IMETHODIMP
|
||||
nsDocShell::GetIsNavigating(bool* aOut) {
|
||||
*aOut = mIsNavigating;
|
||||
@@ -12138,6 +12209,9 @@ class OnLinkClickEvent : public Runnable {
|
||||
@@ -12138,6 +12222,9 @@ class OnLinkClickEvent : public Runnable {
|
||||
mNoOpenerImplied, nullptr, nullptr,
|
||||
mIsUserTriggered, mTriggeringPrincipal, mCsp);
|
||||
}
|
||||
|
|
@ -257,7 +270,7 @@ index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..abcc9be78508a9788c3b4872a1eb344d
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -12227,6 +12301,9 @@ nsresult nsDocShell::OnLinkClick(
|
||||
@@ -12227,6 +12314,9 @@ nsresult nsDocShell::OnLinkClick(
|
||||
this, aContent, aURI, target, aFileName, aPostDataStream,
|
||||
aHeadersDataStream, noOpenerImplied, aIsUserTriggered, aIsTrusted,
|
||||
aTriggeringPrincipal, aCsp);
|
||||
|
|
@ -268,7 +281,7 @@ index 344bd4a9f524616b98c664d4fb2b2154927ea7c8..abcc9be78508a9788c3b4872a1eb344d
|
|||
}
|
||||
|
||||
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
|
||||
index bd8327aae45f1d56acf0d5e61519c7cf469462f3..89cb1a417f129b75ee7e6ec322d121d579d25ef0 100644
|
||||
index bd8327aae45f1d56acf0d5e61519c7cf469462f3..bb1bdf6aadf8276ed46c435e00e0bc4ff9ce91df 100644
|
||||
--- a/docshell/base/nsDocShell.h
|
||||
+++ b/docshell/base/nsDocShell.h
|
||||
@@ -13,6 +13,7 @@
|
||||
|
|
@ -310,18 +323,19 @@ index bd8327aae45f1d56acf0d5e61519c7cf469462f3..89cb1a417f129b75ee7e6ec322d121d5
|
|||
// 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
|
||||
@@ -1296,6 +1307,9 @@ class nsDocShell final : public nsDocLoader,
|
||||
@@ -1296,6 +1307,10 @@ class nsDocShell final : public nsDocLoader,
|
||||
bool mUseStrictSecurityChecks : 1;
|
||||
bool mObserveErrorPages : 1;
|
||||
bool mCSSErrorReportingEnabled : 1;
|
||||
+ bool mFileInputInterceptionEnabled: 1;
|
||||
+ bool mBypassCSPEnabled : 1;
|
||||
+ nsString mLanguageOverride;
|
||||
+ RefPtr<nsGeolocationService> mGeolocationOverrideService;
|
||||
bool mAllowAuth : 1;
|
||||
bool mAllowKeywordFixup : 1;
|
||||
bool mIsOffScreenBrowser : 1;
|
||||
diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl
|
||||
index db95b181388e8ab3c074b3b6e036dc971633e396..bd2ab50b8a5a6f6e3b9618061b752ea52caa239c 100644
|
||||
index db95b181388e8ab3c074b3b6e036dc971633e396..b550e4abdb37d9ca942796d86758377ecbc3f461 100644
|
||||
--- a/docshell/base/nsIDocShell.idl
|
||||
+++ b/docshell/base/nsIDocShell.idl
|
||||
@@ -44,6 +44,7 @@ interface nsIURI;
|
||||
|
|
@ -332,7 +346,7 @@ index db95b181388e8ab3c074b3b6e036dc971633e396..bd2ab50b8a5a6f6e3b9618061b752ea5
|
|||
interface nsIDocShellLoadInfo;
|
||||
interface nsIEditor;
|
||||
interface nsIEditingSession;
|
||||
@@ -1132,4 +1133,10 @@ interface nsIDocShell : nsIDocShellTreeItem
|
||||
@@ -1132,4 +1133,12 @@ interface nsIDocShell : nsIDocShellTreeItem
|
||||
* @see nsISHEntry synchronizeLayoutHistoryState().
|
||||
*/
|
||||
void synchronizeLayoutHistoryState();
|
||||
|
|
@ -341,6 +355,8 @@ index db95b181388e8ab3c074b3b6e036dc971633e396..bd2ab50b8a5a6f6e3b9618061b752ea5
|
|||
+
|
||||
+ attribute boolean bypassCSPEnabled;
|
||||
+
|
||||
+ attribute AString languageOverride;
|
||||
+
|
||||
+ void setGeolocationOverride(in nsIDOMGeoPosition position);
|
||||
};
|
||||
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
|
||||
|
|
@ -369,6 +385,55 @@ index 394004780db4017d6ff1561febd4b379705c6302..941ef9f97a4851e785edaf25c0913a1c
|
|||
// If this is a data document - no need to set CSP.
|
||||
if (mLoadedAsData) {
|
||||
return NS_OK;
|
||||
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
|
||||
index 061f19c31fa396d9ff7aedc4c0e175b3d5bf521f..4cf9c16bb1b275debd326ea860e27dd76c4f8a56 100644
|
||||
--- a/dom/base/Navigator.cpp
|
||||
+++ b/dom/base/Navigator.cpp
|
||||
@@ -313,14 +313,18 @@ void Navigator::GetAppName(nsAString& aAppName, CallerType aCallerType) const {
|
||||
* An empty array will be returned if there is no valid languages.
|
||||
*/
|
||||
/* static */
|
||||
-void Navigator::GetAcceptLanguages(nsTArray<nsString>& aLanguages) {
|
||||
+void Navigator::GetAcceptLanguages(const nsString* aLanguageOverride, nsTArray<nsString>& aLanguages) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
aLanguages.Clear();
|
||||
|
||||
// E.g. "de-de, en-us,en".
|
||||
nsAutoString acceptLang;
|
||||
- Preferences::GetLocalizedString("intl.accept_languages", acceptLang);
|
||||
+ if (aLanguageOverride && aLanguageOverride->Length())
|
||||
+ acceptLang = *aLanguageOverride;
|
||||
+ else
|
||||
+ Preferences::GetLocalizedString("intl.accept_languages", acceptLang);
|
||||
+
|
||||
|
||||
// Split values on commas.
|
||||
nsCharSeparatedTokenizer langTokenizer(acceptLang, ',');
|
||||
@@ -376,7 +380,9 @@ void Navigator::GetLanguage(nsAString& aLanguage) {
|
||||
}
|
||||
|
||||
void Navigator::GetLanguages(nsTArray<nsString>& aLanguages) {
|
||||
- GetAcceptLanguages(aLanguages);
|
||||
+ nsString languageOverride;
|
||||
+ mWindow->GetDocShell()->GetLanguageOverride(languageOverride);
|
||||
+ GetAcceptLanguages(&languageOverride, aLanguages);
|
||||
|
||||
// The returned value is cached by the binding code. The window listen to the
|
||||
// accept languages change and will clear the cache when needed. It has to
|
||||
diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h
|
||||
index 1ad4f2a680177e309ff3614b17663201c8c3b68e..a867a49b16475f2a5f8be68967568bf571731ca7 100644
|
||||
--- a/dom/base/Navigator.h
|
||||
+++ b/dom/base/Navigator.h
|
||||
@@ -218,7 +218,7 @@ class Navigator final : public nsISupports, public nsWrapperCache {
|
||||
|
||||
StorageManager* Storage();
|
||||
|
||||
- static void GetAcceptLanguages(nsTArray<nsString>& aLanguages);
|
||||
+ static void GetAcceptLanguages(const nsString* aLanguageOverride, nsTArray<nsString>& aLanguages);
|
||||
|
||||
dom::MediaCapabilities* MediaCapabilities();
|
||||
dom::MediaSession* MediaSession();
|
||||
diff --git a/dom/geolocation/Geolocation.cpp b/dom/geolocation/Geolocation.cpp
|
||||
index f2bb0d880f179bb37e915fe5b32692ac4307ecf7..835c8f9098ffe4f63aeac0286faa33ade21f9a0f 100644
|
||||
--- a/dom/geolocation/Geolocation.cpp
|
||||
|
|
@ -548,6 +613,29 @@ index f0c28cfdae1c9ac33013e9688e0142d161763543..a38ab106e37dbab58e91ef5a873f8954
|
|||
nsAutoString policyStr(
|
||||
nsContentUtils::TrimWhitespace<nsContentUtils::IsHTMLWhitespace>(
|
||||
aPolicyStr));
|
||||
diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp
|
||||
index ddc2aac728a772d4830504419d63123ffc4ee928..4a9fd6d8a437c0fefce144d85c3274672ab54ea3 100644
|
||||
--- a/dom/workers/RuntimeService.cpp
|
||||
+++ b/dom/workers/RuntimeService.cpp
|
||||
@@ -1065,7 +1065,7 @@ void PrefLanguagesChanged(const char* /* aPrefName */, void* /* aClosure */) {
|
||||
AssertIsOnMainThread();
|
||||
|
||||
nsTArray<nsString> languages;
|
||||
- Navigator::GetAcceptLanguages(languages);
|
||||
+ Navigator::GetAcceptLanguages(nullptr, languages);
|
||||
|
||||
RuntimeService* runtime = RuntimeService::GetService();
|
||||
if (runtime) {
|
||||
@@ -1269,8 +1269,7 @@ bool RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate) {
|
||||
}
|
||||
|
||||
// The navigator overridden properties should have already been read.
|
||||
-
|
||||
- Navigator::GetAcceptLanguages(mNavigatorProperties.mLanguages);
|
||||
+ Navigator::GetAcceptLanguages(nullptr, mNavigatorProperties.mLanguages);
|
||||
mNavigatorPropertiesLoaded = true;
|
||||
}
|
||||
|
||||
diff --git a/extensions/permissions/nsPermissionManager.cpp b/extensions/permissions/nsPermissionManager.cpp
|
||||
index 5de630a1db847a09651b310928bb7bc4d4f66f29..0268bc2bdfb3bfda2ef6e01a5dd24209723903fa 100644
|
||||
--- a/extensions/permissions/nsPermissionManager.cpp
|
||||
|
|
@ -2610,10 +2698,10 @@ index 0000000000000000000000000000000000000000..be70ea364f9534bb3b344f64970366c3
|
|||
+
|
||||
diff --git a/juggler/content/PageAgent.js b/juggler/content/PageAgent.js
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..2fbf254062eef50c2298916120f83a8000a5388d
|
||||
index 0000000000000000000000000000000000000000..17ddd1ac290baf820bd9aa1b6aaf629f6627dc65
|
||||
--- /dev/null
|
||||
+++ b/juggler/content/PageAgent.js
|
||||
@@ -0,0 +1,940 @@
|
||||
@@ -0,0 +1,945 @@
|
||||
+"use strict";
|
||||
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
+const Ci = Components.interfaces;
|
||||
|
|
@ -2790,6 +2878,7 @@ index 0000000000000000000000000000000000000000..2fbf254062eef50c2298916120f83a80
|
|||
+ setFileInputFiles: this._setFileInputFiles.bind(this),
|
||||
+ setInterceptFileChooserDialog: this._setInterceptFileChooserDialog.bind(this),
|
||||
+ setGeolocationOverride: this._setGeolocationOverride.bind(this),
|
||||
+ setLanguageOverride: this._setLanguageOverride.bind(this),
|
||||
+ }),
|
||||
+ ];
|
||||
+ this._enabled = false;
|
||||
|
|
@ -2952,6 +3041,10 @@ index 0000000000000000000000000000000000000000..2fbf254062eef50c2298916120f83a80
|
|||
+ }
|
||||
+ }
|
||||
+
|
||||
+ _setLanguageOverride({ language }) {
|
||||
+ this._docShell.languageOverride = language;
|
||||
+ }
|
||||
+
|
||||
+ _linkClicked(sync, anchorElement) {
|
||||
+ if (anchorElement.ownerGlobal.docShell !== this._docShell)
|
||||
+ return;
|
||||
|
|
@ -5077,10 +5170,10 @@ index 0000000000000000000000000000000000000000..e1f1e21a20768d707a92ffffc8a7c114
|
|||
+this.NetworkHandler = NetworkHandler;
|
||||
diff --git a/juggler/protocol/PageHandler.js b/juggler/protocol/PageHandler.js
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..e0b9ee6f25dc94d7c049fc40a61a1b7e70fa38c2
|
||||
index 0000000000000000000000000000000000000000..c2e7ba3ee96c9d6f3da56a274c760b36816631a0
|
||||
--- /dev/null
|
||||
+++ b/juggler/protocol/PageHandler.js
|
||||
@@ -0,0 +1,353 @@
|
||||
@@ -0,0 +1,357 @@
|
||||
+"use strict";
|
||||
+
|
||||
+const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
|
||||
|
|
@ -5375,6 +5468,10 @@ index 0000000000000000000000000000000000000000..e0b9ee6f25dc94d7c049fc40a61a1b7e
|
|||
+ return await this._contentPage.send('setGeolocationOverride', options);
|
||||
+ }
|
||||
+
|
||||
+ async setLanguageOverride(options) {
|
||||
+ return await this._contentPage.send('setLanguageOverride', options);
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
+
|
||||
+class Dialog {
|
||||
|
|
@ -5585,10 +5682,10 @@ index 0000000000000000000000000000000000000000..78b6601b91d0b7fcda61114e6846aa07
|
|||
+this.EXPORTED_SYMBOLS = ['t', 'checkScheme'];
|
||||
diff --git a/juggler/protocol/Protocol.js b/juggler/protocol/Protocol.js
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..c915c4b2c1dde6941c9fcf424b0a6de36dea0088
|
||||
index 0000000000000000000000000000000000000000..cb775900073f83e5e6892b84f8ff782dc8f5bc04
|
||||
--- /dev/null
|
||||
+++ b/juggler/protocol/Protocol.js
|
||||
@@ -0,0 +1,752 @@
|
||||
@@ -0,0 +1,757 @@
|
||||
+const {t, checkScheme} = ChromeUtils.import('chrome://juggler/content/protocol/PrimitiveTypes.js');
|
||||
+
|
||||
+// Protocol-specific types.
|
||||
|
|
@ -6315,6 +6412,11 @@ index 0000000000000000000000000000000000000000..c915c4b2c1dde6941c9fcf424b0a6de3
|
|||
+ longitude: t.Optional(t.Number),
|
||||
+ accuracy: t.Optional(t.Number)
|
||||
+ }
|
||||
+ },
|
||||
+ 'setLanguageOverride': {
|
||||
+ params: {
|
||||
+ language: t.String,
|
||||
+ }
|
||||
+ }
|
||||
+ },
|
||||
+};
|
||||
|
|
|
|||
Loading…
Reference in a new issue