[iOS] Input type=time elements styled with SVG fonts have 0 width
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jun 2014 21:28:40 +0000 (21:28 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jun 2014 21:28:40 +0000 (21:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=133524

Reviewed by Simon Fraser.

Source/WebCore:
Refactor how the LocalizedDateCache returns maximum widths for input elements. Currently,
measuring the width of an SVG font requires a RenderObject for context, which the
LocalizedDateCache can't know about (it would be a platform violation). Instead, the
LocalizedDateCache can return the strings that it would use to measure the width, and the
caller can actually run the width computation.

Test: fast/forms/time-input-svg-font.html

* platform/text/PlatformLocale.h:
* platform/text/ios/LocalizedDateCache.h:
* platform/text/ios/LocalizedDateCache.mm:
(WebCore::LocalizedDateCache::maximumWidthForDateType): Take a delegate which can
measure text
(WebCore::LocalizedDateCache::calculateMaximumWidth): Perform maximum width
computation using delegate.
* platform/text/mac/LocaleMac.h:
* platform/text/mac/LocaleMac.mm:
(WebCore::LocaleMac::formatDateTime):
(WebCore::LocaleMac::maximumWidthForDateType): Deleted. Short-circuit this and go
directly to the LocalizedDateCache. This makes sense because we have to explicitly
insert computed values back into the cache in this new model.
* rendering/RenderThemeIOS.mm:
(WebCore::adjustInputElementButtonStyle): Create a delegate and pass it to the
LocalizedDateCache

LayoutTests:
Simply render a variety of input elements with SVG fonts, and make sure they have sane widths. Note that this
test is not platform-specific, even though the bug is.

* fast/forms/time-input-svg-font-expected.txt: Added.
* fast/forms/time-input-svg-font.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170072 268f45cc-cd09-0410-ab3c-d52691b4dbfc

19 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/forms/time-input-svg-font-expected.txt [new file with mode: 0644]
LayoutTests/fast/forms/time-input-svg-font.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/platform/efl/RenderThemeEfl.cpp
Source/WebCore/platform/efl/RenderThemeEfl.h
Source/WebCore/platform/gtk/RenderThemeGtk.cpp
Source/WebCore/platform/gtk/RenderThemeGtk.h
Source/WebCore/platform/text/PlatformLocale.h
Source/WebCore/platform/text/ios/LocalizedDateCache.h
Source/WebCore/platform/text/ios/LocalizedDateCache.mm
Source/WebCore/platform/text/mac/LocaleMac.h
Source/WebCore/platform/text/mac/LocaleMac.mm
Source/WebCore/rendering/RenderTheme.cpp
Source/WebCore/rendering/RenderTheme.h
Source/WebCore/rendering/RenderThemeIOS.h
Source/WebCore/rendering/RenderThemeIOS.mm
Source/WebCore/rendering/RenderThemeMac.h
Source/WebCore/rendering/RenderThemeMac.mm

index af8309f..24991a8 100644 (file)
@@ -1,3 +1,16 @@
+2014-06-17  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [iOS] Input type=time elements styled with SVG fonts have 0 width
+        https://bugs.webkit.org/show_bug.cgi?id=133524
+
+        Reviewed by Simon Fraser.
+
+        Simply render a variety of input elements with SVG fonts, and make sure they have sane widths. Note that this
+        test is not platform-specific, even though the bug is.
+
+        * fast/forms/time-input-svg-font-expected.txt: Added.
+        * fast/forms/time-input-svg-font.html: Added.
+
 2014-06-17  Simon Fraser  <simon.fraser@apple.com>
 
         [UI-side compositing] fix reflections on composited layers
diff --git a/LayoutTests/fast/forms/time-input-svg-font-expected.txt b/LayoutTests/fast/forms/time-input-svg-font-expected.txt
new file mode 100644 (file)
index 0000000..a468cd5
--- /dev/null
@@ -0,0 +1,3 @@
+This test makes sure that input elements get rendered with a sane width. You should see five time input elements, followed by five "PASS"es.
+    
+Pass Pass Pass Pass Pass
diff --git a/LayoutTests/fast/forms/time-input-svg-font.html b/LayoutTests/fast/forms/time-input-svg-font.html
new file mode 100644 (file)
index 0000000..25ae539
--- /dev/null
@@ -0,0 +1,40 @@
+<style>
+@font-face {
+    font-family: 'SVGraffiti';
+    src: url("../../svg/custom/resources/graffiti.svg") format(svg)
+}
+</style>
+<div>
+This test makes sure that input elements get rendered with
+a sane width. You should see five time input elements, followed by five "PASS"es.
+</div>
+<div style="font-family: SVGraffiti;">
+<input id="i" type="time">
+<input id="d" type="date">
+<input id="dt" type="datetime">
+<input id="dtl" type="datetime-local">
+<input id="m" type="month">
+</div>
+<div id="console"></div>
+<script>
+function test(inputId) {
+    if (document.getElementById("i").offsetWidth > 50)
+        return "Pass"
+    else
+        return "Fail"
+}
+
+window.setTimeout((function() {
+    document.getElementById("console").textContent += test("i") + " ";
+    document.getElementById("console").textContent += test("d") + " ";
+    document.getElementById("console").textContent += test("dt") + " ";
+    document.getElementById("console").textContent += test("dtl") + " ";
+    document.getElementById("console").textContent += test("m");
+    if (window.testRunner)
+        testRunner.notifyDone();
+}), 0);
+if (window.testRunner) {
+    testRunner.waitUntilDone();
+    testRunner.dumpAsText();
+}
+</script>
index 2be31fc..ac2933b 100644 (file)
@@ -1,3 +1,35 @@
+2014-06-17  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [iOS] Input type=time elements styled with SVG fonts have 0 width
+        https://bugs.webkit.org/show_bug.cgi?id=133524
+
+        Reviewed by Simon Fraser.
+
+        Refactor how the LocalizedDateCache returns maximum widths for input elements. Currently,
+        measuring the width of an SVG font requires a RenderObject for context, which the
+        LocalizedDateCache can't know about (it would be a platform violation). Instead, the
+        LocalizedDateCache can return the strings that it would use to measure the width, and the
+        caller can actually run the width computation.
+
+        Test: fast/forms/time-input-svg-font.html
+
+        * platform/text/PlatformLocale.h:
+        * platform/text/ios/LocalizedDateCache.h:
+        * platform/text/ios/LocalizedDateCache.mm:
+        (WebCore::LocalizedDateCache::maximumWidthForDateType): Take a delegate which can
+        measure text
+        (WebCore::LocalizedDateCache::calculateMaximumWidth): Perform maximum width
+        computation using delegate.
+        * platform/text/mac/LocaleMac.h:
+        * platform/text/mac/LocaleMac.mm:
+        (WebCore::LocaleMac::formatDateTime):
+        (WebCore::LocaleMac::maximumWidthForDateType): Deleted. Short-circuit this and go
+        directly to the LocalizedDateCache. This makes sense because we have to explicitly
+        insert computed values back into the cache in this new model.
+        * rendering/RenderThemeIOS.mm:
+        (WebCore::adjustInputElementButtonStyle): Create a delegate and pass it to the
+        LocalizedDateCache
+
 2014-06-17  Simon Fraser  <simon.fraser@apple.com>
 
         [UI-side compositing] fix reflections on composited layers
index d701fde..fad0d53 100755 (executable)
@@ -847,20 +847,20 @@ bool RenderThemeEfl::paintMenuList(const RenderObject& object, const PaintInfo&
     return paintThemePart(object, ComboBox, info, IntRect(rect));
 }
 
-void RenderThemeEfl::adjustMenuListButtonStyle(StyleResolver* styleResolver, RenderStyle* style, Element* element) const
+void RenderThemeEfl::adjustMenuListButtonStyle(StyleResolver& styleResolver, RenderStyle& style, Element& element) const
 {
     // Height is locked to auto if height is not specified.
-    style->setHeight(Length(Auto));
+    style.setHeight(Length(Auto));
 
     // The <select> box must be at least 12px high for the button to render the text inside the box without clipping.
     const int dropDownBoxMinHeight = 12;
 
     // Calculate min-height of the <select> element.
-    int minHeight = style->fontMetrics().height();
+    int minHeight = style.fontMetrics().height();
     minHeight = std::max(minHeight, dropDownBoxMinHeight);
-    style->setMinHeight(Length(minHeight, Fixed));
+    style.setMinHeight(Length(minHeight, Fixed));
 
-    adjustMenuListStyle(styleResolver, style, element);
+    adjustMenuListStyle(&styleResolver, &style, &element);
 }
 
 bool RenderThemeEfl::paintMenuListButtonDecorations(const RenderObject& object, const PaintInfo& info, const FloatRect& rect)
index 61d9d6c..6039e9c 100644 (file)
@@ -128,7 +128,7 @@ public:
     virtual void adjustMenuListStyle(StyleResolver*, RenderStyle*, Element*) const override;
     virtual bool paintMenuList(const RenderObject&, const PaintInfo&, const FloatRect&) override;
 
-    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const override;
+    virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const override;
     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
 
     virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver*, RenderStyle*, Element*) const override;
index 265617f..d4a7895 100644 (file)
@@ -236,9 +236,9 @@ void RenderThemeGtk::adjustMenuListStyle(StyleResolver*, RenderStyle* style, Ele
     style->resetBorderRadius();
 }
 
-void RenderThemeGtk::adjustMenuListButtonStyle(StyleResolver* styleResolver, RenderStyle* style, Element* e) const
+void RenderThemeGtk::adjustMenuListButtonStyle(StyleResolver& styleResolver, RenderStyle& style, Element& e) const
 {
-    adjustMenuListStyle(styleResolver, style, e);
+    adjustMenuListStyle(&styleResolver, &style, &e);
 }
 
 bool RenderThemeGtk::paintMenuListButtonDecorations(const RenderObject& object, const PaintInfo& info, const FloatRect& rect)
index a125055..f0438d2 100644 (file)
@@ -136,7 +136,7 @@ private:
     // Aqua themed controls whenever possible. We always want to use GTK+ theming, so
     // we don't maintain this differentiation.
     virtual void adjustMenuListStyle(StyleResolver*, RenderStyle*, Element*) const override;
-    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const override;
+    virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const override;
     virtual bool paintMenuList(const RenderObject&, const PaintInfo&, const FloatRect&) override;
     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
 
index 9fc639c..ef8522c 100644 (file)
@@ -124,12 +124,6 @@ public:
 #endif // !PLATFORM(IOS)
 #endif
 
-#if PLATFORM(IOS)
-    // FIXME: This code should be merged with Open Source in a way that is future compatible.
-    // Maximum width for a formatted date string with a specified font.
-    virtual float maximumWidthForDateType(DateComponents::Type, const Font&) = 0;
-#endif
-
     virtual ~Locale();
 
 protected:
index d7ad2bc..af5bde4 100644 (file)
 #if PLATFORM(IOS)
 
 namespace WebCore {
+    
+class MeasureTextClient {
+public:
+    virtual float measureText(const String&) const = 0;
+    virtual ~MeasureTextClient() { }
+};
 
 class LocalizedDateCache {
 public:
     NSDateFormatter *formatterForDateType(DateComponents::Type);
-    float maximumWidthForDateType(DateComponents::Type, const Font&);
+    float maximumWidthForDateType(DateComponents::Type, const Font&, const MeasureTextClient&);
     void localeChanged();
 
 private:
@@ -48,7 +54,7 @@ private:
     ~LocalizedDateCache();
 
     NSDateFormatter *createFormatterForType(DateComponents::Type);
-    float calculateMaximumWidth(DateComponents::Type, const Font&);
+    float calculateMaximumWidth(DateComponents::Type, const MeasureTextClient&);
 
     // Using int instead of DateComponents::Type for the key because the enum
     // does not have a default hash and hash traits. Usage of the maps
index cdd8c6b..1a3d6cb 100644 (file)
@@ -84,7 +84,7 @@ NSDateFormatter *LocalizedDateCache::formatterForDateType(DateComponents::Type t
     return dateFormatter;
 }
 
-float LocalizedDateCache::maximumWidthForDateType(DateComponents::Type type, const Font& font)
+float LocalizedDateCache::maximumWidthForDateType(DateComponents::Type type, const Font& font, const MeasureTextClient& measurer)
 {
     int key = static_cast<int>(type);
     if (m_font == font) {
@@ -95,7 +95,7 @@ float LocalizedDateCache::maximumWidthForDateType(DateComponents::Type type, con
         m_maxWidthMap.clear();
     }
 
-    float calculatedMaximum = calculateMaximumWidth(type, font);
+    float calculatedMaximum = calculateMaximumWidth(type, measurer);
     m_maxWidthMap.set(key, calculatedMaximum);
     return calculatedMaximum;
 }
@@ -144,7 +144,7 @@ NSDateFormatter *LocalizedDateCache::createFormatterForType(DateComponents::Type
 
 // NOTE: This does not check for the widest day of the week.
 // We assume no formatter option shows that information.
-float LocalizedDateCache::calculateMaximumWidth(DateComponents::Type type, const Font& font)
+float LocalizedDateCache::calculateMaximumWidth(DateComponents::Type type, const MeasureTextClient& measurer)
 {
     float maximumWidth = 0;
 
@@ -182,8 +182,7 @@ float LocalizedDateCache::calculateMaximumWidth(DateComponents::Type type, const
         [components.get() setMonth:(i + 1)];
         NSDate *date = [gregorian.get() dateFromComponents:components.get()];
         NSString *formattedDate = [dateFormatter stringFromDate:date];
-        String str = String(formattedDate);
-        maximumWidth = max(maximumWidth, font.width(str));
+        maximumWidth = max(maximumWidth, measurer.measureText(String(formattedDate)));
     }
 
     return maximumWidth;
index c4a1e9a..53a6db7 100644 (file)
@@ -51,7 +51,6 @@ public:
     ~LocaleMac();
 
 #if PLATFORM(IOS)
-    virtual float maximumWidthForDateType(DateComponents::Type, const Font&) override;
     virtual String formatDateTime(const DateComponents&, FormatType = FormatTypeUnspecified) override;
 #endif
 
index 3926114..c3724c9 100644 (file)
@@ -133,14 +133,6 @@ String LocaleMac::formatDateTime(const DateComponents& dateComponents, FormatTyp
     NSDateFormatter *dateFormatter = localizedDateCache().formatterForDateType(type);
     return [dateFormatter stringFromDate:date];
 }
-
-float LocaleMac::maximumWidthForDateType(DateComponents::Type type, const Font& font)
-{
-    ASSERT(type != DateComponents::Invalid);
-    ASSERT(type != DateComponents::Week);
-
-    return localizedDateCache().maximumWidthForDateType(type, font);
-}
 #endif
 
 #if ENABLE(DATE_AND_TIME_INPUT_TYPES)
index bcaef71..84e0a2d 100644 (file)
@@ -210,7 +210,7 @@ void RenderTheme::adjustStyle(StyleResolver& styleResolver, RenderStyle& style,
     case MenulistPart:
         return adjustMenuListStyle(&styleResolver, &style, e);
     case MenulistButtonPart:
-        return adjustMenuListButtonStyle(&styleResolver, &style, e);
+        return adjustMenuListButtonStyle(styleResolver, style, *e);
     case MediaPlayButtonPart:
     case MediaCurrentTimePart:
     case MediaTimeRemainingPart:
@@ -1119,7 +1119,7 @@ bool RenderTheme::shouldHaveSpinButton(HTMLInputElement* inputElement) const
     return inputElement->isSteppable() && !inputElement->isRangeControl();
 }
 
-void RenderTheme::adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const
+void RenderTheme::adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const
 {
 }
 
index 770cf67..8f9e009 100644 (file)
@@ -302,7 +302,7 @@ protected:
     virtual bool paintMenuList(const RenderObject&, const PaintInfo&, const FloatRect&) { return true; }
     virtual bool paintMenuListDecorations(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }
 
-    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const;
+    virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const;
     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) { return true; }
 
     virtual bool paintPushButtonDecorations(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }
index 1be5e7d..250ef49 100644 (file)
@@ -71,7 +71,7 @@ protected:
     virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
     virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
 
-    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const override;
+    virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const override;
     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
 
     virtual void adjustSliderTrackStyle(StyleResolver*, RenderStyle*, Element*) const override;
index 3fc79d3..3a39fb3 100644 (file)
@@ -44,6 +44,7 @@
 #import "HTMLNames.h"
 #import "HTMLSelectElement.h"
 #import "Icon.h"
+#import "LocalizedDateCache.h"
 #import "NodeRenderStyle.h"
 #import "Page.h"
 #import "PlatformLocale.h"
@@ -536,67 +537,91 @@ void RenderThemeIOS::adjustRoundBorderRadius(RenderStyle& style, RenderBox* box)
     style.setBorderRadius(LengthSize(radiusWidth, radiusHeight));
 }
 
-static void applyCommonButtonPaddingToStyle(RenderStyle* style, Element* element)
+static void applyCommonButtonPaddingToStyle(RenderStyle& style, Element& element)
 {
-    Document& document = element->document();
+    Document& document = element.document();
     RefPtr<CSSPrimitiveValue> emSize = CSSPrimitiveValue::create(0.5, CSSPrimitiveValue::CSS_EMS);
-    int pixels = emSize->computeLength<int>(CSSToLengthConversionData(style, document.renderStyle(), document.renderView(), document.frame()->pageZoomFactor()));
-    style->setPaddingBox(LengthBox(0, pixels, 0, pixels));
+    int pixels = emSize->computeLength<int>(CSSToLengthConversionData(&style, document.renderStyle(), document.renderView(), document.frame()->pageZoomFactor()));
+    style.setPaddingBox(LengthBox(0, pixels, 0, pixels));
 }
 
-static void adjustSelectListButtonStyle(RenderStyle* style, Element* element)
+static void adjustSelectListButtonStyle(RenderStyle& style, Element& element)
 {
     // Enforce "padding: 0 0.5em".
     applyCommonButtonPaddingToStyle(style, element);
 
     // Enforce "line-height: normal".
-    style->setLineHeight(Length(-100.0, Percent));
+    style.setLineHeight(Length(-100.0, Percent));
 }
+    
+class RenderThemeMeasureTextClient : public MeasureTextClient {
+public:
+    RenderThemeMeasureTextClient(const Font& font, RenderObject& renderObject, const RenderStyle& style)
+        : m_font(font)
+        , m_renderObject(renderObject)
+        , m_style(style)
+    {
+    }
+    virtual float measureText(const String& string) const override
+    {
+        TextRun run = RenderBlock::constructTextRun(&m_renderObject, m_font, string, m_style, TextRun::AllowTrailingExpansion | TextRun::ForbidLeadingExpansion, DefaultTextRunFlags);
+        return m_font.width(run);
+    }
+private:
+    const Font& m_font;
+    RenderObject& m_renderObject;
+    const RenderStyle& m_style;
+};
 
-static void adjustInputElementButtonStyle(RenderStyle* style, HTMLInputElement* inputElement)
+static void adjustInputElementButtonStyle(RenderStyle& style, HTMLInputElement& inputElement)
 {
     // Always Enforce "padding: 0 0.5em".
     applyCommonButtonPaddingToStyle(style, inputElement);
 
     // Don't adjust the style if the width is specified.
-    if (style->width().isFixed() && style->width().value() > 0)
+    if (style.width().isFixed() && style.width().value() > 0)
         return;
 
     // Don't adjust for unsupported date input types.
-    DateComponents::Type dateType = inputElement->dateType();
+    DateComponents::Type dateType = inputElement.dateType();
     if (dateType == DateComponents::Invalid || dateType == DateComponents::Week)
         return;
 
     // Enforce the width and set the box-sizing to content-box to not conflict with the padding.
-    Font font = style->font();
+    Font font = style.font();
+    
+    RenderObject* renderer = inputElement.renderer();
+    if (font.isSVGFont() && !renderer)
+        return;
+    
     FontCachePurgePreventer fontCachePurgePreventer;
-    // FIXME: Choose an appropriate width for these elements when
-    // styled with SVG fonts (rather than simply 0).
-    // https://bugs.webkit.org/show_bug.cgi?id=133524
-    float maximumWidth = font.isSVGFont() ? 0 : inputElement->locale().maximumWidthForDateType(dateType, font);
+    float maximumWidth = localizedDateCache().maximumWidthForDateType(dateType, font, RenderThemeMeasureTextClient(font, *renderer, style));
+
+    ASSERT(maximumWidth >= 0);
+
     if (maximumWidth > 0) {    
         int width = static_cast<int>(maximumWidth + MenuListButtonPaddingRight);
-        style->setWidth(Length(width, Fixed));
-        style->setBoxSizing(CONTENT_BOX);
+        style.setWidth(Length(width, Fixed));
+        style.setBoxSizing(CONTENT_BOX);
     }
 }
 
-void RenderThemeIOS::adjustMenuListButtonStyle(StyleResolver*, RenderStyle* style, Element* element) const
+void RenderThemeIOS::adjustMenuListButtonStyle(StyleResolver&, RenderStyle& style, Element& element) const
 {
     // Set the min-height to be at least MenuListMinHeight.
-    if (style->height().isAuto())
-        style->setMinHeight(Length(std::max(MenuListMinHeight, static_cast<int>(MenuListBaseHeight / MenuListBaseFontSize * style->fontDescription().computedSize())), Fixed));
+    if (style.height().isAuto())
+        style.setMinHeight(Length(std::max(MenuListMinHeight, static_cast<int>(MenuListBaseHeight / MenuListBaseFontSize * style.fontDescription().computedSize())), Fixed));
     else
-        style->setMinHeight(Length(MenuListMinHeight, Fixed));
+        style.setMinHeight(Length(MenuListMinHeight, Fixed));
 
     // Enforce some default styles in the case that this is a non-multiple <select> element,
     // or a date input. We don't force these if this is just an element with
     // "-webkit-appearance: menulist-button".
-    if (element->hasTagName(HTMLNames::selectTag) && !element->hasAttribute(HTMLNames::multipleAttr))
+    if (element.hasTagName(HTMLNames::selectTag) && !element.hasAttribute(HTMLNames::multipleAttr))
         adjustSelectListButtonStyle(style, element);
-    else if (element->hasTagName(HTMLNames::inputTag)) {
-        HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(element);
-        adjustInputElementButtonStyle(style, inputElement);
+    else if (element.hasTagName(HTMLNames::inputTag)) {
+        HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(&element);
+        adjustInputElementButtonStyle(style, *inputElement);
     }
 }
 
@@ -1046,7 +1071,7 @@ bool RenderThemeIOS::paintFileUploadIconDecorations(const RenderObject&, const R
 
     return false;
 }
-    
+
 Color RenderThemeIOS::platformActiveSelectionBackgroundColor() const
 {
     return Color::transparent;
index 2ddce8f..3aa9022 100644 (file)
@@ -134,7 +134,7 @@ protected:
     virtual void adjustMenuListStyle(StyleResolver*, RenderStyle*, Element*) const override;
 
     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
-    virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const override;
+    virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const override;
 
 #if ENABLE(PROGRESS_ELEMENT)
     virtual void adjustProgressBarStyle(StyleResolver*, RenderStyle*, Element*) const override;
index 611e906..2c0982d 100644 (file)
@@ -1420,17 +1420,17 @@ PopupMenuStyle::PopupMenuSize RenderThemeMac::popupMenuSize(const RenderStyle* s
     }
 }
 
-void RenderThemeMac::adjustMenuListButtonStyle(StyleResolver*, RenderStyle* style, Element*) const
+void RenderThemeMac::adjustMenuListButtonStyle(StyleResolver&, RenderStyle& style, Element&) const
 {
-    float fontScale = style->fontSize() / baseFontSize;
+    float fontScale = style.fontSize() / baseFontSize;
 
-    style->resetPadding();
-    style->setBorderRadius(IntSize(int(baseBorderRadius + fontScale - 1), int(baseBorderRadius + fontScale - 1))); // FIXME: Round up?
+    style.resetPadding();
+    style.setBorderRadius(IntSize(int(baseBorderRadius + fontScale - 1), int(baseBorderRadius + fontScale - 1))); // FIXME: Round up?
 
     const int minHeight = 15;
-    style->setMinHeight(Length(minHeight, Fixed));
+    style.setMinHeight(Length(minHeight, Fixed));
 
-    style->setLineHeight(RenderStyle::initialLineHeight());
+    style.setLineHeight(RenderStyle::initialLineHeight());
 }
 
 void RenderThemeMac::setPopupButtonCellState(const RenderObject& o, const IntSize& buttonSize)