Bug 1249434 - Add a "Show web fonts" pref in advanced settings. r=jchen
MozReview-Commit-ID: EJl4qh0mOr4
--- a/mobile/android/base/java/org/mozilla/gecko/PrefsHelper.java
+++ b/mobile/android/base/java/org/mozilla/gecko/PrefsHelper.java
@@ -21,23 +21,25 @@ import java.util.List;
* Helper class to get/set gecko prefs.
*/
public final class PrefsHelper {
private static final String LOGTAG = "GeckoPrefsHelper";
// Map pref name to ArrayList for multiple observers or PrefHandler for single observer.
private static final SimpleArrayMap<String, Object> OBSERVERS = new SimpleArrayMap<>();
private static final HashSet<String> INT_TO_STRING_PREFS = new HashSet<>(8);
+ private static final HashSet<String> INT_TO_BOOL_PREFS = new HashSet<>(2);
static {
INT_TO_STRING_PREFS.add("browser.chrome.titlebarMode");
INT_TO_STRING_PREFS.add("network.cookie.cookieBehavior");
INT_TO_STRING_PREFS.add("font.size.inflation.minTwips");
INT_TO_STRING_PREFS.add("home.sync.updateMode");
INT_TO_STRING_PREFS.add("browser.image_blocking");
+ INT_TO_BOOL_PREFS.add("browser.display.use_document_fonts");
}
@WrapForJNI
private static final int PREF_INVALID = -1;
@WrapForJNI
private static final int PREF_FINISH = 0;
@WrapForJNI
private static final int PREF_BOOL = 1;
@@ -84,16 +86,19 @@ public final class PrefsHelper {
String strVal = null;
if (INT_TO_STRING_PREFS.contains(pref)) {
// When sending to Java, we normalized special preferences that use integers
// and strings to represent booleans. Here, we convert them back to their
// actual types so we can store them.
type = PREF_INT;
intVal = Integer.parseInt(String.valueOf(value));
+ } else if (INT_TO_BOOL_PREFS.contains(pref)) {
+ type = PREF_INT;
+ intVal = (Boolean) value ? 1 : 0;
} else if (value instanceof Boolean) {
type = PREF_BOOL;
boolVal = (Boolean) value;
} else if (value instanceof Integer) {
type = PREF_INT;
intVal = (Integer) value;
} else {
type = PREF_STRING;
@@ -211,16 +216,21 @@ public final class PrefsHelper {
// directly representing the value. Since the Java UI uses the type to determine
// which ui elements to show and how to handle them, we need to normalize these
// preferences to the correct type.
if (INT_TO_STRING_PREFS.contains(pref)) {
type = PREF_STRING;
strVal = String.valueOf(intVal);
}
+ if (INT_TO_BOOL_PREFS.contains(pref)) {
+ type = PREF_BOOL;
+ boolVal = intVal == 1;
+ }
+
switch (type) {
case PREF_FINISH:
handler.finish();
return;
case PREF_BOOL:
handler.prefValue(pref, boolVal);
return;
case PREF_INT:
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -225,16 +225,18 @@
<!ENTITY pref_cookies_not_accept_foreign "Enabled, excluding 3rd party">
<!ENTITY pref_cookies_disabled "Disabled">
<!ENTITY pref_tap_to_load_images_title2 "Show images">
<!ENTITY pref_tap_to_load_images_enabled "Always">
<!ENTITY pref_tap_to_load_images_data "Only over Wi-Fi">
<!ENTITY pref_tap_to_load_images_disabled2 "Blocked">
+<!ENTITY pref_show_web_fonts "Show web fonts">
+
<!ENTITY pref_tracking_protection_title "Tracking protection">
<!ENTITY pref_tracking_protection_summary3 "Enabled in Private Browsing">
<!ENTITY pref_donottrack_title "Do not track">
<!ENTITY pref_donottrack_summary "&brandShortName; will tell sites that you do not want to be tracked">
<!ENTITY pref_tracking_protection_enabled "Enabled">
<!ENTITY pref_tracking_protection_enabled_pb "Enabled in Private Browsing">
<!ENTITY pref_tracking_protection_disabled "Disabled">
--- a/mobile/android/base/resources/xml/preferences_advanced.xml
+++ b/mobile/android/base/resources/xml/preferences_advanced.xml
@@ -33,16 +33,19 @@
android:persistent="true" />
<ListPreference android:key="browser.image_blocking"
android:title="@string/pref_tap_to_load_images_title2"
android:entries="@array/pref_browser_image_blocking_entries"
android:entryValues="@array/pref_browser_image_blocking_values"
android:persistent="false" />
+ <CheckBoxPreference android:key="browser.display.use_document_fonts"
+ android:title="@string/pref_show_web_fonts" />
+
<ListPreference android:key="plugin.enable"
android:title="@string/pref_plugins"
android:entries="@array/pref_plugins_entries"
android:entryValues="@array/pref_plugins_values"
android:persistent="false" />
<CheckBoxPreference android:key="media.autoplay.enabled"
android:title="@string/pref_media_autoplay_enabled"
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -209,16 +209,18 @@
<string name="pref_cookies_not_accept_foreign">&pref_cookies_not_accept_foreign;</string>
<string name="pref_cookies_disabled">&pref_cookies_disabled;</string>
<string name="pref_tap_to_load_images_title2">&pref_tap_to_load_images_title2;</string>
<string name="pref_tap_to_load_images_enabled">&pref_tap_to_load_images_enabled;</string>
<string name="pref_tap_to_load_images_data">&pref_tap_to_load_images_data;</string>
<string name="pref_tap_to_load_images_disabled2">&pref_tap_to_load_images_disabled2;</string>
+ <string name="pref_show_web_fonts">&pref_show_web_fonts;</string>
+
<string name="pref_tracking_protection_title">&pref_tracking_protection_title;</string>
<string name="pref_tracking_protection_summary">&pref_tracking_protection_summary3;</string>
<string name="pref_donottrack_title">&pref_donottrack_title;</string>
<string name="pref_donottrack_summary">&pref_donottrack_summary;</string>
<string name="pref_tracking_protection_enabled">&pref_tracking_protection_enabled;</string>
<string name="pref_tracking_protection_enabled_pb">&pref_tracking_protection_enabled_pb;</string>
<string name="pref_tracking_protection_disabled">&pref_tracking_protection_disabled;</string>