Bug 1353699 <menulist> for default font should use onsyncfrompreference r?jaws draft
authorMasayuki Nakano <masayuki@d-toybox.com>
Thu, 06 Apr 2017 10:04:04 +0900
changeset 556556 dd7fd86fb7f3f8cfc94e1f493d218c5694f21fa5
parent 555725 b043233ec04f06768d59dcdfb9e928142280f3cc
child 622918 9e95a67c94820c3175460a3f76c7dbeade81058e
push id52579
push usermasayuki@d-toybox.com
push dateThu, 06 Apr 2017 01:30:34 +0000
reviewersjaws
bugs1353699
milestone55.0a1
Bug 1353699 <menulist> for default font should use onsyncfrompreference r?jaws When font.name.*.* is set to false, "value" attribute of <preference> is removed. Then, <preference>.setElementValue() with an element which doesn't have onsyncfrompreference tries to set null. Then, <menulist> selects nothing. In such case, <menulist> should select the item whose value is "". If there is onsyncfrompreference attribute and it returns empty string, <preference>.setElementValue() works as expected. MozReview-Commit-ID: 54KIe3JxwyA
browser/components/preferences/in-content-old/content.js
browser/components/preferences/in-content-old/content.xul
browser/components/preferences/in-content/main.js
browser/components/preferences/in-content/main.xul
--- a/browser/components/preferences/in-content-old/content.js
+++ b/browser/components/preferences/in-content-old/content.js
@@ -22,20 +22,16 @@ var gContentPane = {
   init() {
     function setEventListener(aId, aEventType, aCallback) {
       document.getElementById(aId)
               .addEventListener(aEventType, aCallback.bind(gContentPane));
     }
 
     // Initializes the fonts dropdowns displayed in this pane.
     this._rebuildFonts();
-    var menulist = document.getElementById("defaultFont");
-    if (menulist.selectedIndex == -1) {
-      menulist.value = FontBuilder.readFontSelection(menulist);
-    }
 
     // Show translation preferences if we may:
     const prefName = "browser.translation.ui.show";
     if (Services.prefs.getBoolPref(prefName)) {
       let row = document.getElementById("translationBox");
       row.removeAttribute("hidden");
       // Showing attribution only for Bing Translator.
       Components.utils.import("resource:///modules/translation/Translation.jsm");
--- a/browser/components/preferences/in-content-old/content.xul
+++ b/browser/components/preferences/in-content-old/content.xul
@@ -124,17 +124,17 @@
     <columns>
       <column flex="1"/>
       <column/>
     </columns>
     <rows id="fontsRows">
       <row id="fontRow">
         <hbox align="center">
           <label control="defaultFont" accesskey="&defaultFont.accesskey;">&defaultFont.label;</label>
-          <menulist id="defaultFont" delayprefsave="true"/>
+          <menulist id="defaultFont" delayprefsave="true" onsyncfrompreference="return FontBuilder.readFontSelection(this);"/>
           <label id="defaultFontSizeLabel" control="defaultFontSize" accesskey="&defaultSize.accesskey;">&defaultSize.label;</label>
           <menulist id="defaultFontSize" delayprefsave="true">
             <menupopup>
               <menuitem value="9" label="9"/>
               <menuitem value="10" label="10"/>
               <menuitem value="11" label="11"/>
               <menuitem value="12" label="12"/>
               <menuitem value="13" label="13"/>
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -139,20 +139,16 @@ var gMainPane = {
       gMainPane._rebuildFonts);
     setEventListener("advancedFonts", "command",
       gMainPane.configureFonts);
     setEventListener("colors", "command",
       gMainPane.configureColors);
 
     // Initializes the fonts dropdowns displayed in this pane.
     this._rebuildFonts();
-    var menulist = document.getElementById("defaultFont");
-    if (menulist.selectedIndex == -1) {
-      menulist.value = FontBuilder.readFontSelection(menulist);
-    }
 
     // Show translation preferences if we may:
     const prefName = "browser.translation.ui.show";
     if (Services.prefs.getBoolPref(prefName)) {
       let row = document.getElementById("translationBox");
       row.removeAttribute("hidden");
       // Showing attribution only for Bing Translator.
       Components.utils.import("resource:///modules/translation/Translation.jsm");
--- a/browser/components/preferences/in-content/main.xul
+++ b/browser/components/preferences/in-content/main.xul
@@ -466,17 +466,17 @@
     <columns>
       <column flex="1"/>
       <column/>
     </columns>
     <rows id="fontsRows">
       <row id="fontRow">
         <hbox align="center">
           <label control="defaultFont" accesskey="&defaultFont.accesskey;">&defaultFont.label;</label>
-          <menulist id="defaultFont" delayprefsave="true"/>
+          <menulist id="defaultFont" delayprefsave="true" onsyncfrompreference="return FontBuilder.readFontSelection(this);"/>
           <label id="defaultFontSizeLabel" control="defaultFontSize" accesskey="&defaultSize.accesskey;">&defaultSize.label;</label>
           <menulist id="defaultFontSize" delayprefsave="true">
             <menupopup>
               <menuitem value="9" label="9"/>
               <menuitem value="10" label="10"/>
               <menuitem value="11" label="11"/>
               <menuitem value="12" label="12"/>
               <menuitem value="13" label="13"/>