Bug 1507905 - Add -webkit-appearance:textarea and make that the default for <textarea> for compatibility with other UAs. r=jwatt
authorMats Palmgren <mats@mozilla.com>
Wed, 21 Nov 2018 22:05:20 +0100
changeset 504038 1a235d5c636775aff8cbaa50b55a6e8a07e40060
parent 504037 27fe8b1767f2acc452f47ca8a948902b0ebf7a51
child 504039 b0b540cc5b63e21acfc031095341324ddb1b59de
push id10290
push userffxbld-merge
push dateMon, 03 Dec 2018 16:23:23 +0000
treeherdermozilla-beta@700bed2445e6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjwatt
bugs1507905
milestone65.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1507905 - Add -webkit-appearance:textarea and make that the default for <textarea> for compatibility with other UAs. r=jwatt
devtools/shared/css/generated/properties-db.js
layout/style/res/forms.css
servo/components/style/values/specified/box.rs
widget/cocoa/nsNativeThemeCocoa.mm
widget/gtk/nsNativeThemeGTK.cpp
widget/headless/HeadlessThemeGTK.cpp
widget/nsNativeTheme.cpp
widget/windows/nsNativeThemeWin.cpp
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -291,16 +291,17 @@ exports.CSS_PROPERTIES = {
       "splitter",
       "statusbar",
       "statusbarpanel",
       "tab",
       "tab-scroll-arrow-back",
       "tab-scroll-arrow-forward",
       "tabpanel",
       "tabpanels",
+      "textarea",
       "textfield",
       "textfield-multiline",
       "toolbar",
       "toolbarbutton",
       "toolbarbutton-dropdown",
       "toolbargripper",
       "toolbox",
       "tooltip",
@@ -1738,16 +1739,17 @@ exports.CSS_PROPERTIES = {
       "splitter",
       "statusbar",
       "statusbarpanel",
       "tab",
       "tab-scroll-arrow-back",
       "tab-scroll-arrow-forward",
       "tabpanel",
       "tabpanels",
+      "textarea",
       "textfield",
       "textfield-multiline",
       "toolbar",
       "toolbarbutton",
       "toolbarbutton-dropdown",
       "toolbargripper",
       "toolbox",
       "tooltip",
--- a/layout/style/res/forms.css
+++ b/layout/style/res/forms.css
@@ -111,16 +111,17 @@ input {
 input > .anonymous-div,
 input::placeholder {
   word-wrap: normal !important;
   /* Make the line-height equal to the available height */
   line-height: -moz-block-height;
 }
 
 textarea {
+  -moz-appearance: textarea;
   margin-block-start: 1px;
   margin-block-end: 1px;
   border: 2px inset ThreeDLightShadow;
   /* The 1px inline padding is for parity with Win/IE */
   padding-inline-start: 1px;
   padding-inline-end: 1px;
   background-color: -moz-Field;
   color: -moz-FieldText;
@@ -128,17 +129,16 @@ textarea {
   text-rendering: optimizeLegibility;
   text-align: start;
   text-transform: none;
   word-spacing: normal;
   letter-spacing: normal;
   vertical-align: text-bottom;
   cursor: text;
   resize: both;
-  -moz-appearance: textfield-multiline;
   text-indent: 0;
   -moz-user-select: text;
   text-shadow: none;
   white-space: pre-wrap;
   word-wrap: break-word;
   overflow-clip-box: content-box;
 }
 
--- a/servo/components/style/values/specified/box.rs
+++ b/servo/components/style/values/specified/box.rs
@@ -1150,20 +1150,21 @@ pub enum Appearance {
     /// The tab panels container.
     #[parse(condition = "in_ua_or_chrome_sheet")]
     Tabpanels,
     /// The tabs scroll arrows (left/right).
     #[parse(condition = "in_ua_or_chrome_sheet")]
     TabScrollArrowBack,
     #[parse(condition = "in_ua_or_chrome_sheet")]
     TabScrollArrowForward,
-    /// A textfield or text area.
+    /// A multi-line text field, e.g. HTML <textarea>.
+    #[parse(aliases = "textfield-multiline")]
+    Textarea,
+    /// A single-line text field, e.g. HTML <input type=text>.
     Textfield,
-    /// A multiline text field.
-    TextfieldMultiline,
     /// A toolbar in an application window.
     #[parse(condition = "in_ua_or_chrome_sheet")]
     Toolbar,
     /// A single toolbar button (with no associated dropdown).
     #[parse(condition = "in_ua_or_chrome_sheet")]
     Toolbarbutton,
     /// The dropdown portion of a toolbar button
     #[parse(condition = "in_ua_or_chrome_sheet")]
--- a/widget/cocoa/nsNativeThemeCocoa.mm
+++ b/widget/cocoa/nsNativeThemeCocoa.mm
@@ -3456,17 +3456,17 @@ nsNativeThemeCocoa::ComputeWidgetInfo(ns
       return Some(WidgetInfo::ScrollbarTrack(
         ComputeScrollbarParams(
           aFrame, aAppearance == StyleAppearance::ScrollbartrackHorizontal)));
 
     case StyleAppearance::Scrollcorner:
       return Some(WidgetInfo::ScrollCorner(
         ComputeScrollbarParams(aFrame, false)));
 
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
       return Some(WidgetInfo::MultilineTextField(
         eventState.HasState(NS_EVENT_STATE_FOCUS)));
 
     case StyleAppearance::Listbox:
       return Some(WidgetInfo::ListBox());
 
     case StyleAppearance::MozMacSourceList: {
       if (VibrancyManager::SystemSupportsVibrancy()) {
@@ -3908,17 +3908,17 @@ nsNativeThemeCocoa::CreateWebRenderComma
       if (isOverlay && !IsParentScrollbarRolledOver(aFrame)) {
         // There is no scrollbar track, draw nothing and return true.
         return true;
       }
       // There is a scrollbar track and it needs to be drawn using fallback.
       return false;
     }
 
-    case StyleAppearance::TextfieldMultiline: {
+    case StyleAppearance::Textarea: {
       if (eventState.HasState(NS_EVENT_STATE_FOCUS)) {
         // We can't draw the focus ring using webrender, so fall back to regular
         // drawing if we're focused.
         return false;
       }
 
       // White background
       aBuilder.PushRect(bounds, bounds, true,
@@ -4064,17 +4064,17 @@ nsNativeThemeCocoa::GetWidgetBorder(nsDe
       ::GetThemeMetric(kThemeMetricEditTextWhitespace, &textPadding);
 
       frameOutset += textPadding;
 
       result.SizeTo(frameOutset, frameOutset, frameOutset, frameOutset);
       break;
     }
 
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
       result.SizeTo(1, 1, 1, 1);
       break;
 
     case StyleAppearance::Searchfield:
       result = DirectionAwareMargin(kAquaSearchfieldBorder, aFrame);
       break;
 
     case StyleAppearance::Listbox:
@@ -4166,17 +4166,17 @@ nsNativeThemeCocoa::GetWidgetOverflow(ns
   switch (aAppearance) {
     case StyleAppearance::Button:
     case StyleAppearance::MozMacDisclosureButtonOpen:
     case StyleAppearance::MozMacDisclosureButtonClosed:
     case StyleAppearance::MozMacHelpButton:
     case StyleAppearance::Toolbarbutton:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Searchfield:
     case StyleAppearance::Listbox:
     // NOTE: if you change Menulist and MenulistButton to behave differently,
     // be sure to handle StaticPrefs::layout_css_webkit_appearance_enabled.
     case StyleAppearance::Menulist:
     case StyleAppearance::MenulistButton:
     case StyleAppearance::MozMenulistButton:
     case StyleAppearance::MenulistTextfield:
@@ -4317,17 +4317,17 @@ nsNativeThemeCocoa::GetMinimumWidgetSize
       ::GetThemeMetric(kThemeMetricPopupButtonHeight, &popupHeight);
       aResult->SizeTo(0, popupHeight);
       break;
     }
 
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Searchfield:
     {
       // at minimum, we should be tall enough for 9pt text.
       // I'm using hardcoded values here because the appearance manager
       // values for the frame size are incorrect.
       aResult->SizeTo(0, (2 + 2) /* top */ + 9 + (1 + 1) /* bottom */);
       break;
     }
@@ -4654,17 +4654,17 @@ nsNativeThemeCocoa::ThemeSupportsWidget(
     case StyleAppearance::InnerSpinButton:
     case StyleAppearance::Spinner:
     case StyleAppearance::SpinnerUpbutton:
     case StyleAppearance::SpinnerDownbutton:
     case StyleAppearance::Toolbar:
     case StyleAppearance::Statusbar:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Searchfield:
     case StyleAppearance::Toolbox:
     //case StyleAppearance::Toolbarbutton:
     case StyleAppearance::ProgressBar:
     case StyleAppearance::ProgressbarVertical:
     case StyleAppearance::Progresschunk:
     case StyleAppearance::Meter:
     case StyleAppearance::Meterchunk:
@@ -4815,17 +4815,17 @@ nsNativeThemeCocoa::WidgetAppearanceDepe
     case StyleAppearance::SpinnerDownbutton:
     case StyleAppearance::Separator:
     case StyleAppearance::Toolbox:
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
     case StyleAppearance::Treeview:
     case StyleAppearance::Treeline:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Listbox:
     case StyleAppearance::Resizer:
       return false;
     default:
       return true;
   }
 }
 
--- a/widget/gtk/nsNativeThemeGTK.cpp
+++ b/widget/gtk/nsNativeThemeGTK.cpp
@@ -335,17 +335,17 @@ nsNativeThemeGTK::GetGtkWidgetAndState(S
     }
 
     if (IsFrameContentNodeInNamespace(aFrame, kNameSpaceID_XUL)) {
       // For these widget types, some element (either a child or parent)
       // actually has element focus, so we check the focused attribute
       // to see whether to draw in the focused state.
       if (aAppearance == StyleAppearance::NumberInput ||
           aAppearance == StyleAppearance::Textfield ||
-          aAppearance == StyleAppearance::TextfieldMultiline ||
+          aAppearance == StyleAppearance::Textarea ||
           aAppearance == StyleAppearance::MenulistTextfield ||
           aAppearance == StyleAppearance::SpinnerTextfield ||
           aAppearance == StyleAppearance::RadioContainer ||
           aAppearance == StyleAppearance::RadioLabel) {
         aState->focused = IsFocused(aFrame);
       } else if (aAppearance == StyleAppearance::Radio ||
                  aAppearance == StyleAppearance::Checkbox) {
         // In XUL, checkboxes and radios shouldn't have focus rings, their labels do
@@ -597,17 +597,17 @@ nsNativeThemeGTK::GetGtkWidgetAndState(S
     break;
   case StyleAppearance::Resizer:
     aGtkWidgetType = MOZ_GTK_RESIZER;
     break;
   case StyleAppearance::NumberInput:
   case StyleAppearance::Textfield:
     aGtkWidgetType = MOZ_GTK_ENTRY;
     break;
-  case StyleAppearance::TextfieldMultiline:
+  case StyleAppearance::Textarea:
 #ifdef MOZ_WIDGET_GTK
     aGtkWidgetType = MOZ_GTK_TEXT_VIEW;
 #else
     aGtkWidgetType = MOZ_GTK_ENTRY;
 #endif
     break;
   case StyleAppearance::Listbox:
   case StyleAppearance::Treeview:
@@ -1973,17 +1973,17 @@ nsNativeThemeGTK::ThemeSupportsWidget(ns
   case StyleAppearance::ScrollbarVertical:
   case StyleAppearance::ScrollbartrackHorizontal:
   case StyleAppearance::ScrollbartrackVertical:
   case StyleAppearance::ScrollbarthumbHorizontal:
   case StyleAppearance::ScrollbarthumbVertical:
   case StyleAppearance::MenulistTextfield:
   case StyleAppearance::NumberInput:
   case StyleAppearance::Textfield:
-  case StyleAppearance::TextfieldMultiline:
+  case StyleAppearance::Textarea:
   case StyleAppearance::Range:
   case StyleAppearance::RangeThumb:
   case StyleAppearance::ScaleHorizontal:
   case StyleAppearance::ScalethumbHorizontal:
   case StyleAppearance::ScaleVertical:
   case StyleAppearance::ScalethumbVertical:
     // case StyleAppearance::Scalethumbstart:
     // case StyleAppearance::Scalethumbend:
--- a/widget/headless/HeadlessThemeGTK.cpp
+++ b/widget/headless/HeadlessThemeGTK.cpp
@@ -58,17 +58,17 @@ HeadlessThemeGTK::GetWidgetBorder(nsDevi
     case StyleAppearance::Listbox:
     case StyleAppearance::Treeview:
     case StyleAppearance::Treeheadersortarrow:
     case StyleAppearance::ProgressBar:
     case StyleAppearance::ProgressbarVertical:
     case StyleAppearance::SpinnerUpbutton:
     case StyleAppearance::SpinnerDownbutton:
     case StyleAppearance::SpinnerTextfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Menupopup:
     case StyleAppearance::MozGtkInfoBar:
       result.top = 1;
       result.right = 1;
       result.bottom = 1;
       result.left = 1;
       break;
     case StyleAppearance::Treeheadercell:
@@ -397,17 +397,17 @@ HeadlessThemeGTK::ThemeSupportsWidget(ns
     case StyleAppearance::ScrollbarbuttonDown:
     case StyleAppearance::ScrollbarbuttonLeft:
     case StyleAppearance::ScrollbarbuttonRight:
     case StyleAppearance::ScrollbartrackHorizontal:
     case StyleAppearance::ScrollbartrackVertical:
     case StyleAppearance::ScrollbarthumbHorizontal:
     case StyleAppearance::ScrollbarthumbVertical:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Menulist:
     case StyleAppearance::MenulistText:
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::ScaleHorizontal:
     case StyleAppearance::ScaleVertical:
     case StyleAppearance::ScalethumbHorizontal:
     case StyleAppearance::ScalethumbVertical:
     case StyleAppearance::Range:
--- a/widget/nsNativeTheme.cpp
+++ b/widget/nsNativeTheme.cpp
@@ -103,17 +103,17 @@ nsNativeTheme::GetContentState(nsIFrame*
   // On Windows and Mac, only draw focus rings if they should be shown. This
   // means that focus rings are only shown once the keyboard has been used to
   // focus something in the window.
 #if defined(XP_MACOSX)
   // Mac always draws focus rings for textboxes and lists.
   if (aAppearance == StyleAppearance::MenulistTextfield ||
       aAppearance == StyleAppearance::NumberInput ||
       aAppearance == StyleAppearance::Textfield ||
-      aAppearance == StyleAppearance::TextfieldMultiline ||
+      aAppearance == StyleAppearance::Textarea ||
       aAppearance == StyleAppearance::Searchfield ||
       aAppearance == StyleAppearance::Listbox) {
     return flags;
   }
 #endif
 #if defined(XP_WIN)
   // On Windows, focused buttons are always drawn as such by the native theme.
   if (aAppearance == StyleAppearance::Button)
@@ -343,17 +343,17 @@ nsNativeTheme::IsWidgetStyled(nsPresCont
       return !numberControlFrame->ShouldUseNativeStyleForSpinner();
     }
   }
 
   return (aAppearance == StyleAppearance::NumberInput ||
           aAppearance == StyleAppearance::Button ||
           aAppearance == StyleAppearance::MenulistTextfield ||
           aAppearance == StyleAppearance::Textfield ||
-          aAppearance == StyleAppearance::TextfieldMultiline ||
+          aAppearance == StyleAppearance::Textarea ||
           aAppearance == StyleAppearance::Listbox ||
           aAppearance == StyleAppearance::Menulist ||
           (aAppearance == StyleAppearance::MenulistButton &&
            StaticPrefs::layout_css_webkit_appearance_enabled())) &&
          aFrame->GetContent()->IsHTMLElement() &&
          aPresContext->HasAuthorSpecifiedRules(aFrame,
                                                NS_AUTHOR_SPECIFIED_BORDER |
                                                NS_AUTHOR_SPECIFIED_BACKGROUND);
--- a/widget/windows/nsNativeThemeWin.cpp
+++ b/widget/windows/nsNativeThemeWin.cpp
@@ -738,17 +738,17 @@ mozilla::Maybe<nsUXThemeClass> nsNativeT
     case StyleAppearance::Button:
     case StyleAppearance::Radio:
     case StyleAppearance::Checkbox:
     case StyleAppearance::Groupbox:
       return Some(eUXButton);
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::FocusOutline:
       return Some(eUXEdit);
     case StyleAppearance::Tooltip:
       return Some(eUXTooltip);
     case StyleAppearance::Toolbox:
       return Some(eUXRebar);
     case StyleAppearance::MozWinMediaToolbox:
       return Some(eUXMediaRebar);
@@ -962,17 +962,17 @@ nsNativeThemeWin::GetThemePartAndState(n
       aState = TS_NORMAL;
       // Since we don't support groupbox disabled and GBS_DISABLED looks the
       // same as GBS_NORMAL don't bother supporting GBS_DISABLED.
       return NS_OK;
     }
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline: {
+    case StyleAppearance::Textarea: {
       EventStates eventState = GetContentState(aFrame, aAppearance);
 
       /* Note: the NOSCROLL type has a rounded corner in each corner.  The more
        * specific HSCROLL, VSCROLL, HVSCROLL types have side and/or top/bottom
        * edges rendered as straight horizontal lines with sharp corners to
        * accommodate a scrollbar.  However, the scrollbar gets rendered on top
        * of this for us, so we don't care, and can just use NOSCROLL here.
        */
@@ -1881,17 +1881,17 @@ RENDER_AGAIN:
            aAppearance == StyleAppearance::MozMenulistButton)
   {
     DrawThemeBGRTLAware(theme, hdc, part, state,
                         &widgetRect, &clipRect, IsFrameRTL(aFrame));
   }
   else if (aAppearance == StyleAppearance::MenulistTextfield ||
            aAppearance == StyleAppearance::NumberInput ||
            aAppearance == StyleAppearance::Textfield ||
-           aAppearance == StyleAppearance::TextfieldMultiline) {
+           aAppearance == StyleAppearance::Textarea) {
     if (aAppearance == StyleAppearance::MenulistTextfield &&
         state != TFS_EDITBORDER_FOCUSED) {
       // We want 'menulist-textfield' to behave like 'textfield', except we
       // don't want a border unless it's focused.  We have to handle the
       // non-focused case manually here.
       COLORREF color = GetTextfieldFillColor(theme, part, state);
       HBRUSH brush = CreateSolidBrush(color);
       ::FillRect(hdc, &widgetRect, brush);
@@ -2094,17 +2094,17 @@ nsNativeThemeWin::GetWidgetBorder(nsDevi
     else if (IsRightToSelectedTab(aFrame))
       // Remove the left edge, since we won't be drawing it.
       result.left = 0;
   }
 
   if (aFrame && (aAppearance == StyleAppearance::MenulistTextfield ||
                  aAppearance == StyleAppearance::NumberInput ||
                  aAppearance == StyleAppearance::Textfield ||
-                 aAppearance == StyleAppearance::TextfieldMultiline)) {
+                 aAppearance == StyleAppearance::Textarea)) {
     nsIContent* content = aFrame->GetContent();
     if (content && content->IsHTMLElement()) {
       // We need to pad textfields by 1 pixel, since the caret will draw
       // flush against the edge by default if we don't.
       result.top++;
       result.left++;
       result.bottom++;
       result.right++;
@@ -2195,17 +2195,17 @@ nsNativeThemeWin::GetWidgetPadding(nsDev
     aResult->left = aResult->right = popupSize.cx;
     ScaleForFrameDPI(aResult, aFrame);
     return ok;
   }
 
   if (aAppearance == StyleAppearance::MenulistTextfield ||
       aAppearance == StyleAppearance::NumberInput ||
       aAppearance == StyleAppearance::Textfield ||
-      aAppearance == StyleAppearance::TextfieldMultiline ||
+      aAppearance == StyleAppearance::Textarea ||
       aAppearance == StyleAppearance::Menulist)
   {
     // If we have author-specified padding for these elements, don't do the
     // fixups below.
     if (aFrame->PresContext()->HasAuthorSpecifiedRules(aFrame, NS_AUTHOR_SPECIFIED_PADDING))
       return false;
   }
 
@@ -2213,17 +2213,17 @@ nsNativeThemeWin::GetWidgetPadding(nsDev
    * content too tightly.  The actual border is drawn 1px inside the specified
    * rectangle, so Gecko will end up making the contents look too small.
    * Instead, we add 2px padding for the contents and fix this. (Used to be 1px
    * added, see bug 430212)
    */
   if (aAppearance == StyleAppearance::MenulistTextfield ||
       aAppearance == StyleAppearance::NumberInput ||
       aAppearance == StyleAppearance::Textfield ||
-      aAppearance == StyleAppearance::TextfieldMultiline) {
+      aAppearance == StyleAppearance::Textarea) {
     aResult->top = aResult->bottom = 2;
     aResult->left = aResult->right = 2;
     ScaleForFrameDPI(aResult, aFrame);
     return ok;
   } else if (IsHTMLContent(aFrame) &&
              aAppearance == StyleAppearance::Menulist) {
     /* For content menulist controls, we need an extra pixel so that we have
      * room to draw our focus rectangle stuff. Otherwise, the focus rect might
@@ -2861,17 +2861,17 @@ nsNativeThemeWin::ClassicThemeSupportsWi
     case StyleAppearance::Menubar:
     case StyleAppearance::Menupopup:
       // Classic non-flat menus are handled almost entirely through CSS.
       if (!nsUXThemeData::sFlatMenus)
         return false;
     case StyleAppearance::Button:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Checkbox:
     case StyleAppearance::Radio:
     case StyleAppearance::Range:
     case StyleAppearance::RangeThumb:
     case StyleAppearance::Groupbox:
     case StyleAppearance::ScrollbarbuttonUp:
     case StyleAppearance::ScrollbarbuttonDown:
     case StyleAppearance::ScrollbarbuttonLeft:
@@ -2954,17 +2954,17 @@ nsNativeThemeWin::ClassicGetWidgetBorder
       break;
     case StyleAppearance::Listbox:
     case StyleAppearance::Treeview:
     case StyleAppearance::Menulist:
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::Tab:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::FocusOutline:
       result.top = result.left = result.bottom = result.right = 2;
       break;
     case StyleAppearance::Statusbarpanel:
     case StyleAppearance::Resizerpanel: {
       result.top = 1;
       result.left = 1;
       result.bottom = 1;
@@ -3122,17 +3122,17 @@ nsNativeThemeWin::ClassicGetMinimumWidge
       break;
     case StyleAppearance::Menulist:
     case StyleAppearance::Button:
     case StyleAppearance::Groupbox:
     case StyleAppearance::Listbox:
     case StyleAppearance::Treeview:
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::MenulistTextfield:      
     case StyleAppearance::Statusbar:
     case StyleAppearance::Statusbarpanel:      
     case StyleAppearance::Resizerpanel:
     case StyleAppearance::Progresschunk:
     case StyleAppearance::Tooltip:
     case StyleAppearance::ProgressBar:
     case StyleAppearance::ProgressbarVertical:
@@ -3382,17 +3382,17 @@ nsresult nsNativeThemeWin::ClassicGetThe
       }
       return NS_OK;
     }
     case StyleAppearance::Listbox:
     case StyleAppearance::Treeview:
     case StyleAppearance::NumberInput:
     case StyleAppearance::FocusOutline:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Menulist:
     case StyleAppearance::MenulistTextfield:
     case StyleAppearance::Range:
     case StyleAppearance::RangeThumb:
     case StyleAppearance::ScrollbarthumbVertical:
     case StyleAppearance::ScrollbarthumbHorizontal:     
     case StyleAppearance::ScrollbarVertical:
     case StyleAppearance::ScrollbarHorizontal:      
@@ -3814,17 +3814,17 @@ RENDER_AGAIN:
       oldTA = ::SetTextAlign(hdc, TA_TOP | TA_LEFT | TA_NOUPDATECP);
       ::DrawFrameControl(hdc, &widgetRect, part, state);
       ::SetTextAlign(hdc, oldTA);
       break;
     }
     // Draw controls with 2px 3D inset border
     case StyleAppearance::NumberInput:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
     case StyleAppearance::Listbox:
     case StyleAppearance::Menulist:
     case StyleAppearance::MenulistTextfield: {
       // Paint the border, except for 'menulist-textfield' that isn't focused:
       if (aAppearance != StyleAppearance::MenulistTextfield || focused) {
         // Draw inset edge
         ::DrawEdge(hdc, &widgetRect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
       }
@@ -4182,17 +4182,17 @@ RENDER_AGAIN:
 uint32_t
 nsNativeThemeWin::GetWidgetNativeDrawingFlags(StyleAppearance aAppearance)
 {
   switch (aAppearance) {
     case StyleAppearance::Button:
     case StyleAppearance::NumberInput:
     case StyleAppearance::FocusOutline:
     case StyleAppearance::Textfield:
-    case StyleAppearance::TextfieldMultiline:
+    case StyleAppearance::Textarea:
 
     case StyleAppearance::Menulist:
     case StyleAppearance::MenulistTextfield:
       return
         gfxWindowsNativeDrawing::CANNOT_DRAW_TO_COLOR_ALPHA |
         gfxWindowsNativeDrawing::CAN_AXIS_ALIGNED_SCALE |
         gfxWindowsNativeDrawing::CANNOT_COMPLEX_TRANSFORM;