Bug 1563124 - Use HTML input instead of XUL textbox in mail/components/preferences/. r=mkmelin
authorAlessandro Castellani <alessandro@thunderbird.net>
Tue, 10 Sep 2019 08:41:17 -0700
changeset 35903 a466dc8e08635b376e7177714c81a31fc3273f0c
parent 35902 aa6de4b5b0db0aa4f5b7ad6a6415900c280b9dd9
child 35904 4e5fad04693c7317198a4e6f869ee36c8bd65c79
push id2511
push userclokep@gmail.com
push dateMon, 21 Oct 2019 20:28:27 +0000
treeherdercomm-beta@67169a456144 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmkmelin
bugs1563124
Bug 1563124 - Use HTML input instead of XUL textbox in mail/components/preferences/. r=mkmelin
calendar/base/content/dialogs/calendar-print-dialog.xul
calendar/base/content/dialogs/calendar-properties-dialog.xul
calendar/base/content/dialogs/calendar-subscriptions-dialog.xul
calendar/base/content/dialogs/calendar-summary-dialog.xul
mail/components/addrbook/content/abEditCardDialog.xul
mail/components/preferences/aboutPreferences.xul
mail/components/preferences/applicationManager.xul
mail/components/preferences/chat.inc.xul
mail/components/preferences/chat.js
mail/components/preferences/connection.xul
mail/components/preferences/cookies.xul
mail/components/preferences/general.inc.xul
mail/components/preferences/general.js
mail/components/preferences/permissions.xul
mail/themes/linux/jar.mn
mail/themes/linux/mail/filefield.css
mail/themes/linux/mail/input-fields.css
mail/themes/osx/jar.mn
mail/themes/osx/mail/filefield.css
mail/themes/osx/mail/input-fields.css
mail/themes/shared/mail/incontentprefs/preferences.css
mail/themes/shared/mail/input-fields.css
mail/themes/windows/jar.mn
mail/themes/windows/mail/filefield.css
mail/themes/windows/mail/input-fields.css
--- a/calendar/base/content/dialogs/calendar-print-dialog.xul
+++ b/calendar/base/content/dialogs/calendar-print-dialog.xul
@@ -2,17 +2,17 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <?xml-stylesheet type="text/css" href="chrome://global/skin/global.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar-common/skin/widgets/minimonth.css"?>
 <?xml-stylesheet type="text/css" href="chrome://messenger/skin/messenger.css"?>
 <?xml-stylesheet type="text/css" href="chrome://lightning-common/skin/datetimepickers.css"?>
-<?xml-stylesheet type="text/css" href="chrome://messenger/skin/shared/input-fields.css"?>
+<?xml-stylesheet type="text/css" href="chrome://messenger/skin/input-fields.css"?>
 <?xml-stylesheet type="text/css" href="chrome://messenger/skin/shared/grid-layout.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar/content/calendar-print-dialog.css"?>
 
 <!DOCTYPE dialog [
     <!ENTITY % dtd1 SYSTEM "chrome://calendar/locale/global.dtd" > %dtd1;
     <!ENTITY % dtd2 SYSTEM "chrome://calendar/locale/calendar.dtd" > %dtd2;
 ]>
 
--- a/calendar/base/content/dialogs/calendar-properties-dialog.xul
+++ b/calendar/base/content/dialogs/calendar-properties-dialog.xul
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
 <?xml-stylesheet href="chrome://calendar-common/skin/calendar-properties-dialog.css" type="text/css"?>
-<?xml-stylesheet href="chrome://messenger/skin/shared/input-fields.css" type="text/css"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css" type="text/css"?>
 
 <!DOCTYPE dialog
 [
     <!ENTITY % dtd1 SYSTEM "chrome://calendar/locale/global.dtd" > %dtd1;
     <!ENTITY % dtd2 SYSTEM "chrome://calendar/locale/calendar.dtd" > %dtd2;
     <!ENTITY % dtd3 SYSTEM "chrome://calendar/locale/calendarCreation.dtd" > %dtd3;
 ]>
 
--- a/calendar/base/content/dialogs/calendar-subscriptions-dialog.xul
+++ b/calendar/base/content/dialogs/calendar-subscriptions-dialog.xul
@@ -2,17 +2,17 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/.
 -->
 
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
 <?xml-stylesheet href="chrome://calendar/content/calendar-subscriptions-dialog.css" type="text/css"?>
 <?xml-stylesheet href="chrome://calendar/skin/calendar-subscriptions-dialog.css" type="text/css"?>
-<?xml-stylesheet href="chrome://messenger/skin/shared/input-fields.css" type="text/css"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css" type="text/css"?>
 
 <!DOCTYPE dialog
 [
     <!ENTITY % dtd1 SYSTEM "chrome://calendar/locale/calendar-subscriptions-dialog.dtd" >  %dtd1;
 ]>
 
 <dialog
   id="calendar-subscriptions-dialog"
--- a/calendar/base/content/dialogs/calendar-summary-dialog.xul
+++ b/calendar/base/content/dialogs/calendar-summary-dialog.xul
@@ -2,17 +2,17 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/.
 -->
 
 <?xml-stylesheet type="text/css" href="chrome://global/skin/global.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar-common/skin/calendar-alarms.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar-common/skin/calendar-attendees.css"?>
-<?xml-stylesheet type="text/css" href="chrome://messenger/skin/shared/input-fields.css"?>
+<?xml-stylesheet type="text/css" href="chrome://messenger/skin/input-fields.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar/skin/calendar-event-dialog.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar-common/skin/dialogs/calendar-event-dialog.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar/content/calendar-bindings.css"?>
 <?xml-stylesheet type="text/css" href="chrome://messenger/skin/primaryToolbar.css"?>
 <?xml-stylesheet type="text/css" href="chrome://messenger/skin/messenger.css"?>
 <?xml-stylesheet type="text/css" href="chrome://calendar/content/calendar-summary-dialog.css"?>
 
 <!DOCTYPE dialog [
--- a/mail/components/addrbook/content/abEditCardDialog.xul
+++ b/mail/components/addrbook/content/abEditCardDialog.xul
@@ -1,15 +1,14 @@
 <?xml version="1.0"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-<?xml-stylesheet href="chrome://messenger/skin/filefield.css" type="text/css"?>
 <?xml-stylesheet href="chrome://messenger/skin/addressbook/cardDialog.css" type="text/css"?>
 
 <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/abCard.dtd">
 
 <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   xmlns:html="http://www.w3.org/1999/xhtml"
   id="abcardWindow"
   icon="abcardWindow"
--- a/mail/components/preferences/aboutPreferences.xul
+++ b/mail/components/preferences/aboutPreferences.xul
@@ -1,18 +1,18 @@
 <?xml version="1.0"?>
 # -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 <?xml-stylesheet href="chrome://global/skin/global.css"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css"?>
 <?xml-stylesheet href="chrome://messenger/content/messenger.css"?>
 <?xml-stylesheet href="chrome://messenger/content/preferences/handlers.css"?>
-<?xml-stylesheet href="chrome://messenger/skin/filefield.css"?>
 <?xml-stylesheet href="chrome://messenger/skin/preferences/applications.css"?>
 <?xml-stylesheet href="chrome://global/skin/in-content/common.css"?>
 <?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css"?>
 
 #include doctype.inc.xul
 
 <preftab id="MailPreferences" flex="1"
          windowtype="Mail:Preferences"
@@ -29,16 +29,18 @@
 #else
          title="&prefWindow.titleMAC;">
 #endif
 #endif
   <script src="chrome://global/content/preferencesBindings.js"/>
 #ifdef MOZ_UPDATER
   <script src="chrome://messenger/content/aboutDialog-appUpdater.js"/>
 #endif
+  <script src="chrome://global/content/globalOverlay.js"/>
+  <script src="chrome://global/content/editMenuOverlay.js"/>
 
   <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
   <stringbundle id="bundlePreferences"
                 src="chrome://messenger/locale/preferences/preferences.properties"/>
   <linkset>
     <html:link rel="localization" href="branding/brand.ftl"/>
     <html:link rel="localization" href="messenger/preferences/preferences.ftl"/>
     <html:link rel="localization" href="messenger/preferences/fonts.ftl"/>
--- a/mail/components/preferences/applicationManager.xul
+++ b/mail/components/preferences/applicationManager.xul
@@ -1,19 +1,21 @@
 <?xml version="1.0"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <?xml-stylesheet href="chrome://global/skin/"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css"?>
 
 <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/preferences/applicationManager.dtd">
 
 <dialog id="appManager"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        xmlns:html="http://www.w3.org/1999/xhtml"
         buttons="accept,cancel"
         onload="gAppManagerDialog.init();"
         title="&appManager.title;"
         style="&appManager.style;"
         persist="screenX screenY">
 
   <script src="chrome://global/content/preferencesBindings.js"/>
   <script src="chrome://messenger/content/preferences/general.js"/>
@@ -49,11 +51,11 @@
               accesskey="&remove.accesskey;"
               command="cmd_delete"/>
       <spacer flex="1"/>
     </vbox>
   </hbox>
   <vbox id="appDetails">
     <separator class="thin"/>
     <label id="appType"/>
-    <textbox id="appLocation" readonly="true" class="plain"/>
+    <html:input id="appLocation" type="text" readonly="readonly"/>
   </vbox>
 </dialog>
--- a/mail/components/preferences/chat.inc.xul
+++ b/mail/components/preferences/chat.inc.xul
@@ -43,19 +43,20 @@
           <hbox>
             <checkbox id="autoAway"
                       label="&andSetStatusToAway.label;"
                       class="idle-reporting-enabled"
                       accesskey="&andSetStatusToAway.accesskey;"
                       preference="messenger.status.awayWhenIdle"/>
             <spacer flex="1"/>
           </hbox>
-          <textbox id="defaultIdleAwayMessage"
-                   class="idle-reporting-enabled indent"
-                   preference="messenger.status.defaultIdleAwayMessage"/>
+          <html:input id="defaultIdleAwayMessage"
+                      type="text"
+                      class="idle-reporting-enabled indent"
+                      preference="messenger.status.defaultIdleAwayMessage"/>
         </vbox>
     </groupbox>
 
     <groupbox data-category="paneChat">
       <label><html:h2 data-l10n-id="chat-notifications-title"/></label>
       <hbox>
         <checkbox id="sendTyping"
                   label="&sendTyping.label;"
@@ -114,31 +115,28 @@
         </hbox>
         <hbox>
           <radio id="chatSoundCustom"
                  label="&customsound.label;"
                  value="1"
                  accesskey="&customsound.accesskey;"/>
           <spacer flex="1"/>
         </hbox>
-        <hbox align="center">
-          <textbox id="chatSoundUrlLocation"
-                   type="filefield"
-                   class="indent"
-                   readonly="true"
-                   preference="mail.chat.play_sound.url"
-                   preference-editable="true"
-                   aria-labelledby="chatSoundCustom"
-                   flex="1"/>
+        <hbox align="center" class="input-container">
+          <html:input id="chatSoundUrlLocation"
+                      type="text"
+                      class="input-filefield indent"
+                      readonly="readonly"
+                      preference="mail.chat.play_sound.url"
+                      preference-editable="true"
+                      aria-labelledby="chatSoundCustom"/>
           <button id="browseForChatSound"
                   label="&browse.label;"
                   accesskey="&browse.accesskey;"
-                  oncommand="gChatPane.browseForSoundFile();">
-            <observes element="chatSoundUrlLocation" attribute="disabled"/>
-          </button>
+                  oncommand="gChatPane.browseForSoundFile();"/>
         </hbox>
       </radiogroup>
     </groupbox>
 
     <hbox id="chatPaneStylingCategory"
           class="subcategory"
           data-category="paneChat">
       <html:h1 data-l10n-id="chat-pane-styling-header"/>
--- a/mail/components/preferences/chat.js
+++ b/mail/components/preferences/chat.js
@@ -180,20 +180,21 @@ var gChatPane = {
       this.updatePlaySound();
     });
   },
 
   updatePlaySound() {
     let soundsEnabled = Preferences.get("mail.chat.play_sound").value;
     let soundTypeValue = Preferences.get("mail.chat.play_sound.type").value;
     let soundUrlLocation = Preferences.get("mail.chat.play_sound.url").value;
+    let soundDisabled = !soundsEnabled || soundTypeValue != 1;
 
     document.getElementById("chatSoundType").disabled = !soundsEnabled;
-    document.getElementById("chatSoundUrlLocation").disabled =
-      !soundsEnabled || soundTypeValue != 1;
+    document.getElementById("chatSoundUrlLocation").disabled = soundDisabled;
+    document.getElementById("browseForChatSound").disabled = soundDisabled;
     document.getElementById("playChatSound").disabled =
       !soundsEnabled || (!soundUrlLocation && soundTypeValue != 0);
   },
 };
 
 Preferences.get("messenger.status.reportIdle").on(
   "change",
   gChatPane.updateDisabledState
--- a/mail/components/preferences/connection.xul
+++ b/mail/components/preferences/connection.xul
@@ -4,16 +4,17 @@
    - This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/preferences/connection.dtd">
 
 <?xml-stylesheet href="chrome://global/skin/"?>
 <?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css"?>
 
 <dialog id="ConnectionsDialog" type="child"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns:html="http://www.w3.org/1999/xhtml"
         title="&connectionsDialog.title;"
         dlgbuttons="accept,cancel"
         onbeforeaccept="return gConnectionsDialog.beforeAccept();"
         onload="gConnectionsDialog.checkForSystemProxy();"
@@ -46,70 +47,76 @@
           <column/>
           <column flex="1"/>
         </columns>
         <rows>
           <row align="center">
             <hbox pack="end">
               <label value="&http.label;" accesskey="&http.accesskey;" control="networkProxyHTTP"/>
             </hbox>
-            <hbox align="center">
-              <textbox id="networkProxyHTTP" flex="1" class="uri-element"
-                       preference="network.proxy.http"/>
+            <hbox align="center" class="input-container">
+              <html:input id="networkProxyHTTP"
+                          type="text"
+                          preference="network.proxy.http"/>
               <label value="&HTTPport.label;" accesskey="&HTTPport.accesskey;" control="networkProxyHTTP_Port"/>
               <html:input id="networkProxyHTTP_Port" type="number" class="size5" max="65535"
                           preference="network.proxy.http_port"/>
             </hbox>
           </row>
           <row>
             <hbox/>
             <hbox>
               <checkbox id="shareAllProxies" label="&shareproxy.label;" accesskey="&shareproxy.accesskey;"
-                        preference="network.proxy.share_proxy_settings"/>
+                        preference="network.proxy.share_proxy_settings" class="align-no-label"/>
             </hbox>
           </row>
           <row align="center">
             <hbox pack="end">
               <label value="&ssl.label;" accesskey="&ssl.accesskey;" control="networkProxySSL"/>
             </hbox>
-            <hbox align="center">
-              <textbox id="networkProxySSL" flex="1" class="uri-element"
-                       preference="network.proxy.ssl"/>
+            <hbox align="center" class="input-container">
+              <html:input id="networkProxySSL"
+                          type="text"
+                          preference="network.proxy.ssl"/>
               <label value="&SSLport.label;" accesskey="&SSLport.accesskey;" control="networkProxySSL_Port"/>
               <html:input id="networkProxySSL_Port" type="number" class="size5" max="65535"
                           preference="network.proxy.ssl_port"/>
             </hbox>
           </row>
           <row align="center">
             <hbox pack="end">
               <label value="&socks.label;" accesskey="&socks.accesskey;" control="networkProxySOCKS"/>
             </hbox>
-            <hbox align="center">
-              <textbox id="networkProxySOCKS" flex="1" class="uri-element"
-                       preference="network.proxy.socks"/>
+            <hbox align="center" class="input-container">
+              <html:input id="networkProxySOCKS"
+                          type="text"
+                          preference="network.proxy.socks"/>
               <label value="&SOCKSport.label;" accesskey="&SOCKSport.accesskey;" control="networkProxySOCKS_Port"/>
               <html:input id="networkProxySOCKS_Port" type="number" class="size5" max="65535"
                           preference="network.proxy.socks_port"/>
             </hbox>
           </row>
           <row>
             <spacer/>
-            <radiogroup id="networkProxySOCKSVersion" orient="horizontal"
+            <radiogroup id="networkProxySOCKSVersion"
+                        orient="horizontal"
+                        class="align-no-label"
                         preference="network.proxy.socks_version">
               <radio id="networkProxySOCKSVersion4" value="4" label="&socks4.label;" accesskey="&socks4.accesskey;" />
               <radio id="networkProxySOCKSVersion5" value="5" label="&socks5.label;" accesskey="&socks5.accesskey;" />
             </radiogroup>
           </row>
         </rows>
       </grid>
       <radio value="2" label="&autoTypeRadio.label;" accesskey="&autoTypeRadio.accesskey;"/>
-      <hbox class="indent" flex="1" align="center">
-        <textbox id="networkProxyAutoconfigURL" flex="1" class="uri-element"
-                 preference="network.proxy.autoconfig_url"
-                 oninput="gConnectionsDialog.updateReloadButton();"/>
+      <hbox class="indent input-container" flex="1" align="center">
+        <html:input id="networkProxyAutoconfigURL"
+                    type="url"
+                    preference="network.proxy.autoconfig_url"
+                    oninput="gConnectionsDialog.updateReloadButton();"/>
         <button id="autoReload" label="&reload.label;" accesskey="&reload.accesskey;"
                 oncommand="gConnectionsDialog.reloadPAC();"
                 preference="pref.advanced.proxies.disable_button.reload"/>
       </hbox>
     </radiogroup>
   </groupbox>
   <separator class="thin"/>
   <label value="&noproxy.label;"
@@ -138,20 +145,24 @@
       <hbox>
         <label id="networkDnsOverHttpsResolverChoicesLabel"
                data-l10n-id="connection-dns-over-https-url-resolver"
                control="networkDnsOverHttpsResolverChoices"/>
       </hbox>
       <menulist id="networkDnsOverHttpsResolverChoices" flex="1"
                 oncommand="gConnectionsDialog.updateDnsOverHttpsUI()"/>
     </hbox>
-    <hbox align="center" id="customDnsOverHttpsContainer" style="visibility: hidden;">
+    <hbox id="customDnsOverHttpsContainer"
+          align="center"
+          class="input-container"
+          style="visibility: hidden;">
       <hbox>
         <label id="networkCustomDnsOverHttpsInputLabel"
                data-l10n-id="connection-dns-over-https-custom-label"
                control="networkCustomDnsOverHttpsInput"/>
       </hbox>
-      <textbox id="networkCustomDnsOverHttpsInput" flex="1"
-               preference="network.trr.custom_uri"/>
+      <html:input id="networkCustomDnsOverHttpsInput"
+                  type="url"
+                  preference="network.trr.custom_uri"/>
     </hbox>
   </vbox>
   <separator/>
 </dialog>
--- a/mail/components/preferences/cookies.xul
+++ b/mail/components/preferences/cookies.xul
@@ -2,27 +2,30 @@
 
 # -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 <?xml-stylesheet href="chrome://global/skin/"?>
 <?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css"?>
 
 <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/preferences/cookies.dtd" >
 
 <window id="CookiesDialog" windowtype="mailnews:cookies"
         class="windowDialog" title="&window.title;"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml"
         style="width: &window.width;;"
         onload="gCookiesWindow.init();"
         onunload="gCookiesWindow.uninit();"
         persist="screenX screenY width height">
 
+  <script src="chrome://global/content/globalOverlay.js"/>
+  <script src="chrome://global/content/editMenuOverlay.js"/>
   <script src="chrome://messenger/content/preferences/cookies.js"/>
 
   <stringbundle id="bundlePreferences"
                 src="chrome://messenger/locale/preferences/preferences.properties"/>
 
   <keyset>
     <key key="&windowClose.key;" modifiers="accel" oncommand="window.close();"/>
     <key key="&focusSearch1.key;" modifiers="accel" oncommand="gCookiesWindow.focusFilterBox();"/>
@@ -74,23 +77,23 @@
         <vbox flex="1" pack="center" align="end">
           <label id="expiresLabel" control="expires" value="&props.expires.label;"/>
         </vbox>
         <vbox id="userContextLabel" flex="1" pack="center" align="end">
           <label control="userContext" value="&props.container.label;"/>
         </vbox>
       </vbox>
       <vbox flex="1">
-        <textbox id="name" readonly="true" class="plain"/>
-        <textbox id="value" readonly="true" class="plain"/>
-        <textbox id="host" readonly="true" class="plain"/>
-        <textbox id="path" readonly="true" class="plain"/>
-        <textbox id="isSecure" readonly="true" class="plain"/>
-        <textbox id="expires" readonly="true" class="plain"/>
-        <textbox id="userContext" readonly="true" class="plain"/>
+        <html:input id="name" type="text" readonly="readonly"/>
+        <html:input id="value" type="text" readonly="readonly"/>
+        <html:input id="host" type="text" readonly="readonly"/>
+        <html:input id="path" type="text" readonly="readonly"/>
+        <html:input id="isSecure" type="text" readonly="readonly"/>
+        <html:input id="expires" type="text" readonly="readonly"/>
+        <html:input id="userContext" type="text" readonly="readonly"/>
       </vbox>
     </hbox>
   </vbox>
   <hbox align="end">
     <hbox class="actionButtons" flex="1">
       <button id="removeSelectedCookies" disabled="true" icon="remove"
               label="&button.removecookie.label;" accesskey="&button.removecookie.accesskey;"
               oncommand="gCookiesWindow.deleteCookie();"/>
--- a/mail/components/preferences/general.inc.xul
+++ b/mail/components/preferences/general.inc.xul
@@ -36,23 +36,25 @@
 
     <groupbox data-category="paneGeneral">
       <label><html:h2>&messengerStartPage.label;</html:h2></label>
         <hbox align="start">
           <checkbox id="mailnewsStartPageEnabled" label="&enableStartPage.label;"
                     preference="mailnews.start_page.enabled"
                     accesskey="&enableStartPage.accesskey;"/>
         </hbox>
-        <hbox align="center">
+        <hbox align="center" class="input-container">
           <label value="&location.label;" accesskey="&location1.accesskey;" control="mailnewsStartPageUrl"/>
-          <textbox id="mailnewsStartPageUrl" flex="1" class="uri-element"
-                   preference="mailnews.start_page.url"/>
-          <button label="&useDefault.label;" accesskey="&useDefault.accesskey;"
+          <html:input id="mailnewsStartPageUrl"
+                      type="text"
+                      preference="mailnews.start_page.url"/>
+          <button id="browseForStartPageUrl"
+                  label="&useDefault.label;"
+                  accesskey="&useDefault.accesskey;"
                   oncommand="gGeneralPane.restoreDefaultStartPage();">
-            <observes element="mailnewsStartPageUrl" attribute="disabled"/>
           </button>
         </hbox>
     </groupbox>
 
     <groupbox data-category="paneGeneral">
       <label><html:h2 >&defaultSearchEngine.label;</html:h2></label>
       <hbox align="center">
         <menulist id="defaultWebSearch">
@@ -313,31 +315,28 @@
           <radio id="custom"
                  value="1"
                  label="&customsound.label;"
                  accesskey="&customsound.accesskey;"/>
           <spacer flex="1"/>
         </hbox>
       </radiogroup>
 #endif
-      <hbox align="center">
-        <textbox id="soundUrlLocation"
-                 type="filefield"
-                 class="indent"
-                 readonly="true"
-                 preference="mail.biff.play_sound.url"
-                 preference-editable="true"
-                 aria-labelledby="custom"
-                 flex="1"/>
+      <hbox align="center" class="input-container">
+        <html:input id="soundUrlLocation"
+                    type="text"
+                    class="input-filefield indent"
+                    readonly="readonly"
+                    preference="mail.biff.play_sound.url"
+                    preference-editable="true"
+                    aria-labelledby="custom"/>
         <button id="browseForSound"
                 label="&browse.label;"
                 accesskey="&browse.accesskey;"
-                oncommand="gGeneralPane.browseForSoundFile();">
-          <observes element="soundUrlLocation" attribute="disabled"/>
-        </button>
+                oncommand="gGeneralPane.browseForSoundFile();"/>
       </hbox>
     </groupbox>
 
     <hbox id="filesAttachmentCategory"
           class="subcategory"
           data-category="paneGeneral">
       <html:h1 data-l10n-id="general-files-and-attachment-header"/>
     </hbox>
@@ -365,25 +364,26 @@
       <richlistbox id="handlersView" height="180px"
                    preference="pref.downloads.disable_button.edit_actions"/>
 
       <separator class="thin"/>
 
       <vbox align="start">
         <radiogroup id="saveWhere" flex="1"
                     preference="browser.download.useDownloadDir">
-          <hbox id="saveToRow" align="center">
+          <hbox id="saveToRow" align="center" class="input-container">
             <radio id="saveTo" value="true"
                    label="&saveTo.label;"
                    accesskey="&saveTo.accesskey;"
                    aria-labelledby="saveTo downloadFolder"/>
-            <textbox id="downloadFolder" flex="1"
-                     type="filefield"
-                     readonly="true"
-                     aria-labelledby="saveTo"/>
+            <html:input id="downloadFolder"
+                        class="input-filefield"
+                        type="text"
+                        readonly="readonly"
+                        aria-labelledby="saveTo"/>
             <button id="chooseFolder" oncommand="gDownloadDirSection.chooseFolder();"
 #ifdef XP_MACOSX
                     accesskey="&chooseFolderMac.accesskey;"
                     label="&chooseFolderMac.label;"/>
 #else
                     accesskey="&chooseFolderWin.accesskey;"
                     label="&chooseFolderWin.label;"/>
 #endif
--- a/mail/components/preferences/general.js
+++ b/mail/components/preferences/general.js
@@ -425,16 +425,20 @@ var gGeneralPane = {
     );
 
     let element = document.getElementById("cacheSize");
     Preferences.addSyncFromPrefListener(element, () => this.readCacheSize());
     Preferences.addSyncToPrefListener(element, () => this.writeCacheSize());
     Preferences.addSyncFromPrefListener(menulist, () =>
       this.readFontSelection()
     );
+    Preferences.addSyncFromPrefListener(
+      document.getElementById("soundUrlLocation"),
+      () => this.readSoundLocation()
+    );
   },
 
   /**
    * Restores the default start page as the user's start page
    */
   restoreDefaultStartPage() {
     var startPage = Preferences.get("mailnews.start_page.url");
     startPage.value = startPage.defaultValue;
@@ -493,17 +497,16 @@ var gGeneralPane = {
     soundUrlLocation.value = Preferences.get("mail.biff.play_sound.url").value;
     if (soundUrlLocation.value) {
       soundUrlLocation.label = this.convertURLToLocalFile(
         soundUrlLocation.value
       ).leafName;
       soundUrlLocation.style.backgroundImage =
         "url(moz-icon://" + soundUrlLocation.label + "?size=16)";
     }
-    return undefined;
   },
 
   previewSound() {
     let sound = Cc["@mozilla.org/sound;1"].createInstance(Ci.nsISound);
 
     let soundLocation;
     // soundType radio-group isn't used for macOS so it is not in the XUL file
     // for the platform.
@@ -572,16 +575,18 @@ var gGeneralPane = {
       var soundTypeEl = document.getElementById("soundType");
       if (soundType === undefined) {
         soundType = soundTypeEl.value;
       }
 
       soundTypeEl.disabled = soundsDisabled;
       document.getElementById("soundUrlLocation").disabled =
         soundsDisabled || soundType != 1;
+      document.getElementById("browseForSound").disabled =
+        soundsDisabled || soundType != 1;
       document.getElementById("playSound").disabled =
         soundsDisabled || (!soundUrlLocation && soundType != 0);
     } else {
       // On OS X, if there is no selected custom sound then default one will
       // be played. We keep consistency by disabling the "Play sound" checkbox
       // if the user hasn't selected a custom sound file yet.
       document.getElementById(
         "newMailNotification"
@@ -593,16 +598,19 @@ var gGeneralPane = {
         !soundsDisabled && soundUrlLocation ? 1 : 0;
     }
   },
 
   updateStartPage() {
     document.getElementById("mailnewsStartPageUrl").disabled = !Preferences.get(
       "mailnews.start_page.enabled"
     ).value;
+    document.getElementById(
+      "browseForStartPageUrl"
+    ).disabled = !Preferences.get("mailnews.start_page.enabled").value;
   },
 
   updateCustomizeAlert() {
     // The button does not exist on all platforms.
     let customizeAlertButton = document.getElementById("customizeMailAlert");
     if (customizeAlertButton) {
       customizeAlertButton.disabled = !Preferences.get("mail.biff.show_alert")
         .value;
--- a/mail/components/preferences/permissions.xul
+++ b/mail/components/preferences/permissions.xul
@@ -1,47 +1,52 @@
 <?xml version="1.0"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <?xml-stylesheet href="chrome://global/skin/"?>
 <?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://messenger/skin/input-fields.css"?>
 
 <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/preferences/permissions.dtd">
 
 <window id="PermissionsDialog" class="windowDialog"
         windowtype="mailnews:permissions"
         title="&window.title;"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        xmlns:html="http://www.w3.org/1999/xhtml"
         style="width: &window.width;;"
         onload="gPermissionManager.onLoad();"
         onunload="gPermissionManager.uninit();"
         persist="screenX screenY width height"
         onkeypress="gPermissionManager.onWindowKeyPress(event);">
 
+  <script src="chrome://global/content/globalOverlay.js"/>
+  <script src="chrome://global/content/editMenuOverlay.js"/>
   <script src="chrome://global/content/treeUtils.js"/>
   <script src="chrome://messenger/content/preferences/permissions.js"/>
 
   <stringbundle id="bundlePreferences"
                 src="chrome://messenger/locale/preferences/preferences.properties"/>
 
   <keyset>
     <key key="&windowClose.key;" modifiers="accel" oncommand="window.close();"/>
   </keyset>
 
   <vbox class="contentPane largeDialogContainer" flex="1">
     <description id="permissionsText" control="url"/>
     <separator class="thin"/>
     <label id="urlLabel" control="url" value="&address.label;" accesskey="&address.accesskey;"/>
-    <hbox align="start">
-      <textbox id="url" flex="1"
-               oninput="gPermissionManager.onHostInput(event.target);"
-               onkeypress="gPermissionManager.onHostKeyPress(event);"/>
+    <hbox align="start" class="input-container">
+      <html:input id="url"
+                  type="text"
+                  oninput="gPermissionManager.onHostInput(event.target);"
+                  onkeypress="gPermissionManager.onHostKeyPress(event);"/>
     </hbox>
     <hbox pack="end">
       <button id="btnBlock" disabled="true" label="&block.label;" accesskey="&block.accesskey;"
               oncommand="gPermissionManager.addPermission(nsIPermissionManager.DENY_ACTION);"/>
       <button id="btnSession" disabled="true" label="&session.label;" accesskey="&session.accesskey;"
               oncommand="gPermissionManager.addPermission(nsICookiePermission.ACCESS_SESSION);"/>
       <button id="btnAllow" disabled="true" label="&allow.label;" default="true" accesskey="&allow.accesskey;"
               oncommand="gPermissionManager.addPermission(nsIPermissionManager.ALLOW_ACTION);"/>
--- a/mail/themes/linux/jar.mn
+++ b/mail/themes/linux/jar.mn
@@ -33,31 +33,31 @@ classic.jar:
   skin/classic/messenger/messenger.css                        (mail/messenger.css)
   skin/classic/messenger/textbox.css                          (mail/textbox.css)
   skin/classic/messenger/attachmentList.css                   (mail/attachmentList.css)
   skin/classic/messenger/imageFilters.svg                     (mail/imageFilters.svg)
   skin/classic/messenger/mailWindow1.css                      (mail/mailWindow1.css)
   skin/classic/messenger/messageWindow.css                    (mail/messageWindow.css)
   skin/classic/messenger/searchBox.css                        (mail/searchBox.css)
   skin/classic/messenger/junkMail.css                         (mail/junkMail.css)
+  skin/classic/messenger/input-fields.css                     (mail/input-fields.css)
   skin/classic/messenger/folderMenus.css                      (mail/folderMenus.css)
   skin/classic/messenger/folderPane.css                       (mail/folderPane.css)
   skin/classic/messenger/subscribe.css                        (mail/subscribe.css)
   skin/classic/messenger/virtualFolderListDialog.css          (mail/virtualFolderListDialog.css)
   skin/classic/messenger/searchDialog.css                     (mail/searchDialog.css)
   skin/classic/messenger/msgSelectOffline.css                 (mail/msgSelectOffline.css)
   skin/classic/messenger/filterDialog.css                     (mail/filterDialog.css)
   skin/classic/messenger/multimessageview.css                 (mail/multimessageview.css)
   skin/classic/messenger/glodaFacetView.css                   (mail/glodaFacetView.css)
   skin/classic/messenger/icons/exclude.png                    (mail/icons/exclude.png)
   skin/classic/messenger/icons/exclude-selected.png           (mail/icons/exclude-selected.png)
   skin/classic/messenger/icons/zoomout.png                    (mail/icons/zoomout.png)
   skin/classic/messenger/icons/zoomout-hover.png              (mail/icons/zoomout-hover.png)
   skin/classic/messenger/dialogs.css                          (mail/dialogs.css)
-  skin/classic/messenger/filefield.css                        (mail/filefield.css)
   skin/classic/messenger/newmailalert.css                     (mail/newmailalert.css)
   skin/classic/messenger/tabmail.css                          (mail/tabmail.css)
   skin/classic/messenger/editContactPanel.css                 (mail/editContactPanel.css)
   skin/classic/messenger/quickFilterBar.css                   (mail/quickFilterBar.css)
   skin/classic/messenger/activity/activity.css                (mail/activity/activity.css)
   skin/classic/messenger/activity/buttons.png                 (mail/activity/buttons.png)
   skin/classic/messenger/activity/defaultProcessIcon.png      (mail/activity/defaultProcessIcon.png)
   skin/classic/messenger/activity/defaultEventIcon.png        (mail/activity/defaultEventIcon.png)
deleted file mode 100644
--- a/mail/themes/linux/mail/filefield.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-textbox[type="filefield"] {
-  -moz-appearance: none;
-  padding: 5px 6px;
-  padding-inline-start: 25px;
-  background: center left 6px / 16px no-repeat -moz-dialog;
-  border: 1px solid threedshadow;
-}
-
-textbox[type="filefield"]:-moz-locale-dir(rtl) {
-  background-position-x: right 6px;
-}
-
-textbox[type="filefield"][disabled="true"] {
-  opacity: 0.5;
-  color: -moz-DialogText;
-}
new file mode 100644
--- /dev/null
+++ b/mail/themes/linux/mail/input-fields.css
@@ -0,0 +1,16 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://messenger/skin/shared/input-fields.css");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+html|input.input-filefield {
+  padding: 5px 6px;
+  padding-inline-start: 25px !important;
+  background: center left 6px / 16px no-repeat -moz-dialog;
+}
+
+html|input.input-filefield:-moz-locale-dir(rtl) {
+  background-position-x: right 6px;
+}
--- a/mail/themes/osx/jar.mn
+++ b/mail/themes/osx/jar.mn
@@ -36,17 +36,17 @@ classic.jar:
   skin/classic/messenger/messageQuotes.css                       (mail/messageQuotes.css)
   skin/classic/messenger/messageWindow.css                       (mail/messageWindow.css)
   skin/classic/messenger/textbox.css                             (mail/textbox.css)
   skin/classic/messenger/attachmentList.css                      (mail/attachmentList.css)
   skin/classic/messenger/msgSelectOffline.css                    (mail/msgSelectOffline.css)
   skin/classic/messenger/mailWindow1.css                         (mail/mailWindow1.css)
   skin/classic/messenger/searchBox.css                           (mail/searchBox.css)
   skin/classic/messenger/junkMail.css                            (mail/junkMail.css)
-  skin/classic/messenger/filefield.css                           (mail/filefield.css)
+  skin/classic/messenger/input-fields.css                        (mail/input-fields.css)
   skin/classic/messenger/folderMenus.css                         (mail/folderMenus.css)
   skin/classic/messenger/folderPane.css                          (mail/folderPane.css)
   skin/classic/messenger/subscribe.css                           (mail/subscribe.css)
   skin/classic/messenger/virtualFolderListDialog.css             (mail/virtualFolderListDialog.css)
   skin/classic/messenger/searchDialog.css                        (mail/searchDialog.css)
   skin/classic/messenger/filterDialog.css                        (mail/filterDialog.css)
   skin/classic/messenger/tabmail.css                             (mail/tabmail.css)
   skin/classic/messenger/editContactPanel.css                    (mail/editContactPanel.css)
deleted file mode 100644
--- a/mail/themes/osx/mail/filefield.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-textbox[type="filefield"] {
-  -moz-appearance: none;
-  padding: 2px 4px;
-  padding-inline-start: 20px;
-  background: center left 2px / 16px no-repeat -moz-field;
-  border: 1px solid threedshadow;
-}
-
-textbox[type="filefield"]:-moz-locale-dir(rtl) {
-  background-position-x: right 2px;
-}
-
-textbox[type="filefield"][disabled="true"] {
-  opacity: 0.5;
-  color: -moz-DialogText;
-}
new file mode 100644
--- /dev/null
+++ b/mail/themes/osx/mail/input-fields.css
@@ -0,0 +1,11 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://messenger/skin/shared/input-fields.css");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+html|input.input-filefield {
+  padding: 2px 4px;
+  background: center left 2px / 16px no-repeat -moz-field;
+}
--- a/mail/themes/shared/mail/incontentprefs/preferences.css
+++ b/mail/themes/shared/mail/incontentprefs/preferences.css
@@ -1,13 +1,13 @@
 /* - This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this file,
    - You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-@namespace html "http://www.w3.org/1999/xhtml";
+@namespace html url("http://www.w3.org/1999/xhtml");
 
 :root {
   --in-content-categories-background: #ebebef;
   --in-content-warning-container: var(--grey-20);
   --in-content-item-selected-unfocused: var(--grey-20);
 }
 
 @supports -moz-bool-pref("browser.in-content.dark-mode") {
@@ -229,31 +229,16 @@ radio[pane=paneCompose] > .radio-check {
 radio[pane=paneChat] > .radio-check {
   list-style-image: url("chrome://messenger/skin/shared/in-content/chat.svg");
 }
 
 radio[pane=paneLightning] > .radio-check {
   list-style-image: url("chrome://messenger/skin/shared/in-content/calendar.svg");
 }
 
-textbox[type="filefield"] {
-  padding-inline-start: 30px;
-  background-position-x: left 8px;
-  background-color: var(--in-content-box-background);
-  border-color: var(--in-content-box-border-color);
-}
-
-textbox[type="filefield"]:-moz-locale-dir(rtl) {
-  background-position-x: right 8px;
-}
-
-textbox[type="filefield"][disabled="true"] {
-  color: var(--in-content-text-color);
-}
-
 html|input[type="number"] {
   margin-inline-start: 4px;
   padding: 1px;
 }
 /* sizes: chars + 8px padding + 1px borders + spin buttons 25+2+10px  */
 html|input[type="number"].size2 {
   width: calc(2ch + 55px);
 }
@@ -286,17 +271,17 @@ html|input[type="number"]::-moz-number-s
 html|input[type="number"]::-moz-number-spin-down:hover {
   background-color: var(--in-content-button-background-hover);
 }
 
 html|input[type="number"]::-moz-number-spin-up {
   border-bottom-width: 1px;
   border-bottom-style: solid;
   border-radius: 1px 1px 0 0;
-  background-image: url("chrome://global/skin/icons/arrow-up-12.svg")
+  background-image: url("chrome://global/skin/icons/arrow-up-12.svg");
 }
 
 html|input[type="number"]::-moz-number-spin-down {
   border-radius: 0 0 1px 1px;
   background-image: url("chrome://global/skin/icons/arrow-dropdown-12.svg");
 }
 
 separator.groove:not([orient="vertical"]) {
@@ -327,20 +312,25 @@ tab:-moz-focusring > .tab-middle {
    bug has a solution. */
 description > html|a {
   cursor: pointer;
 }
 #previewDeck {
   height: 220px;
 }
 
-.indent {
+.indent,
+html|input.indent {
   margin-inline-start: 33px;
 }
 
+.align-no-label {
+  margin-inline-start: 4px;
+}
+
 .tail-with-learn-more {
   margin-inline-end: 10px;
 }
 
 .update-throbber {
   width: 16px;
   min-height: 16px;
   margin-inline-start: 6px;
--- a/mail/themes/shared/mail/input-fields.css
+++ b/mail/themes/shared/mail/input-fields.css
@@ -6,11 +6,38 @@
 @namespace html url("http://www.w3.org/1999/xhtml");
 
 html|input.input-inline {
   margin: 2px 4px;
   padding: 2px 2px 3px;
   padding-inline-start: 4px;
 }
 
+html|input.input-filefield {
+  -moz-appearance: none;
+  padding-inline-start: 20px !important;
+  background-position-x: left 8px;
+  background-color: var(--in-content-box-background);
+  border-color: var(--in-content-box-border-color);
+  border: 1px solid threedshadow;
+}
+
+html|input.input-filefield:-moz-locale-dir(rtl) {
+  background-position-x: right 2px;
+}
+
+html|input.input-filefield[disabled] {
+  opacity: 0.5;
+  color: -moz-DialogText;
+}
+
 html|input.input-inline-color {
   margin: 2px 4px;
 }
+
+.input-container {
+  display: flex;
+  align-items: center;
+}
+
+.input-container html|input:not([type="number"]) {
+  flex-grow: 1;
+}
--- a/mail/themes/windows/jar.mn
+++ b/mail/themes/windows/jar.mn
@@ -33,23 +33,23 @@ classic.jar:
   skin/classic/messenger/messenger.css                        (mail/messenger.css)
   skin/classic/messenger/textbox.css                          (mail/textbox.css)
   skin/classic/messenger/attachmentList.css                   (mail/attachmentList.css)
   skin/classic/messenger/imageFilters.svg                     (mail/imageFilters.svg)
   skin/classic/messenger/mailWindow1.css                      (mail/mailWindow1.css)
   skin/classic/messenger/messageWindow.css                    (mail/messageWindow.css)
   skin/classic/messenger/searchBox.css                        (mail/searchBox.css)
   skin/classic/messenger/junkMail.css                         (mail/junkMail.css)
+  skin/classic/messenger/input-fields.css                     (mail/input-fields.css)
   skin/classic/messenger/folderMenus.css                      (mail/folderMenus.css)
   skin/classic/messenger/folderPane.css                       (mail/folderPane.css)
   skin/classic/messenger/subscribe.css                        (mail/subscribe.css)
   skin/classic/messenger/virtualFolderListDialog.css          (mail/virtualFolderListDialog.css)
   skin/classic/messenger/searchDialog.css                     (mail/searchDialog.css)
   skin/classic/messenger/msgSelectOffline.css                 (mail/msgSelectOffline.css)
-  skin/classic/messenger/filefield.css                        (mail/filefield.css)
   skin/classic/messenger/filterDialog.css                     (mail/filterDialog.css)
   skin/classic/messenger/dialogs.css                          (mail/dialogs.css)
   skin/classic/messenger/multimessageview.css                 (mail/multimessageview.css)
   skin/classic/messenger/glodaFacetView.css                   (mail/glodaFacetView.css)
   skin/classic/messenger/icons/exclude.png                    (mail/icons/exclude.png)
   skin/classic/messenger/icons/exclude-selected.png           (mail/icons/exclude-selected.png)
   skin/classic/messenger/newmailalert.css                     (mail/newmailalert.css)
   skin/classic/messenger/tabmail.css                          (mail/tabmail.css)
deleted file mode 100644
--- a/mail/themes/windows/mail/filefield.css
+++ /dev/null
@@ -1,19 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-textbox[type="filefield"] {
-  -moz-appearance: none;
-  padding-inline-start: 20px;
-  background: center left 2px / 16px no-repeat -moz-dialog;
-  border: 1px solid threedshadow;
-}
-
-textbox[type="filefield"]:-moz-locale-dir(rtl) {
-  background-position-x: right 2px;
-}
-
-textbox[type="filefield"][disabled="true"] {
-  opacity: 0.5;
-  color: -moz-DialogText;
-}
new file mode 100644
--- /dev/null
+++ b/mail/themes/windows/mail/input-fields.css
@@ -0,0 +1,10 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://messenger/skin/shared/input-fields.css");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+html|input.input-filefield {
+  background: center left 2px / 16px no-repeat -moz-dialog;
+}