Skip to content
Snippets Groups Projects
Verified Commit d1de7b16 authored by Alex Catarineu's avatar Alex Catarineu Committed by Pier Angelo Vendrame
Browse files

Bug 30605: Honor privacy.spoof_english in Android

This checks `privacy.spoof_english` whenever `setLocales` is
called from Fenix side and sets `intl.accept_languages`
accordingly.

Bug 40198: Expose privacy.spoof_english pref in GeckoView
parent 88cfa4ac
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
EventDispatcher: "resource://gre/modules/Messaging.sys.mjs",
PdfJs: "resource://pdf.js/PdfJs.sys.mjs",
Preferences: "resource://gre/modules/Preferences.sys.mjs",
RFPHelper: "resource://gre/modules/RFPHelper.sys.mjs",
});
const { XPCOMUtils } = ChromeUtils.importESModule(
......@@ -313,6 +314,10 @@ class GeckoViewStartup {
if (aData.requestedLocales) {
Services.locale.requestedLocales = aData.requestedLocales;
}
lazy.RFPHelper._handleSpoofEnglishChanged();
if (Services.prefs.getIntPref("privacy.spoof_english", 0) === 2) {
break;
}
const pls = Cc["@mozilla.org/pref-localizedstring;1"].createInstance(
Ci.nsIPrefLocalizedString
);
......
......@@ -804,6 +804,7 @@ package org.mozilla.geckoview {
method public boolean getRemoteDebuggingEnabled();
method @Nullable public GeckoRuntime getRuntime();
method @Nullable public Rect getScreenSizeOverride();
method public boolean getSpoofEnglish();
method @Nullable public RuntimeTelemetry.Delegate getTelemetryDelegate();
method public boolean getUseMaxScreenDepth();
method public boolean getWebFontsEnabled();
......@@ -825,6 +826,7 @@ package org.mozilla.geckoview {
method @NonNull public GeckoRuntimeSettings setLoginAutofillEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setPreferredColorScheme(int);
method @NonNull public GeckoRuntimeSettings setRemoteDebuggingEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setSpoofEnglish(boolean);
method @NonNull public GeckoRuntimeSettings setWebFontsEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setWebManifestEnabled(boolean);
field public static final int ALLOW_ALL = 0;
......@@ -864,6 +866,7 @@ package org.mozilla.geckoview {
method @NonNull public GeckoRuntimeSettings.Builder preferredColorScheme(int);
method @NonNull public GeckoRuntimeSettings.Builder remoteDebuggingEnabled(boolean);
method @NonNull public GeckoRuntimeSettings.Builder screenSizeOverride(int, int);
method @NonNull public GeckoRuntimeSettings.Builder spoofEnglish(boolean);
method @NonNull public GeckoRuntimeSettings.Builder telemetryDelegate(@NonNull RuntimeTelemetry.Delegate);
method @NonNull public GeckoRuntimeSettings.Builder useMaxScreenDepth(boolean);
method @NonNull public GeckoRuntimeSettings.Builder webFontsEnabled(boolean);
......
......@@ -454,6 +454,17 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
getSettings().setAllowInsecureConnections(level);
return this;
}
/**
* Sets whether we should spoof locale to English for webpages.
*
* @param flag True if we should spoof locale to English for webpages, false otherwise.
* @return This Builder instance.
*/
public @NonNull Builder spoofEnglish(final boolean flag) {
getSettings().mSpoofEnglish.set(flag ? 2 : 1);
return this;
}
}
private GeckoRuntime mRuntime;
......@@ -502,6 +513,7 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
/* package */ final Pref<Boolean> mHttpsOnlyPrivateMode =
new Pref<Boolean>("dom.security.https_only_mode_pbm", false);
/* package */ final Pref<Integer> mProcessCount = new Pref<>("dom.ipc.processCount", 2);
/* package */ final Pref<Integer> mSpoofEnglish = new Pref<>("privacy.spoof_english", 0);
/* package */ int mPreferredColorScheme = COLOR_SCHEME_SYSTEM;
......@@ -1248,6 +1260,26 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
/**
* Get whether we should spoof locale to English for webpages.
*
* @return Whether we should spoof locale to English for webpages.
*/
public boolean getSpoofEnglish() {
return mSpoofEnglish.get() == 2;
}
/**
* Set whether we should spoof locale to English for webpages.
*
* @param flag A flag determining whether we should locale to English for webpages.
* @return This GeckoRuntimeSettings instance.
*/
public @NonNull GeckoRuntimeSettings setSpoofEnglish(final boolean flag) {
mSpoofEnglish.commit(flag ? 2 : 1);
return this;
}
@Override // Parcelable
public void writeToParcel(final Parcel out, final int flags) {
super.writeToParcel(out, flags);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment