Bug 1249434 - Add a "Show web fonts" pref in advanced settings. r=jchen draft
authorMargaret Leibovic <margaret.leibovic@gmail.com>
Mon, 22 Feb 2016 16:37:48 -0800
changeset 333227 a006f4c157b8a0ed2fd73242cb3efec6795b054a
parent 333223 996485ab7306b5912dac387422a005651a01cea4
child 514673 cac1d9e13c1ac01a165cb521a5de072c6f0e5929
push id11300
push usermleibovic@mozilla.com
push dateTue, 23 Feb 2016 00:38:44 +0000
reviewersjchen
bugs1249434
milestone47.0a1
Bug 1249434 - Add a "Show web fonts" pref in advanced settings. r=jchen MozReview-Commit-ID: EJl4qh0mOr4
mobile/android/base/java/org/mozilla/gecko/PrefsHelper.java
mobile/android/base/locales/en-US/android_strings.dtd
mobile/android/base/resources/xml/preferences_advanced.xml
mobile/android/base/strings.xml.in
--- 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>