Changeset 45285 in webkit


Ignore:
Timestamp:
Jun 26, 2009 2:53:19 PM (15 years ago)
Author:
jeremy@chromium.org
Message:

Move focusRingColor to RenderTheme

Location:
trunk/WebCore
Files:
1 added
3 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r45284 r45285  
     12009-06-26  Jeremy Moskovich  <jeremy@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=26691
     6
     7        Cleanup: Move focusRingColor to RenderTheme.
     8
     9        Most of this CL involves deleting files and removing dead code.
     10
     11        focusRingColor() is now defined in RenderTheme rather than in
     12        misc. places on each port.  The default color is specified as
     13        black in renderTheme and ports can override it in their own
     14        custom renderThemes.
     15
     16        Behavior should be identical except for the following cases,
     17        this lists platform and what the focus ring color used to be
     18        before this cl and the file where it used to be defined:
     19
     20        Android - red
     21        WebCore/platform/android/TemporaryLinkStubs.cpp
     22
     23        Cairo - aqua focus ring color - 0xFF7DADD9
     24        WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
     25
     26        wx - red
     27        WebCore/platform/wx/TemporaryLinkStubs.cpp
     28
     29        QT - black
     30        WebCore/platform/graphics/qt/GraphicsContextQt.cpp
     31
     32        Manual test: manual-tests/focusringcolor-change-on-theme-change.html
     33
     34        * css/CSSStyleSelector.cpp:
     35        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue):
     36        * manual-tests/focusringcolor-change-on-theme-change.html: Added.
     37        * platform/android/TemporaryLinkStubs.cpp:
     38        * platform/graphics/cairo/GraphicsContextCairo.cpp:
     39        * platform/graphics/chromium/ColorChromium.cpp: Removed.
     40        * platform/graphics/chromium/ColorChromiumMac.mm: Removed.
     41        * platform/graphics/mac/ColorMac.h:
     42        * platform/graphics/mac/ColorMac.mm:
     43        (WebCore::oldAquaFocusRingColor):
     44        (WebCore::setUsesTestModeFocusRingColor):
     45        (WebCore::usesTestModeFocusRingColor):
     46        * platform/graphics/qt/GraphicsContextQt.cpp:
     47        * platform/graphics/skia/GraphicsContextSkia.cpp:
     48        (WebCore::GraphicsContext::drawFocusRing):
     49        * platform/graphics/win/ColorSafari.cpp: Removed.
     50        * platform/wx/TemporaryLinkStubs.cpp:
     51        * rendering/RenderTheme.cpp:
     52        (WebCore::RenderTheme::focusRingColor):
     53        * rendering/RenderTheme.h:
     54        * rendering/RenderThemeChromiumMac.h:
     55        * rendering/RenderThemeChromiumMac.mm:
     56        (WebCore::RenderThemeChromiumMac::focusRingColor):
     57        (WebCore::RenderThemeChromiumMac::systemColor):
     58        * rendering/RenderThemeChromiumSkia.cpp:
     59        (WebCore::RenderThemeChromiumSkia::focusRingColor):
     60        * rendering/RenderThemeChromiumSkia.h:
     61        * rendering/RenderThemeMac.h:
     62        * rendering/RenderThemeMac.mm:
     63        (WebCore::RenderThemeMac::focusRingColor):
     64        (WebCore::RenderThemeMac::systemColor):
     65        * rendering/RenderThemeSafari.cpp:
     66        (WebCore::makeRGBAFromCGColor):
     67        (WebCore::RenderThemeSafari::focusRingColor):
     68        * rendering/RenderThemeSafari.h:
     69
    1702009-06-26  Dmitry Titov  <dimich@chromium.org>
    271
  • trunk/WebCore/css/CSSStyleSelector.cpp

    r44778 r45285  
    57195719            col = m_element->document()->activeLinkColor();
    57205720        else if (ident == CSSValueWebkitFocusRingColor)
    5721             col = focusRingColor();
     5721            col = RenderTheme::defaultTheme()->focusRingColor();
    57225722        else if (ident == CSSValueCurrentcolor)
    57235723            col = m_style->color();
  • trunk/WebCore/platform/android/TemporaryLinkStubs.cpp

    r44587 r45285  
    163163void Icon::paint(GraphicsContext*, const IntRect&) { }
    164164
    165 // This function provides the default value for the CSS property:
    166 // -webkit-focus-ring-color
    167 // It is also related to the CSS property outline-color:
    168 Color focusRingColor()
    169 {
    170     verifiedOk();
    171     return 0xFF0000FF;
    172 }
    173 
    174165}  // namespace WebCore
    175166
  • trunk/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp

    r44539 r45285  
    6262
    6363namespace WebCore {
    64 
    65 static const unsigned aquaFocusRingColor = 0xFF7DADD9;
    66 
    67 Color focusRingColor()
    68 {
    69     static Color focusRingColor = aquaFocusRingColor;
    70 
    71     return focusRingColor;
    72 }
    7364
    7465static inline void setColor(cairo_t* cr, const Color& col)
  • trunk/WebCore/platform/graphics/mac/ColorMac.h

    r44108 r45285  
    4747    void setUsesTestModeFocusRingColor(bool);
    4848   
     49    // Focus ring color used for testing purposes.
     50    RGBA32 oldAquaFocusRingColor();
     51
    4952}
    5053
  • trunk/WebCore/platform/graphics/mac/ColorMac.mm

    r44108 r45285  
    3030#import <wtf/StdLibExtras.h>
    3131
    32 @interface WebCoreControlTintObserver : NSObject
    33 + (void)controlTintDidChange;
    34 @end
    35 
    3632namespace WebCore {
    3733
    3834// NSColor calls don't throw, so no need to block Cocoa exceptions in this file
    3935
    40 static RGBA32 oldAquaFocusRingColor = 0xFF7DADD9;
    41 static RGBA32 systemFocusRingColor;
    4236static bool useOldAquaFocusRingColor;
    4337
     38RGBA32 oldAquaFocusRingColor()
     39{
     40    return 0xFF7DADD9;
     41}
     42
     43void setUsesTestModeFocusRingColor(bool newValue)
     44{
     45    useOldAquaFocusRingColor = newValue;
     46}
     47
     48bool usesTestModeFocusRingColor()
     49{
     50    return useOldAquaFocusRingColor;
     51}
    4452
    4553static RGBA32 makeRGBAFromNSColor(NSColor *c)
     
    120128}
    121129
    122 Color focusRingColor()
    123 {
    124     static bool tintIsKnown = false;
    125     if (!tintIsKnown) {
    126         [[NSNotificationCenter defaultCenter] addObserver:[WebCoreControlTintObserver class]
    127                                                  selector:@selector(controlTintDidChange)
    128                                                      name:NSControlTintDidChangeNotification
    129                                                    object:NSApp];
    130         [WebCoreControlTintObserver controlTintDidChange];
    131         tintIsKnown = true;
    132     }
    133 
    134     if (usesTestModeFocusRingColor())
    135         return oldAquaFocusRingColor;
    136 
    137     return systemFocusRingColor;
    138 }
    139 
    140 bool usesTestModeFocusRingColor()
    141 {
    142     return useOldAquaFocusRingColor;
    143 }
    144 
    145 void setUsesTestModeFocusRingColor(bool newValue)
    146 {
    147     useOldAquaFocusRingColor = newValue;
    148 }
    149 
    150 }
    151 
    152 @implementation WebCoreControlTintObserver
    153 
    154 + (void)controlTintDidChange
    155 {
    156     NSColor *color = [[NSColor keyboardFocusIndicatorColor] colorUsingColorSpaceName:NSDeviceRGBColorSpace];
    157     WebCore::systemFocusRingColor = WebCore::makeRGBAFromNSColor(color);
    158 }
    159 
    160 @end
     130} // namespace WebCore
  • trunk/WebCore/platform/graphics/qt/GraphicsContextQt.cpp

    r44765 r45285  
    764764 * need it.
    765765 */
    766 Color focusRingColor() { return Color(0, 0, 0); }
    767766void GraphicsContext::drawFocusRing(const Color& color)
    768767{
  • trunk/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp

    r45103 r45285  
    504504    paint.setStyle(SkPaint::kStroke_Style);
    505505
    506     paint.setColor(focusRingColor().rgb());
     506    paint.setColor(color.rgb());
    507507    paint.setStrokeWidth(focusRingOutset * 2);
    508508    paint.setPathEffect(new SkCornerPathEffect(focusRingOutset * 2))->unref();
  • trunk/WebCore/platform/wx/TemporaryLinkStubs.cpp

    r44056 r45285  
    119119void GraphicsContext::setAlpha(float) { notImplemented(); }
    120120
    121 Color WebCore::focusRingColor() { return 0xFF0000FF; }
    122 
    123121void Image::drawPattern(GraphicsContext*, const FloatRect& srcRect, const TransformationMatrix& patternTransform, const FloatPoint& phase, CompositeOperator, const FloatRect& destRect) { notImplemented(); }
    124122
  • trunk/WebCore/rendering/RenderTheme.cpp

    r44758 r45285  
    850850}
    851851
     852Color RenderTheme::focusRingColor() const
     853{
     854    return Color(0, 0, 0); // Black.
     855}
     856
    852857} // namespace WebCore
  • trunk/WebCore/rendering/RenderTheme.h

    r44758 r45285  
    137137    virtual Color platformActiveTextSearchHighlightColor() const;
    138138    virtual Color platformInactiveTextSearchHighlightColor() const;
     139
     140    virtual Color focusRingColor() const;
    139141
    140142    virtual void platformColorsDidChange();
  • trunk/WebCore/rendering/RenderThemeChromiumMac.h

    r44758 r45285  
    6464        virtual Color platformInactiveSelectionBackgroundColor() const;
    6565        virtual Color activeListBoxSelectionBackgroundColor() const;
     66
     67        virtual Color focusRingColor() const;
    6668       
    6769        virtual void platformColorsDidChange();
  • trunk/WebCore/rendering/RenderThemeChromiumMac.mm

    r44758 r45285  
    3333
    3434#import "BitmapImage.h"
     35#import "ChromiumBridge.h"
     36#import "ColorMac.h"
    3537#import "CSSStyleSelector.h"
    3638#import "CSSValueKeywords.h"
     
    171173}
    172174
     175Color RenderThemeChromiumMac::focusRingColor() const
     176{
     177    if (ChromiumBridge::layoutTestMode())
     178        return oldAquaFocusRingColor();
     179
     180    return systemColor(CSSValueWebkitFocusRingColor);
     181}
     182
    173183static FontWeight toFontWeight(NSInteger appKitFontWeight)
    174184{
     
    423433        color = convertNSColorToColor([NSColor controlLightHighlightColor]);
    424434        break;
     435    case CSSValueWebkitFocusRingColor:
     436        color = convertNSColorToColor([NSColor keyboardFocusIndicatorColor]);
     437        break;
    425438    case CSSValueWindow:
    426439        color = convertNSColorToColor([NSColor windowBackgroundColor]);
  • trunk/WebCore/rendering/RenderThemeChromiumSkia.cpp

    r45215 r45285  
    163163}
    164164
     165Color RenderThemeChromiumSkia::focusRingColor() const
     166{
     167    static Color focusRingColor(229, 151, 0, 255);
     168    return focusRingColor;
     169}
     170
    165171double RenderThemeChromiumSkia::caretBlinkInterval() const
    166172{
  • trunk/WebCore/rendering/RenderThemeChromiumSkia.h

    r45215 r45285  
    5555        virtual Color platformActiveSelectionForegroundColor() const;
    5656        virtual Color platformInactiveSelectionForegroundColor() const;
     57        virtual Color focusRingColor() const;
    5758
    5859        // 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

    r44758 r45285  
    5959    virtual Color platformInactiveListBoxSelectionBackgroundColor() const;
    6060    virtual Color platformInactiveListBoxSelectionForegroundColor() const;
     61    virtual Color focusRingColor() const;
    6162
    6263    virtual ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) { return SmallScrollbar; }
  • trunk/WebCore/rendering/RenderThemeMac.mm

    r44762 r45285  
    2222
    2323#import "BitmapImage.h"
     24#import "ColorMac.h"
    2425#import "CSSStyleSelector.h"
    2526#import "CSSValueKeywords.h"
     
    157158}
    158159
     160Color RenderThemeMac::focusRingColor() const
     161{
     162    if (usesTestModeFocusRingColor())
     163        return oldAquaFocusRingColor();
     164
     165    return systemColor(CSSValueWebkitFocusRingColor);
     166}
     167
    159168Color RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor() const
    160169{
     
    414423            color = convertNSColorToColor([NSColor controlLightHighlightColor]);
    415424            break;
     425        case CSSValueWebkitFocusRingColor:
     426            color = convertNSColorToColor([NSColor keyboardFocusIndicatorColor]);
     427            break;
    416428        case CSSValueWindow:
    417429            color = convertNSColorToColor([NSColor windowBackgroundColor]);
  • trunk/WebCore/rendering/RenderThemeSafari.cpp

    r44785 r45285  
    9595SOFT_LINK(SafariTheme, STPaintProgressIndicator, void, APIENTRY, (ProgressIndicatorType type, CGContextRef context, const CGRect& rect, NSControlSize size, ThemeControlState state, float value), (type, context, rect, size, state, value))
    9696#endif
     97SOFT_LINK_OPTIONAL(SafariTheme, STCopyThemeColor, CGColorRef, APIENTRY, (unsigned color, SafariTheme::ThemeControlState));
     98
     99static const unsigned stFocusRingColorID = 4;
     100
     101static const unsigned aquaFocusRingColor = 0xFF7DADD9;
     102
     103static RGBA32 makeRGBAFromCGColor(CGColorRef color)
     104{
     105    const CGFloat* components = CGColorGetComponents(color);
     106    return makeRGBA(255 * components[0], 255 * components[1], 255 * components[2], 255 * components[3]);
     107}
    97108
    98109ThemeControlState RenderThemeSafari::determineState(RenderObject* o) const
     
    148159    // FIXME: This should probably just be a darker version of the platformActiveSelectionBackgroundColor
    149160    return Color(56, 117, 215);
     161}
     162
     163Color RenderThemeSafari::focusRingColor() const
     164{
     165    static Color focusRingColor;
     166
     167    if (!focusRingColor.isValid()) {
     168        if (STCopyThemeColorPtr()) {
     169            RetainPtr<CGColorRef> color(AdoptCF, STCopyThemeColorPtr()(stFocusRingColorID, SafariTheme::ActiveState));
     170            focusRingColor = makeRGBAFromCGColor(color.get());
     171        }
     172        if (!focusRingColor.isValid())
     173            focusRingColor = aquaFocusRingColor;
     174    }
     175
     176    return focusRingColor;
    150177}
    151178
  • trunk/WebCore/rendering/RenderThemeSafari.h

    r44758 r45285  
    6969    virtual Color platformInactiveSelectionBackgroundColor() const;
    7070    virtual Color activeListBoxSelectionBackgroundColor() const;
     71
     72    virtual Color focusRingColor() const;
    7173
    7274    // System fonts.
Note: See TracChangeset for help on using the changeset viewer.