Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gk/tor-browser
  • peterstory/tor-browser
  • sanketh/tor-browser
  • acat/tor-browser
  • sysrqb/tor-browser
  • boklm/tor-browser
  • dan/tor-browser
  • fabrizio/tor-browser
  • victorvw/tor-browser
  • aguestuser/tor-browser
  • WofWca/tor-browser
  • p13dz/tor-browser
  • mwolfe/tor-browser
  • tpo/applications/tor-browser
  • brade/tor-browser
  • pierov/tor-browser
  • ma1/tor-browser
  • JeremyRand/tor-browser
  • henry/tor-browser
  • msimonelli/tor-browser
  • cypherpunks1/tor-browser
  • blackZwork/tor-browser
  • starlingroot/tor-browser
  • cohosh/tor-browser
  • t-m-w/tor-browser
  • trinity-1686a/tor-browser
  • HHN/tor-browser
  • emmapeel/tor-browser
  • Achintya_Sharma/tor-browser
  • guest475646844/tor-browser
  • Mima/tor-browser
  • morgan/tor-browser
  • clairehurst/tor-browser
  • NoisyCoil/tor-browser
  • gus/tor-browser
  • Francewhoa/tor-browser
  • novialriptide/tor-browser
  • jwilde/tor-browser
  • brizental/tor-browser
  • ourhopeforfreedom/tor-browser
  • onyinyang/tor-browser
  • Noino/tor-browser
  • murmelurmel/tor-browser
43 results
Show changes
Commits on Source (2)
......@@ -22,7 +22,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Locale;
import org.mozilla.gecko.EventDispatcher;
import org.mozilla.gecko.GeckoSystemStateListener;
......@@ -455,6 +456,16 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
public @NonNull Builder supportedLocales(final Collection<String> locales) {
getSettings().mSupportedLocales.clear();
for (String tag : locales) {
Locale locale = Locale.forLanguageTag(tag);
getSettings().mSupportedLocales.put(locale, locale);
getSettings().mSupportedLocales.put(new Locale(locale.getLanguage()), locale);
}
return this;
}
/**
* Sets whether we should spoof locale to English for webpages.
*
......@@ -539,6 +550,7 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
/* package */ int mScreenHeightOverride;
/* package */ Class<? extends Service> mCrashHandler;
/* package */ String[] mRequestedLocales;
/* package */ HashMap<Locale, Locale> mSupportedLocales = new HashMap<>();
/* package */ RuntimeTelemetry.Proxy mTelemetryProxy;
/**
......@@ -595,6 +607,7 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
mRequestedLocales = settings.mRequestedLocales;
mConfigFilePath = settings.mConfigFilePath;
mTelemetryProxy = settings.mTelemetryProxy;
mSupportedLocales = settings.mSupportedLocales;
}
/* package */ void commit() {
......@@ -803,30 +816,39 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
EventDispatcher.getInstance().dispatch("GeckoView:SetLocale", data);
}
private Locale getLocaleIfSupported(String tag) {
Locale exact = Locale.forLanguageTag(tag);
if (mSupportedLocales.containsKey(exact)) {
return exact;
}
Locale fallback = new Locale(exact.getLanguage());
return mSupportedLocales.get(fallback);
}
private String computeAcceptLanguages() {
final ArrayList<String> locales = new ArrayList<String>();
// In Desktop, these are defined in the `intl.accept_languages` localized property.
// At some point we should probably use the same values here, but for now we use a simple
// strategy which will hopefully result in reasonable acceptLanguage values.
if (mRequestedLocales != null && mRequestedLocales.length > 0) {
String locale = mRequestedLocales[0].toLowerCase(Locale.ROOT);
// No need to include `en-us` twice.
if (!locale.equals("en-us")) {
locales.add(locale);
if (locale.contains("-")) {
String lang = locale.split("-")[0];
// No need to include `en` twice.
if (!lang.equals("en")) {
locales.add(lang);
}
Locale locale = null;
if (mRequestedLocales != null) {
for (String tag : mRequestedLocales) {
locale = getLocaleIfSupported(tag);
if (locale != null) {
break;
}
}
}
locales.add("en-us");
locales.add("en");
return TextUtils.join(",", locales);
if (locale == null) {
for (final String tag : getDefaultLocales()) {
locale = getLocaleIfSupported(tag);
if (locale != null) {
break;
}
}
}
String acceptLanguages = locale != null ? locale.toString().replace('_', '-') : "en-US";
if (acceptLanguages.equals("en-US")) {
// For consistency with spoof English.
acceptLanguages += ", en";
}
return acceptLanguages;
}
private static String[] getDefaultLocales() {
......