Changeset 45569 in webkit


Ignore:
Timestamp:
Jul 6, 2009 3:11:40 PM (15 years ago)
Author:
alice.liu@apple.com
Message:

2009-07-06 Alice Liu <alice.liu@apple.com>

Reviewed by Darin Adler.

REGRESSION(r45285): focus rings are black on windows safari
https://bugs.webkit.org/show_bug.cgi?id=26821
<rdar://problem/7018252>

Add a mechanism for setting a custom focus ring color, and relocate the
determination of focus ring color to base class RenderTheme.

No new tests. Already-existing tests run in pixel mode would have caught this regression

  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Move the responsibility of determining focus color to base class RenderTheme.
  • rendering/RenderTheme.cpp: (WebCore::customFocusRingColor): Added static local. (WebCore::RenderTheme::setCustomFocusRingColor): Added (WebCore::RenderTheme::focusRingColor): Use custom color over platform color.
  • rendering/RenderTheme.h: (WebCore::RenderTheme::platformFocusRingColor): default implementation, black color
  • rendering/RenderThemeSafari.cpp: (WebCore::RenderTheme::themeForPage): Circumstances that lead to returning the RenderThemeWin are the same under which we want to use the focus ring color from SafariTheme. (WebCore::RenderThemeSafari::platformFocusRingColor): Renamed from focusRingColor
  • rendering/RenderThemeSafari.h:

Renaming focusRingColor to platformFocusRingColor in these files:

  • rendering/RenderThemeChromiumMac.h:
  • rendering/RenderThemeChromiumMac.mm: (WebCore::RenderThemeChromiumMac::platformFocusRingColor):
  • rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumSkia::platformFocusRingColor):
  • rendering/RenderThemeChromiumSkia.h:
  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::platformFocusRingColor):

Cleanup leftover from removal of WebCore::Color in r45285 in these files:

  • WebCore.order:
  • platform/graphics/Color.h:
Location:
trunk/WebCore
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r45568 r45569  
     12009-07-06  Alice Liu  <alice.liu@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        REGRESSION(r45285): focus rings are black on windows safari
     6        https://bugs.webkit.org/show_bug.cgi?id=26821
     7        <rdar://problem/7018252>
     8
     9        Add a mechanism for setting a custom focus ring color, and relocate the
     10        determination of focus ring color to base class RenderTheme.
     11
     12        No new tests.  Already-existing tests run in pixel mode would have caught this regression
     13
     14        * css/CSSStyleSelector.cpp:
     15        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Move the responsibility
     16        of determining focus color to base class RenderTheme.
     17        * rendering/RenderTheme.cpp:
     18        (WebCore::customFocusRingColor): Added static local.
     19        (WebCore::RenderTheme::setCustomFocusRingColor): Added
     20        (WebCore::RenderTheme::focusRingColor): Use custom color over platform color.
     21        * rendering/RenderTheme.h:
     22        (WebCore::RenderTheme::platformFocusRingColor): default implementation, black color
     23        * rendering/RenderThemeSafari.cpp:
     24        (WebCore::RenderTheme::themeForPage): Circumstances that lead to returning the RenderThemeWin
     25        are the same under which we want to use the focus ring color from SafariTheme.
     26        (WebCore::RenderThemeSafari::platformFocusRingColor): Renamed from focusRingColor
     27        * rendering/RenderThemeSafari.h:
     28
     29        Renaming focusRingColor to platformFocusRingColor in these files:
     30        * rendering/RenderThemeChromiumMac.h:
     31        * rendering/RenderThemeChromiumMac.mm:
     32        (WebCore::RenderThemeChromiumMac::platformFocusRingColor):
     33        * rendering/RenderThemeChromiumSkia.cpp:
     34        (WebCore::RenderThemeChromiumSkia::platformFocusRingColor):
     35        * rendering/RenderThemeChromiumSkia.h:
     36        * rendering/RenderThemeMac.h:
     37        * rendering/RenderThemeMac.mm:
     38        (WebCore::RenderThemeMac::platformFocusRingColor):
     39
     40        Cleanup leftover from removal of WebCore::Color in r45285 in these files:
     41        * WebCore.order:
     42        * platform/graphics/Color.h:
     43
    1442009-07-06  Shinichiro Hamaji  <hamaji@chromium.org>
    245
  • trunk/WebCore/WebCore.order

    r44151 r45569  
    37943794__ZN7WebCore13ContainerNode8setFocusEb
    37953795__ZN7WebCore4Node8setFocusEb
    3796 __ZN7WebCore14focusRingColorEv
    37973796+[WebCoreControlTintObserver controlTintDidChange]
    37983797__ZN7WebCore26usesTestModeFocusRingColorEv
  • trunk/WebCore/css/CSSStyleSelector.cpp

    r45474 r45569  
    57445744            col = m_element->document()->activeLinkColor();
    57455745        else if (ident == CSSValueWebkitFocusRingColor)
    5746             col = RenderTheme::defaultTheme()->focusRingColor();
     5746            col = RenderTheme::focusRingColor();
    57475747        else if (ident == CSSValueCurrentcolor)
    57485748            col = m_style->color();
  • trunk/WebCore/platform/graphics/Color.h

    r44503 r45569  
    146146}
    147147
    148 Color focusRingColor();
    149148Color colorFromPremultipliedARGB(unsigned);
    150149unsigned premultipliedARGBFromColor(const Color&);
  • trunk/WebCore/rendering/RenderTheme.cpp

    r45474 r45569  
    4242
    4343using namespace HTMLNames;
     44
     45static Color& customFocusRingColor()
     46{
     47    DEFINE_STATIC_LOCAL(Color, color, ());
     48    return color;
     49}
    4450
    4551RenderTheme::RenderTheme()
     
    854860}
    855861
    856 Color RenderTheme::focusRingColor() const
    857 {
    858     return Color(0, 0, 0); // Black.
     862void RenderTheme::setCustomFocusRingColor(const Color& c)
     863{
     864    customFocusRingColor() = c;
     865}
     866
     867Color RenderTheme::focusRingColor()
     868{
     869    return customFocusRingColor().isValid() ? customFocusRingColor() : defaultTheme()->platformFocusRingColor();
    859870}
    860871
  • trunk/WebCore/rendering/RenderTheme.h

    r45474 r45569  
    138138    virtual Color platformInactiveTextSearchHighlightColor() const;
    139139
    140     virtual Color focusRingColor() const;
     140    static Color focusRingColor();
     141    virtual Color platformFocusRingColor() const { return Color(0, 0, 0); }
     142    static void setCustomFocusRingColor(const Color&);
    141143
    142144    virtual void platformColorsDidChange();
  • trunk/WebCore/rendering/RenderThemeChromiumMac.h

    r45285 r45569  
    6565        virtual Color activeListBoxSelectionBackgroundColor() const;
    6666
    67         virtual Color focusRingColor() const;
     67        virtual Color platformFocusRingColor() const;
    6868       
    6969        virtual void platformColorsDidChange();
  • trunk/WebCore/rendering/RenderThemeChromiumMac.mm

    r45285 r45569  
    173173}
    174174
    175 Color RenderThemeChromiumMac::focusRingColor() const
     175Color RenderThemeChromiumMac::platformFocusRingColor() const
    176176{
    177177    if (ChromiumBridge::layoutTestMode())
  • trunk/WebCore/rendering/RenderThemeChromiumSkia.cpp

    r45285 r45569  
    163163}
    164164
    165 Color RenderThemeChromiumSkia::focusRingColor() const
     165Color RenderThemeChromiumSkia::platformFocusRingColor() const
    166166{
    167167    static Color focusRingColor(229, 151, 0, 255);
  • trunk/WebCore/rendering/RenderThemeChromiumSkia.h

    r45285 r45569  
    5555        virtual Color platformActiveSelectionForegroundColor() const;
    5656        virtual Color platformInactiveSelectionForegroundColor() const;
    57         virtual Color focusRingColor() const;
     57        virtual Color platformFocusRingColor() const;
    5858
    5959        // To change the blink interval, override caretBlinkIntervalInternal instead of this one so that we may share layout test code an intercepts.
  • trunk/WebCore/rendering/RenderThemeMac.h

    r45529 r45569  
    5959    virtual Color platformInactiveListBoxSelectionBackgroundColor() const;
    6060    virtual Color platformInactiveListBoxSelectionForegroundColor() const;
    61     virtual Color focusRingColor() const;
     61    virtual Color platformFocusRingColor() const;
    6262
    6363    virtual ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) { return SmallScrollbar; }
  • trunk/WebCore/rendering/RenderThemeMac.mm

    r45529 r45569  
    158158}
    159159
    160 Color RenderThemeMac::focusRingColor() const
     160Color RenderThemeMac::platformFocusRingColor() const
    161161{
    162162    if (usesTestModeFocusRingColor())
  • trunk/WebCore/rendering/RenderThemeSafari.cpp

    r45285 r45569  
    8080    // potentially wrong answer the very first time it's called (see
    8181    // <https://bugs.webkit.org/show_bug.cgi?id=26493>).
    82     if (Settings::shouldPaintNativeControls())
     82    if (Settings::shouldPaintNativeControls()) {
     83        RenderTheme::setCustomFocusRingColor(safariTheme->platformFocusRingColor());
    8384        return windowsTheme; // keep the reference of one.
     85    }
    8486    return safariTheme; // keep the reference of one.
    8587}
     
    161163}
    162164
    163 Color RenderThemeSafari::focusRingColor() const
     165Color RenderThemeSafari::platformFocusRingColor() const
    164166{
    165167    static Color focusRingColor;
  • trunk/WebCore/rendering/RenderThemeSafari.h

    r45285 r45569  
    7070    virtual Color activeListBoxSelectionBackgroundColor() const;
    7171
    72     virtual Color focusRingColor() const;
     72    virtual Color platformFocusRingColor() const;
    7373
    7474    // System fonts.
Note: See TracChangeset for help on using the changeset viewer.