Changeset 194817 in webkit


Ignore:
Timestamp:
Jan 8, 2016 10:27:42 PM (8 years ago)
Author:
Alan Bujtas
Message:

Absolute positioning -webkit-search-cancel-button crashes Safari.
https://bugs.webkit.org/show_bug.cgi?id=152847
<rdar://problem/24112087>

Reviewed by Simon Fraser.

Do not call offsetFromContainer while resolving the painting position for the search/cancel button renderer.
It skips the static positioned parent input renderer, when the search/cancel renderer is absolute positioned.
This patch also fixes a rendering glitch when the margin-right is > 0.

Source/WebCore:

Test: fast/forms/absolute-positioned-custom-search-cancel-crash.html

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::paintSearchFieldCancelButton):
(WebCore::RenderTheme::paintSearchFieldResultsDecorationPart):
(WebCore::RenderTheme::paintSearchFieldResultsButton):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::convertToPaintingPosition):
(WebCore::RenderThemeMac::paintSearchFieldCancelButton):
(WebCore::RenderThemeMac::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeMac::paintSearchFieldResultsButton):
(WebCore::RenderThemeMac::convertToPaintingRect): Deleted.

LayoutTests:

  • fast/forms/absolute-positioned-custom-search-cancel-crash-expected.txt: Added.
  • fast/forms/absolute-positioned-custom-search-cancel-crash.html: Added.
Location:
trunk
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r194815 r194817  
     12016-01-08  Zalan Bujtas  <zalan@apple.com>
     2
     3        Absolute positioning -webkit-search-cancel-button crashes Safari.
     4        https://bugs.webkit.org/show_bug.cgi?id=152847
     5        <rdar://problem/24112087>
     6
     7        Reviewed by Simon Fraser.
     8
     9        Do not call offsetFromContainer while resolving the painting position for the search/cancel button renderer.
     10        It skips the static positioned parent input renderer, when the search/cancel renderer is absolute positioned.
     11        This patch also fixes a rendering glitch when the margin-right is > 0.
     12
     13        * fast/forms/absolute-positioned-custom-search-cancel-crash-expected.txt: Added.
     14        * fast/forms/absolute-positioned-custom-search-cancel-crash.html: Added.
     15
    1162016-01-08  Brady Eidson  <beidson@apple.com>
    217
  • trunk/Source/WebCore/ChangeLog

    r194816 r194817  
     12016-01-08  Zalan Bujtas  <zalan@apple.com>
     2
     3        Absolute positioning -webkit-search-cancel-button crashes Safari.
     4        https://bugs.webkit.org/show_bug.cgi?id=152847
     5        <rdar://problem/24112087>
     6
     7        Reviewed by Simon Fraser.
     8
     9        Do not call offsetFromContainer while resolving the painting position for the search/cancel button renderer.
     10        It skips the static positioned parent input renderer, when the search/cancel renderer is absolute positioned.
     11        This patch also fixes a rendering glitch when the margin-right is > 0.
     12
     13        Test: fast/forms/absolute-positioned-custom-search-cancel-crash.html
     14
     15        * rendering/RenderTheme.h:
     16        (WebCore::RenderTheme::paintSearchFieldCancelButton):
     17        (WebCore::RenderTheme::paintSearchFieldResultsDecorationPart):
     18        (WebCore::RenderTheme::paintSearchFieldResultsButton):
     19        * rendering/RenderThemeMac.h:
     20        * rendering/RenderThemeMac.mm:
     21        (WebCore::convertToPaintingPosition):
     22        (WebCore::RenderThemeMac::paintSearchFieldCancelButton):
     23        (WebCore::RenderThemeMac::paintSearchFieldResultsDecorationPart):
     24        (WebCore::RenderThemeMac::paintSearchFieldResultsButton):
     25        (WebCore::RenderThemeMac::convertToPaintingRect): Deleted.
     26
    1272016-01-08  Simon Fraser  <simon.fraser@apple.com>
    228
  • trunk/Source/WebCore/rendering/RenderTheme.h

    r194318 r194817  
    339339
    340340    virtual void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, Element*) const;
    341     virtual bool paintSearchFieldCancelButton(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }
     341    virtual bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) { return true; }
    342342
    343343    virtual void adjustSearchFieldDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const;
     
    345345
    346346    virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const;
    347     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }
     347    virtual bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) { return true; }
    348348
    349349    virtual void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, Element*) const;
    350     virtual bool paintSearchFieldResultsButton(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }
     350    virtual bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) { return true; }
    351351
    352352    virtual void adjustMediaControlStyle(StyleResolver&, RenderStyle&, Element*) const;
  • trunk/Source/WebCore/rendering/RenderThemeEfl.cpp

    r194496 r194817  
    933933}
    934934
    935 bool RenderThemeEfl::paintSearchFieldResultsButton(const RenderObject& object, const PaintInfo& info, const IntRect& rect)
     935bool RenderThemeEfl::paintSearchFieldResultsButton(const RenderBox& object, const PaintInfo& info, const IntRect& rect)
    936936{
    937937    return paintThemePart(object, SearchFieldResultsButton, info, rect);
     
    955955}
    956956
    957 bool RenderThemeEfl::paintSearchFieldResultsDecorationPart(const RenderObject& object, const PaintInfo& info, const IntRect& rect)
     957bool RenderThemeEfl::paintSearchFieldResultsDecorationPart(const RenderBox& object, const PaintInfo& info, const IntRect& rect)
    958958{
    959959    return paintThemePart(object, SearchFieldResultsDecoration, info, rect);
     
    979979}
    980980
    981 bool RenderThemeEfl::paintSearchFieldCancelButton(const RenderObject& object, const PaintInfo& info, const IntRect& rect)
     981bool RenderThemeEfl::paintSearchFieldCancelButton(const RenderBox& object, const PaintInfo& info, const IntRect& rect)
    982982{
    983983    return paintThemePart(object, SearchFieldCancelButton, info, rect);
  • trunk/Source/WebCore/rendering/RenderThemeEfl.h

    r189830 r194817  
    131131
    132132    virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const override;
    133     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) override;
     133    virtual bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) override;
    134134
    135135    virtual void adjustSearchFieldStyle(StyleResolver&, RenderStyle&, Element*) const override;
     
    137137
    138138    virtual void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    139     virtual bool paintSearchFieldResultsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     139    virtual bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    140140
    141141    virtual void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    142     virtual bool paintSearchFieldCancelButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     142    virtual bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    143143
    144144    virtual void adjustSliderTrackStyle(StyleResolver&, RenderStyle&, Element*) const override;
  • trunk/Source/WebCore/rendering/RenderThemeGtk.cpp

    r194377 r194817  
    10031003}
    10041004
    1005 bool RenderThemeGtk::paintSearchFieldResultsButton(const RenderObject& o, const PaintInfo& i, const IntRect& rect)
     1005bool RenderThemeGtk::paintSearchFieldResultsButton(const RenderBox& o, const PaintInfo& i, const IntRect& rect)
    10061006{
    10071007    return paintSearchFieldResultsDecorationPart(o, i, rect);
     
    10541054}
    10551055
    1056 bool RenderThemeGtk::paintSearchFieldResultsDecorationPart(const RenderObject& renderObject, const PaintInfo& paintInfo, const IntRect& rect)
     1056bool RenderThemeGtk::paintSearchFieldResultsDecorationPart(const RenderBox& renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    10571057{
    10581058    IntRect iconRect = centerRectVerticallyInParentInputElement(renderObject, rect);
     
    10731073}
    10741074
    1075 bool RenderThemeGtk::paintSearchFieldCancelButton(const RenderObject& renderObject, const PaintInfo& paintInfo, const IntRect& rect)
     1075bool RenderThemeGtk::paintSearchFieldCancelButton(const RenderBox& renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    10761076{
    10771077    IntRect iconRect = centerRectVerticallyInParentInputElement(renderObject, rect);
  • trunk/Source/WebCore/rendering/RenderThemeGtk.h

    r189830 r194817  
    134134
    135135    virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const override;
    136     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) override;
     136    virtual bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) override;
    137137
    138138    virtual void adjustSearchFieldStyle(StyleResolver&, RenderStyle&, Element*) const override;
     
    140140
    141141    virtual void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    142     virtual bool paintSearchFieldResultsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     142    virtual bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    143143
    144144    virtual void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    145     virtual bool paintSearchFieldCancelButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     145    virtual bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    146146
    147147    virtual bool paintSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
  • trunk/Source/WebCore/rendering/RenderThemeMac.h

    r194318 r194817  
    145145
    146146    virtual void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    147     virtual bool paintSearchFieldCancelButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     147    virtual bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    148148
    149149    virtual void adjustSearchFieldDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const override;
     
    151151
    152152    virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const override;
    153     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) override;
     153    virtual bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) override;
    154154
    155155    virtual void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    156     virtual bool paintSearchFieldResultsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     156    virtual bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    157157
    158158#if ENABLE(VIDEO)
     
    172172private:
    173173    virtual String fileListNameForWidth(const FileList*, const FontCascade&, int width, bool multipleFilesAllowed) const override;
    174 
    175     FloatRect convertToPaintingRect(const RenderObject& inputRenderer, const RenderObject& partRenderer, const FloatRect& inputRect, const IntRect&) const;
    176174
    177175    virtual Color systemColor(CSSValueID) const override;
  • trunk/Source/WebCore/rendering/RenderThemeMac.mm

    r194496 r194817  
    674674}
    675675
    676 FloatRect RenderThemeMac::convertToPaintingRect(const RenderObject& inputRenderer, const RenderObject& partRenderer, const FloatRect& inputRect, const IntRect& r) const
    677 {
    678     FloatRect partRect(inputRect);
    679 
    680     // Compute an offset between the part renderer and the input renderer
    681     FloatSize offsetFromInputRenderer;
    682     const RenderObject* renderer = &partRenderer;
    683     while (renderer && renderer != &inputRenderer) {
    684         RenderElement* containingRenderer = renderer->container();
    685         ASSERT(containingRenderer);
    686         offsetFromInputRenderer -= roundedIntSize(renderer->offsetFromContainer(*containingRenderer, LayoutPoint()));
    687         renderer = containingRenderer;
    688     }
    689     // If the input renderer was not a container, something went wrong
    690     ASSERT(renderer == &inputRenderer);
    691     // Move the rect into partRenderer's coords
    692     partRect.move(offsetFromInputRenderer);
    693     // Account for the local drawing offset (tx, ty)
    694     partRect.move(r.x(), r.y());
    695 
    696     return partRect;
     676static FloatPoint convertToPaintingPosition(const RenderBox& inputRenderer, const RenderBox& customButtonRenderer, const FloatPoint& customButtonLocalPosition,
     677    const IntPoint& paintOffset)
     678{
     679    IntPoint offsetFromInputRenderer = roundedIntPoint(customButtonRenderer.localToContainerPoint(customButtonRenderer.contentBoxRect().location(), &inputRenderer));
     680    FloatPoint paintingPosition = customButtonLocalPosition;
     681    paintingPosition.moveBy(-offsetFromInputRenderer);
     682    paintingPosition.moveBy(paintOffset);
     683    return paintingPosition;
    697684}
    698685
     
    16751662}
    16761663
    1677 bool RenderThemeMac::paintSearchFieldCancelButton(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
    1678 {
    1679     if (!o.node())
     1664bool RenderThemeMac::paintSearchFieldCancelButton(const RenderBox& box, const PaintInfo& paintInfo, const IntRect& r)
     1665{
     1666    if (!box.element())
    16801667        return false;
    1681     Element* input = o.node()->shadowHost();
     1668    Element* input = box.element()->shadowHost();
    16821669    if (!input)
    1683         input = downcast<Element>(o.node());
    1684 
    1685     if (!input->renderer()->isBox())
     1670        input = box.element();
     1671
     1672    if (!is<RenderBox>(input->renderer()))
    16861673        return false;
    16871674
     1675    const RenderBox& inputBox = downcast<RenderBox>(*input->renderer());
    16881676    LocalCurrentGraphicsContext localContext(paintInfo.context());
    1689     setSearchCellState(*input->renderer(), r);
     1677    setSearchCellState(inputBox, r);
    16901678
    16911679    NSSearchFieldCell* search = this->search();
    16921680
    16931681    if (!input->isDisabledFormControl() && (is<HTMLTextFormControlElement>(*input) && !downcast<HTMLTextFormControlElement>(*input).isReadOnly()))
    1694         updatePressedState([search cancelButtonCell], o);
     1682        updatePressedState([search cancelButtonCell], box);
    16951683    else if ([[search cancelButtonCell] isHighlighted])
    16961684        [[search cancelButtonCell] setHighlighted:NO];
     
    16981686    GraphicsContextStateSaver stateSaver(paintInfo.context());
    16991687
    1700     float zoomLevel = o.style().effectiveZoom();
    1701 
    1702     FloatRect localBounds = [search cancelButtonRectForBounds:NSRect(snappedIntRect(input->renderBox()->contentBoxRect()))];
    1703     localBounds = convertToPaintingRect(*input->renderer(), o, localBounds, r);
    1704 
    1705     FloatRect unzoomedRect(localBounds);
     1688    float zoomLevel = box.style().effectiveZoom();
     1689
     1690    FloatRect localBounds = [search cancelButtonRectForBounds:NSRect(snappedIntRect(inputBox.contentBoxRect()))];
     1691    FloatPoint paintingPos = convertToPaintingPosition(inputBox, box, localBounds.location(), r.location());
     1692
     1693    FloatRect unzoomedRect(paintingPos, localBounds.size());
    17061694    if (zoomLevel != 1.0f) {
    17071695        unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
     
    17121700    }
    17131701
    1714     [[search cancelButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor(o)];
     1702    [[search cancelButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor(box)];
    17151703    [[search cancelButtonCell] setControlView:nil];
    17161704    return false;
     
    17591747}
    17601748
    1761 bool RenderThemeMac::paintSearchFieldResultsDecorationPart(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
    1762 {
    1763     if (!o.node())
     1749bool RenderThemeMac::paintSearchFieldResultsDecorationPart(const RenderBox& box, const PaintInfo& paintInfo, const IntRect& r)
     1750{
     1751    if (!box.element())
    17641752        return false;
    1765     Node* input = o.node()->shadowHost();
     1753    Element* input = box.element()->shadowHost();
    17661754    if (!input)
    1767         input = o.node();
    1768     if (!input->renderer()->isBox())
     1755        input = box.element();
     1756    if (!is<RenderBox>(input->renderer()))
    17691757        return false;
    1770 
     1758   
     1759    const RenderBox& inputBox = downcast<RenderBox>(*input->renderer());
    17711760    LocalCurrentGraphicsContext localContext(paintInfo.context());
    1772     setSearchCellState(*input->renderer(), r);
     1761    setSearchCellState(inputBox, r);
    17731762
    17741763    NSSearchFieldCell* search = this->search();
     
    17771766        [search setSearchMenuTemplate:nil];
    17781767
    1779     FloatRect localBounds = [search searchButtonRectForBounds:NSRect(snappedIntRect(input->renderBox()->borderBoxRect()))];
    1780     localBounds = convertToPaintingRect(*input->renderer(), o, localBounds, r);
    1781 
    1782     [[search searchButtonCell] drawWithFrame:localBounds inView:documentViewFor(o)];
     1768    FloatRect localBounds = [search searchButtonRectForBounds:NSRect(snappedIntRect(inputBox.borderBoxRect()))];
     1769    FloatPoint paintingPos = convertToPaintingPosition(inputBox, box, localBounds.location(), r.location());
     1770    localBounds.setLocation(paintingPos);
     1771
     1772    [[search searchButtonCell] drawWithFrame:localBounds inView:documentViewFor(box)];
    17831773    [[search searchButtonCell] setControlView:nil];
    17841774    return false;
     
    17941784}
    17951785
    1796 bool RenderThemeMac::paintSearchFieldResultsButton(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
    1797 {
    1798     Node* input = o.node()->shadowHost();
     1786bool RenderThemeMac::paintSearchFieldResultsButton(const RenderBox& box, const PaintInfo& paintInfo, const IntRect& r)
     1787{
     1788    Element* input = box.element()->shadowHost();
    17991789    if (!input)
    1800         input = o.node();
    1801     if (!input->renderer()->isBox())
     1790        input = box.element();
     1791    if (!is<RenderBox>(input->renderer()))
    18021792        return false;
    1803 
     1793   
     1794    const RenderBox& inputBox = downcast<RenderBox>(*input->renderer());
    18041795    LocalCurrentGraphicsContext localContext(paintInfo.context());
    1805     setSearchCellState(*input->renderer(), r);
     1796    setSearchCellState(inputBox, r);
    18061797
    18071798    NSSearchFieldCell* search = this->search();
     
    18111802
    18121803    GraphicsContextStateSaver stateSaver(paintInfo.context());
    1813     float zoomLevel = o.style().effectiveZoom();
    1814 
    1815     FloatRect localBounds = [search searchButtonRectForBounds:NSRect(snappedIntRect(input->renderBox()->contentBoxRect()))];
    1816     localBounds = convertToPaintingRect(*input->renderer(), o, localBounds, r);
    1817 
    1818     IntRect unzoomedRect(localBounds);
     1804    float zoomLevel = box.style().effectiveZoom();
     1805
     1806    FloatRect localBounds = [search searchButtonRectForBounds:NSRect(snappedIntRect(inputBox.contentBoxRect()))];
     1807    FloatPoint paintingPos = convertToPaintingPosition(inputBox, box, localBounds.location(), r.location());
     1808   
     1809    FloatRect unzoomedRect(paintingPos, localBounds.size());
    18191810    if (zoomLevel != 1.0f) {
    18201811        unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
     
    18251816    }
    18261817
    1827     [[search searchButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor(o)];
     1818    [[search searchButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor(box)];
    18281819    [[search searchButtonCell] setControlView:nil];
    18291820
  • trunk/Source/WebCore/rendering/RenderThemeWin.cpp

    r192143 r194817  
    874874}
    875875
    876 bool RenderThemeWin::paintSearchFieldCancelButton(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
     876bool RenderThemeWin::paintSearchFieldCancelButton(const RenderBox& o, const PaintInfo& paintInfo, const IntRect& r)
    877877{
    878878    IntRect bounds = r;
     
    923923}
    924924
    925 bool RenderThemeWin::paintSearchFieldResultsDecorationPart(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
     925bool RenderThemeWin::paintSearchFieldResultsDecorationPart(const RenderBox& o, const PaintInfo& paintInfo, const IntRect& r)
    926926{
    927927    IntRect bounds = r;
     
    956956}
    957957
    958 bool RenderThemeWin::paintSearchFieldResultsButton(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)
     958bool RenderThemeWin::paintSearchFieldResultsButton(const RenderBox& o, const PaintInfo& paintInfo, const IntRect& r)
    959959{
    960960    IntRect bounds = r;
  • trunk/Source/WebCore/rendering/RenderThemeWin.h

    r189830 r194817  
    100100
    101101    virtual void adjustSearchFieldCancelButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    102     virtual bool paintSearchFieldCancelButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     102    virtual bool paintSearchFieldCancelButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    103103
    104104    virtual void adjustSearchFieldDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const override;
     
    106106
    107107    virtual void adjustSearchFieldResultsDecorationPartStyle(StyleResolver&, RenderStyle&, Element*) const override;
    108     virtual bool paintSearchFieldResultsDecorationPart(const RenderObject&, const PaintInfo&, const IntRect&) override;
     108    virtual bool paintSearchFieldResultsDecorationPart(const RenderBox&, const PaintInfo&, const IntRect&) override;
    109109
    110110    virtual void adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyle&, Element*) const override;
    111     virtual bool paintSearchFieldResultsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     111    virtual bool paintSearchFieldResultsButton(const RenderBox&, const PaintInfo&, const IntRect&) override;
    112112
    113113    virtual void themeChanged() override;
Note: See TracChangeset for help on using the changeset viewer.