Changeset 216902 in webkit


Ignore:
Timestamp:
May 15, 2017 10:35:04 PM (7 years ago)
Author:
Antti Koivisto
Message:

RenderTheme does not need to be per-page
https://bugs.webkit.org/show_bug.cgi?id=172116
<rdar://problem/30426457>

Reviewed by Zalan Bujtas.

There are no implementations of RenderTheme::themeForPage that actually care about the page.
It can be replaced with a singleton, simplifying a bunch of code.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::shadowRootCSSText):
(WebCore::MediaControlsHost::base64StringForIconNameAndType):

  • css/CSSDefaultStyleSheets.cpp:

(WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
(WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):

Fix a potential crash if we get here when page is null (though it doesn't appear to repro on trunk).

  • css/StyleColor.cpp:

(WebCore::StyleColor::colorFromKeyword):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseSystemColor):

  • css/parser/CSSParser.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumeSystemFont):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::updateAppearance):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):

  • html/HTMLMeterElement.cpp:

(WebCore::HTMLMeterElement::createElementRenderer):

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::usesMenuList):
(WebCore::HTMLSelectElement::platformHandleKeydownEvent):
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::adjustInnerTextStyle):

  • html/InputType.cpp:

(WebCore::InputType::themeSupportsDataListUI):

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::shouldHaveSpinButton):
(WebCore::TextFieldInputType::shouldHaveCapsLockIndicator):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setStrokeColor):
(WebCore::CanvasRenderingContext2D::setFillColor):

  • html/canvas/CanvasStyle.cpp:

(WebCore::parseColor):
(WebCore::parseColorOrCurrentColor):
(WebCore::CanvasStyle::createFromString):

  • html/canvas/CanvasStyle.h:
  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlPanelElement::startTimer):
(WebCore::MediaControlPanelElement::makeOpaque):
(WebCore::MediaControlPanelElement::makeTransparent):

  • html/shadow/MediaControls.cpp:

(WebCore::MediaControls::reset):
(WebCore::MediaControls::reportedError):
(WebCore::MediaControls::updateCurrentTimeDisplay):

  • html/shadow/mac/ImageControlsButtonElementMac.cpp:

(WebCore::ImageControlsButtonElementMac::tryCreate):

  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):

  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::theme): Deleted.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::theme):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::focusRingColor):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::defaultTheme): Deleted.

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderTheme::singleton):
(WebCore::RenderTheme::themeForPage): Deleted.

  • rendering/TextPaintStyle.cpp:

(WebCore::computeTextPaintStyle):

Location:
trunk/Source
Files:
37 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r216901 r216902  
     12017-05-15  Antti Koivisto  <antti@apple.com>
     2
     3        RenderTheme does not need to be per-page
     4        https://bugs.webkit.org/show_bug.cgi?id=172116
     5        <rdar://problem/30426457>
     6
     7        Reviewed by Zalan Bujtas.
     8
     9        There are no implementations of RenderTheme::themeForPage that actually care about the page.
     10        It can be replaced with a singleton, simplifying a bunch of code.
     11
     12        * Modules/mediacontrols/MediaControlsHost.cpp:
     13        (WebCore::MediaControlsHost::shadowRootCSSText):
     14        (WebCore::MediaControlsHost::base64StringForIconNameAndType):
     15        * css/CSSDefaultStyleSheets.cpp:
     16        (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
     17        (WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):
     18
     19            Fix a potential crash if we get here when page is null (though it doesn't appear to repro on trunk).
     20
     21        * css/StyleColor.cpp:
     22        (WebCore::StyleColor::colorFromKeyword):
     23        * css/StyleResolver.cpp:
     24        (WebCore::StyleResolver::adjustRenderStyle):
     25        * css/parser/CSSParser.cpp:
     26        (WebCore::CSSParser::parseSystemColor):
     27        * css/parser/CSSParser.h:
     28        * css/parser/CSSPropertyParser.cpp:
     29        (WebCore::CSSPropertyParser::consumeSystemFont):
     30        * editing/FrameSelection.cpp:
     31        (WebCore::FrameSelection::updateAppearance):
     32        * html/HTMLMediaElement.cpp:
     33        (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
     34        * html/HTMLMeterElement.cpp:
     35        (WebCore::HTMLMeterElement::createElementRenderer):
     36        * html/HTMLSelectElement.cpp:
     37        (WebCore::HTMLSelectElement::usesMenuList):
     38        (WebCore::HTMLSelectElement::platformHandleKeydownEvent):
     39        (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
     40        * html/HTMLTextFormControlElement.cpp:
     41        (WebCore::HTMLTextFormControlElement::adjustInnerTextStyle):
     42        * html/InputType.cpp:
     43        (WebCore::InputType::themeSupportsDataListUI):
     44        * html/TextFieldInputType.cpp:
     45        (WebCore::TextFieldInputType::shouldHaveSpinButton):
     46        (WebCore::TextFieldInputType::shouldHaveCapsLockIndicator):
     47        * html/canvas/CanvasRenderingContext2D.cpp:
     48        (WebCore::CanvasRenderingContext2D::setStrokeColor):
     49        (WebCore::CanvasRenderingContext2D::setFillColor):
     50        * html/canvas/CanvasStyle.cpp:
     51        (WebCore::parseColor):
     52        (WebCore::parseColorOrCurrentColor):
     53        (WebCore::CanvasStyle::createFromString):
     54        * html/canvas/CanvasStyle.h:
     55        * html/shadow/MediaControlElements.cpp:
     56        (WebCore::MediaControlPanelElement::startTimer):
     57        (WebCore::MediaControlPanelElement::makeOpaque):
     58        (WebCore::MediaControlPanelElement::makeTransparent):
     59        * html/shadow/MediaControls.cpp:
     60        (WebCore::MediaControls::reset):
     61        (WebCore::MediaControls::reportedError):
     62        (WebCore::MediaControls::updateCurrentTimeDisplay):
     63        * html/shadow/mac/ImageControlsButtonElementMac.cpp:
     64        (WebCore::ImageControlsButtonElementMac::tryCreate):
     65        * page/MemoryRelease.cpp:
     66        (WebCore::releaseNoncriticalMemory):
     67        * page/Page.cpp:
     68        (WebCore::Page::Page):
     69        * page/Page.h:
     70        (WebCore::Page::theme): Deleted.
     71        * platform/wpe/RenderThemeWPE.cpp:
     72        (WebCore::RenderTheme::singleton):
     73        (WebCore::RenderTheme::themeForPage): Deleted.
     74        * rendering/RenderEmbeddedObject.cpp:
     75        (WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
     76        * rendering/RenderObject.cpp:
     77        (WebCore::RenderObject::theme):
     78        * rendering/RenderTheme.cpp:
     79        (WebCore::RenderTheme::focusRingColor):
     80        * rendering/RenderTheme.h:
     81        (WebCore::RenderTheme::defaultTheme): Deleted.
     82        * rendering/RenderThemeGtk.cpp:
     83        (WebCore::RenderTheme::singleton):
     84        (WebCore::RenderTheme::themeForPage): Deleted.
     85        * rendering/RenderThemeIOS.mm:
     86        (WebCore::RenderTheme::singleton):
     87        (WebCore::RenderTheme::themeForPage): Deleted.
     88        * rendering/RenderThemeMac.mm:
     89        (WebCore::RenderTheme::singleton):
     90        (WebCore::RenderTheme::themeForPage): Deleted.
     91        * rendering/RenderThemeWin.cpp:
     92        (WebCore::RenderTheme::singleton):
     93        (WebCore::RenderTheme::themeForPage): Deleted.
     94        * rendering/TextPaintStyle.cpp:
     95        (WebCore::computeTextPaintStyle):
     96
    1972017-05-15  Said Abou-Hallawa  <sabouhallawa@apple.com>
    298
  • trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp

    r215922 r216902  
    281281String MediaControlsHost::shadowRootCSSText() const
    282282{
    283     Page* page = m_mediaElement->document().page();
    284     if (!page)
    285         return emptyString();
    286     return RenderTheme::themeForPage(page)->modernMediaControlsStyleSheet();
     283    return RenderTheme::singleton().modernMediaControlsStyleSheet();
    287284}
    288285
    289286String MediaControlsHost::base64StringForIconNameAndType(const String& iconName, const String& iconType) const
    290287{
    291     Page* page = m_mediaElement->document().page();
    292     if (!page)
    293         return emptyString();
    294     return RenderTheme::themeForPage(page)->mediaControlsBase64StringForIconNameAndType(iconName, iconType);
     288
     289    return RenderTheme::singleton().mediaControlsBase64StringForIconNameAndType(iconName, iconType);
    295290}
    296291
  • trunk/Source/WebCore/css/CSSDefaultStyleSheets.cpp

    r216217 r216902  
    135135
    136136    // Strict-mode rules.
    137     String defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet();
     137    String defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::singleton().extraDefaultStyleSheet();
    138138    defaultStyleSheet = parseUASheet(defaultRules);
    139139    defaultStyle->addRulesFromSheet(*defaultStyleSheet, screenEval());
     
    141141
    142142    // Quirks-mode rules.
    143     String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraQuirksStyleSheet();
     143    String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::singleton().extraQuirksStyleSheet();
    144144    quirksStyleSheet = parseUASheet(quirksRules);
    145145    defaultQuirksStyle->addRulesFromSheet(*quirksStyleSheet, screenEval());
     
    171171    if (is<HTMLElement>(element)) {
    172172        if (is<HTMLObjectElement>(element) || is<HTMLEmbedElement>(element)) {
    173             if (!plugInsStyleSheet) {
    174                 String plugInsRules = RenderTheme::themeForPage(element.document().page())->extraPlugInsStyleSheet() + element.document().page()->chrome().client().plugInExtraStyleSheet();
     173            if (!plugInsStyleSheet && element.document().page()) {
     174                String plugInsRules = RenderTheme::singleton().extraPlugInsStyleSheet() + element.document().page()->chrome().client().plugInExtraStyleSheet();
    175175                if (plugInsRules.isEmpty())
    176176                    plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet));
     
    183183        else if (is<HTMLMediaElement>(element)) {
    184184            if (!mediaControlsStyleSheet) {
    185                 String mediaRules = RenderTheme::themeForPage(element.document().page())->mediaControlsStyleSheet();
     185                String mediaRules = RenderTheme::singleton().mediaControlsStyleSheet();
    186186                if (mediaRules.isEmpty())
    187                     mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::themeForPage(element.document().page())->extraMediaControlsStyleSheet();
     187                    mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::singleton().extraMediaControlsStyleSheet();
    188188                mediaControlsStyleSheet = parseUASheet(mediaRules);
    189189                defaultStyle->addRulesFromSheet(*mediaControlsStyleSheet, screenEval());
     
    196196        else if (is<HTMLDivElement>(element) && element.isImageControlsRootElement()) {
    197197            if (!imageControlsStyleSheet) {
    198                 String imageControlsRules = RenderTheme::themeForPage(element.document().page())->imageControlsStyleSheet();
     198                String imageControlsRules = RenderTheme::singleton().imageControlsStyleSheet();
    199199                imageControlsStyleSheet = parseUASheet(imageControlsRules);
    200200                defaultStyle->addRulesFromSheet(*imageControlsStyleSheet, screenEval());
     
    227227#if ENABLE(FULLSCREEN_API)
    228228    if (!fullscreenStyleSheet && element.document().webkitIsFullScreen()) {
    229         String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraFullScreenStyleSheet();
     229        String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::singleton().extraFullScreenStyleSheet();
    230230        fullscreenStyleSheet = parseUASheet(fullscreenRules);
    231231        defaultStyle->addRulesFromSheet(*fullscreenStyleSheet, screenEval());
  • trunk/Source/WebCore/css/StyleColor.cpp

    r209318 r216902  
    4444            return Color(namedColor->ARGBValue);
    4545    }
    46     return RenderTheme::defaultTheme()->systemColor(keyword);
     46    return RenderTheme::singleton().systemColor(keyword);
    4747}
    4848
  • trunk/Source/WebCore/css/StyleResolver.cpp

    r216083 r216902  
    999999    // Let the theme also have a crack at adjusting the style.
    10001000    if (style.hasAppearance())
    1001         RenderTheme::defaultTheme()->adjustStyle(*this, style, element, m_state.hasUAAppearance(), m_state.borderData(), m_state.backgroundData(), m_state.backgroundColor());
     1001        RenderTheme::singleton().adjustStyle(*this, style, element, m_state.hasUAAppearance(), m_state.borderData(), m_state.backgroundData(), m_state.backgroundColor());
    10021002
    10031003    // If we have first-letter pseudo style, do not share this style.
  • trunk/Source/WebCore/css/parser/CSSParser.cpp

    r216611 r216902  
    174174}
    175175
    176 Color CSSParser::parseSystemColor(const String& string, Document* document)
    177 {
    178     if (!document || !document->page())
    179         return Color();
    180    
     176Color CSSParser::parseSystemColor(const String& string)
     177{
    181178    CSSValueID id = cssValueKeywordID(string);
    182179    if (!StyleColor::isSystemColor(id))
    183180        return Color();
    184181   
    185     return document->page()->theme().systemColor(id);
     182    return RenderTheme::singleton().systemColor(id);
    186183}
    187184
  • trunk/Source/WebCore/css/parser/CSSParser.h

    r209838 r216902  
    7979
    8080    static Color parseColor(const String&, bool strict = false);
    81     static Color parseSystemColor(const String&, Document*);
     81    static Color parseSystemColor(const String&);
    8282
    8383private:
  • trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp

    r216833 r216902  
    44304430   
    44314431    FontCascadeDescription fontDescription;
    4432     RenderTheme::defaultTheme()->systemFont(systemFontID, fontDescription);
     4432    RenderTheme::singleton().systemFont(systemFontID, fontDescription);
    44334433    if (!fontDescription.isAbsoluteSize())
    44344434        return false;
  • trunk/Source/WebCore/editing/FrameSelection.cpp

    r215872 r216902  
    20582058    // already blinking in the right location.
    20592059    if (shouldBlink && !m_caretBlinkTimer.isActive()) {
    2060         if (Seconds blinkInterval = m_frame->page()->theme().caretBlinkInterval())
     2060        if (Seconds blinkInterval = RenderTheme::singleton().caretBlinkInterval())
    20612061            m_caretBlinkTimer.startRepeating(blinkInterval);
    20622062
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r216886 r216902  
    66996699        return false;
    67006700
    6701     String mediaControlsScript = RenderTheme::themeForPage(page)->mediaControlsScript();
     6701    String mediaControlsScript = RenderTheme::singleton().mediaControlsScript();
    67026702    if (!mediaControlsScript.length())
    67036703        return false;
  • trunk/Source/WebCore/html/HTMLMeterElement.cpp

    r210828 r216902  
    6161RenderPtr<RenderElement> HTMLMeterElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
    6262{
    63     if (!document().page()->theme().supportsMeter(style.appearance()))
     63    if (!RenderTheme::singleton().supportsMeter(style.appearance()))
    6464        return RenderElement::createFor(*this, WTFMove(style));
    6565
  • trunk/Source/WebCore/html/HTMLSelectElement.cpp

    r216632 r216902  
    194194{
    195195#if !PLATFORM(IOS)
    196     if (RenderTheme::themeForPage(document().page())->delegatesMenuListRendering())
     196    if (RenderTheme::singleton().delegatesMenuListRendering())
    197197        return true;
    198198
     
    10861086bool HTMLSelectElement::platformHandleKeydownEvent(KeyboardEvent* event)
    10871087{
    1088     if (!RenderTheme::themeForPage(document().page())->popsMenuByArrowKeys())
     1088    if (!RenderTheme::singleton().popsMenuByArrowKeys())
    10891089        return false;
    10901090
     
    11191119    ASSERT(renderer());
    11201120    ASSERT(renderer()->isMenuList());
    1121 
    1122     RefPtr<RenderTheme> renderTheme = RenderTheme::themeForPage(document().page());
    11231121
    11241122    if (event.type() == eventNames().keydownEvent) {
     
    11891187        }
    11901188
    1191         if (renderTheme->popsMenuBySpaceOrReturn()) {
     1189        if (RenderTheme::singleton().popsMenuBySpaceOrReturn()) {
    11921190            if (keyCode == ' ' || keyCode == '\r') {
    11931191                focus();
     
    12061204                handled = true;
    12071205            }
    1208         } else if (renderTheme->popsMenuByArrowKeys()) {
     1206        } else if (RenderTheme::singleton().popsMenuByArrowKeys()) {
    12091207            if (keyCode == ' ') {
    12101208                focus();
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp

    r213355 r216902  
    806806
    807807    if (isDisabledFormControl())
    808         textBlockStyle.setColor(document().page()->theme().disabledTextColor(textBlockStyle.visitedDependentColor(CSSPropertyColor), parentStyle.visitedDependentColor(CSSPropertyBackgroundColor)));
     808        textBlockStyle.setColor(RenderTheme::singleton().disabledTextColor(textBlockStyle.visitedDependentColor(CSSPropertyColor), parentStyle.visitedDependentColor(CSSPropertyBackgroundColor)));
    809809#if PLATFORM(IOS)
    810810    if (textBlockStyle.textSecurity() != TSNONE && !textBlockStyle.isLeftToRightDirection()) {
  • trunk/Source/WebCore/html/InputType.cpp

    r215385 r216902  
    172172bool InputType::themeSupportsDataListUI(InputType* type)
    173173{
    174     Document& document = type->element().document();
    175     return RenderTheme::themeForPage(document.page())->supportsDataListUI(type->formControlType());
     174    return RenderTheme::singleton().supportsDataListUI(type->formControlType());
    176175}
    177176
  • trunk/Source/WebCore/html/TextFieldInputType.cpp

    r209907 r216902  
    245245bool TextFieldInputType::shouldHaveSpinButton() const
    246246{
    247     return RenderTheme::themeForPage(element().document().page())->shouldHaveSpinButton(element());
     247    return RenderTheme::singleton().shouldHaveSpinButton(element());
    248248}
    249249
    250250bool TextFieldInputType::shouldHaveCapsLockIndicator() const
    251251{
    252     return RenderTheme::themeForPage(element().document().page())->shouldHaveCapsLockIndicator(element());
     252    return RenderTheme::singleton().shouldHaveCapsLockIndicator(element());
    253253}
    254254
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp

    r216217 r216902  
    840840
    841841    realizeSaves();
    842     setStrokeStyle(CanvasStyle::createFromString(color, &canvas().document()));
     842    setStrokeStyle(CanvasStyle::createFromString(color));
    843843    modifiableState().unparsedStrokeColor = color;
    844844}
     
    876876
    877877    realizeSaves();
    878     setFillStyle(CanvasStyle::createFromString(color, &canvas().document()));
     878    setFillStyle(CanvasStyle::createFromString(color));
    879879    modifiableState().unparsedFillColor = color;
    880880}
  • trunk/Source/WebCore/html/canvas/CanvasStyle.cpp

    r211591 r216902  
    4949}
    5050
    51 static Color parseColor(const String& colorString, Document* document = nullptr)
     51static Color parseColor(const String& colorString)
    5252{
    5353    Color color = CSSParser::parseColor(colorString);
    5454    if (color.isValid())
    5555        return color;
    56     return CSSParser::parseSystemColor(colorString, document);
     56    return CSSParser::parseSystemColor(colorString);
    5757}
    5858
     
    7272        return currentColor(canvas);
    7373
    74     return parseColor(colorString, canvas ? &canvas->document() : nullptr);
     74    return parseColor(colorString);
    7575}
    7676
     
    110110}
    111111
    112 CanvasStyle CanvasStyle::createFromString(const String& colorString, Document* document)
     112CanvasStyle CanvasStyle::createFromString(const String& colorString)
    113113{
    114114    if (isCurrentColorString(colorString))
    115115        return CurrentColor { std::nullopt };
    116116
    117     Color color = parseColor(colorString, document);
     117    Color color = parseColor(colorString);
    118118    if (!color.isValid())
    119119        return { };
  • trunk/Source/WebCore/html/canvas/CanvasStyle.h

    r210319 r216902  
    4848    CanvasStyle(CanvasPattern&);
    4949
    50     static CanvasStyle createFromString(const String& color, Document* = nullptr);
     50    static CanvasStyle createFromString(const String& color);
    5151    static CanvasStyle createFromStringWithOverrideAlpha(const String& color, float alpha);
    5252
  • trunk/Source/WebCore/html/shadow/MediaControlElements.cpp

    r215173 r216902  
    138138    // such that captions are correctly displayed at the bottom of the video
    139139    // at the end of the fadeout transition.
    140     Seconds duration = document().page() ? document().page()->theme().mediaControlsFadeOutDuration() : 0_s;
     140    Seconds duration = RenderTheme::singleton().mediaControlsFadeOutDuration();
    141141    m_transitionTimer.startOneShot(duration);
    142142}
     
    189189        return;
    190190
    191     double duration = document().page() ? document().page()->theme().mediaControlsFadeInDuration() : 0;
     191    double duration = RenderTheme::singleton().mediaControlsFadeInDuration();
    192192
    193193    setInlineStyleProperty(CSSPropertyTransitionProperty, CSSPropertyOpacity);
     
    206206        return;
    207207
    208     Seconds duration = document().page() ? document().page()->theme().mediaControlsFadeOutDuration() : 0_s;
     208    Seconds duration = RenderTheme::singleton().mediaControlsFadeOutDuration();
    209209
    210210    setInlineStyleProperty(CSSPropertyTransitionProperty, CSSPropertyOpacity);
  • trunk/Source/WebCore/html/shadow/MediaControls.cpp

    r208658 r216902  
    8888void MediaControls::reset()
    8989{
    90     Page* page = document().page();
    91     if (!page)
    92         return;
    93 
    9490    m_playButton->updateDisplayType();
    9591
     
    9793
    9894    double duration = m_mediaController->duration();
    99     if (std::isfinite(duration) || page->theme().hasOwnDisabledStateHandlingFor(MediaSliderPart)) {
     95    if (std::isfinite(duration) || RenderTheme::singleton().hasOwnDisabledStateHandlingFor(MediaSliderPart)) {
    10096        m_timeline->setDuration(duration);
    10197        m_timeline->setPosition(m_mediaController->currentTime());
    10298    }
    10399
    104     if (m_mediaController->hasAudio() || page->theme().hasOwnDisabledStateHandlingFor(MediaMuteButtonPart))
     100    if (m_mediaController->hasAudio() || RenderTheme::singleton().hasOwnDisabledStateHandlingFor(MediaMuteButtonPart))
    105101        m_panelMuteButton->show();
    106102    else
     
    130126void MediaControls::reportedError()
    131127{
    132     Page* page = document().page();
    133     if (!page)
    134         return;
    135 
    136     if (!page->theme().hasOwnDisabledStateHandlingFor(MediaMuteButtonPart)) {
     128    auto& theme = RenderTheme::singleton();
     129    if (!theme.hasOwnDisabledStateHandlingFor(MediaMuteButtonPart)) {
    137130        m_panelMuteButton->hide();
    138131        m_volumeSlider->hide();
    139132    }
    140133
    141     if (m_toggleClosedCaptionsButton && !page->theme().hasOwnDisabledStateHandlingFor(MediaToggleClosedCaptionsButtonPart))
     134    if (m_toggleClosedCaptionsButton && !theme.hasOwnDisabledStateHandlingFor(MediaToggleClosedCaptionsButtonPart))
    142135        m_toggleClosedCaptionsButton->hide();
    143136
    144     if (m_fullScreenButton && !page->theme().hasOwnDisabledStateHandlingFor(MediaEnterFullscreenButtonPart))
     137    if (m_fullScreenButton && !theme.hasOwnDisabledStateHandlingFor(MediaEnterFullscreenButtonPart))
    145138        m_fullScreenButton->hide();
    146139}
     
    219212{
    220213    double now = m_mediaController->currentTime();
    221 
    222     Page* page = document().page();
    223     if (!page)
    224         return;
    225 
    226     m_currentTimeDisplay->setInnerText(page->theme().formatMediaControlsTime(now));
     214    m_currentTimeDisplay->setInnerText(RenderTheme::singleton().formatMediaControlsTime(now));
    227215    m_currentTimeDisplay->setCurrentValue(now);
    228216}
  • trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp

    r211033 r216902  
    9898    button->setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString("x-webkit-image-controls-button", AtomicString::ConstructFromLiteral));
    9999
    100     IntSize positionOffset = document.page()->theme().imageControlsButtonPositionOffset();
     100    IntSize positionOffset = RenderTheme::singleton().imageControlsButtonPositionOffset();
    101101    button->setInlineStyleProperty(CSSPropertyTop, positionOffset.height(), CSSPrimitiveValue::CSS_PX);
    102102
  • trunk/Source/WebCore/page/MemoryRelease.cpp

    r216770 r216902  
    5858static void releaseNoncriticalMemory()
    5959{
    60     RenderTheme::defaultTheme()->purgeCaches();
     60    RenderTheme::singleton().purgeCaches();
    6161
    6262    FontCache::singleton().purgeInactiveFontData();
  • trunk/Source/WebCore/page/Page.cpp

    r216197 r216902  
    206206    , m_backForwardController(std::make_unique<BackForwardController>(*this, *WTFMove(pageConfiguration.backForwardClient)))
    207207    , m_mainFrame(MainFrame::create(*this, pageConfiguration))
    208     , m_theme(RenderTheme::themeForPage(this))
    209208    , m_editorClient(WTFMove(pageConfiguration.editorClient))
    210209    , m_plugInClient(pageConfiguration.plugInClient)
  • trunk/Source/WebCore/page/Page.h

    r216197 r216902  
    167167    void setNeedsRecalcStyleInAllFrames();
    168168
    169     RenderTheme& theme() const { return *m_theme; }
    170 
    171169    WEBCORE_EXPORT ViewportArguments viewportArguments() const;
    172170
     
    666664
    667665    RefPtr<PluginData> m_pluginData;
    668 
    669     RefPtr<RenderTheme> m_theme;
    670666
    671667    UniqueRef<EditorClient> m_editorClient;
  • trunk/Source/WebCore/page/linux/ResourceUsageOverlayLinux.cpp

    r215241 r216902  
    7575    {
    7676        FontCascadeDescription fontDescription;
    77         RenderTheme::defaultTheme()->systemFont(CSSValueMessageBox, fontDescription);
     77        RenderTheme::singleton().systemFont(CSSValueMessageBox, fontDescription);
    7878        fontDescription.setComputedSize(gFontSize);
    7979        m_textFont = FontCascade(fontDescription, 0, 0);
  • trunk/Source/WebCore/platform/win/PopupMenuWin.cpp

    r213211 r216902  
    623623        PopupMenuStyle itemStyle = client()->itemStyle(index);
    624624        if (index == focusedIndex()) {
    625             optionBackgroundColor = RenderTheme::defaultTheme()->activeListBoxSelectionBackgroundColor();
    626             optionTextColor = RenderTheme::defaultTheme()->activeListBoxSelectionForegroundColor();
     625            optionBackgroundColor = RenderTheme::singleton().activeListBoxSelectionBackgroundColor();
     626            optionTextColor = RenderTheme::singleton().activeListBoxSelectionForegroundColor();
    627627        } else {
    628628            optionBackgroundColor = itemStyle.backgroundColor();
     
    661661            if (client()->menuStyle().textDirection() == LTR) {
    662662                textX = std::max<int>(0, client()->clientPaddingLeft() - client()->clientInsetLeft());
    663                 if (RenderTheme::defaultTheme()->popupOptionSupportsTextIndent())
     663                if (RenderTheme::singleton().popupOptionSupportsTextIndent())
    664664                    textX += minimumIntValueForLength(itemStyle.textIndent(), itemRect.width());
    665665            } else {
    666666                textX = itemRect.width() - client()->menuStyle().font().width(textRun);
    667667                textX = std::min<int>(textX, textX - client()->clientPaddingRight() + client()->clientInsetRight());
    668                 if (RenderTheme::defaultTheme()->popupOptionSupportsTextIndent())
     668                if (RenderTheme::singleton().popupOptionSupportsTextIndent())
    669669                    textX -= minimumIntValueForLength(itemStyle.textIndent(), itemRect.width());
    670670            }
  • trunk/Source/WebCore/platform/wpe/RenderThemeWPE.cpp

    r216497 r216902  
    3434namespace WebCore {
    3535
    36 Ref<RenderTheme> RenderTheme::themeForPage(Page*)
     36RenderTheme& RenderTheme::singleton()
    3737{
    38     static RenderTheme& theme = RenderThemeWPE::create().leakRef();
    39     return theme;
     38    static NeverDestroyed<Ref<RenderTheme>> theme(RenderThemeWPE::create());
     39    return theme.get();
    4040}
    4141
  • trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp

    r214173 r216902  
    358358
    359359    FontCascadeDescription fontDescription;
    360     RenderTheme::defaultTheme()->systemFont(CSSValueWebkitSmallControl, fontDescription);
     360    RenderTheme::singleton().systemFont(CSSValueWebkitSmallControl, fontDescription);
    361361    fontDescription.setWeight(boldWeightValue());
    362362    fontDescription.setRenderingMode(settings().fontRenderingMode());
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r216047 r216902  
    142142RenderTheme& RenderObject::theme() const
    143143{
    144     return page().theme();
     144    return RenderTheme::singleton();
    145145}
    146146
  • trunk/Source/WebCore/rendering/RenderTheme.cpp

    r215173 r216902  
    12791279Color RenderTheme::tapHighlightColor()
    12801280{
    1281     return defaultTheme()->platformTapHighlightColor();
     1281    return singleton().platformTapHighlightColor();
    12821282}
    12831283#endif
     
    13141314Color RenderTheme::focusRingColor()
    13151315{
    1316     return customFocusRingColor().isValid() ? customFocusRingColor() : defaultTheme()->platformFocusRingColor();
     1316    return customFocusRingColor().isValid() ? customFocusRingColor() : RenderTheme::singleton().platformFocusRingColor();
    13171317}
    13181318
  • trunk/Source/WebCore/rendering/RenderTheme.h

    r215509 r216902  
    6363
    6464    // This function is to be implemented in your platform-specific theme implementation to hand back the
    65     // appropriate platform theme. When the theme is needed in non-page dependent code, a default theme is
    66     // used as fallback, which is returned for a nulled page, so the platform code needs to account for this.
    67     static Ref<RenderTheme> themeForPage(Page*);
    68 
    69     // When the theme is needed in non-page dependent code, the defaultTheme() is used as fallback.
    70     static inline Ref<RenderTheme> defaultTheme()
    71     {
    72         return themeForPage(nullptr);
    73     };
     65    // appropriate platform theme.
     66    static RenderTheme& singleton();
    7467
    7568    virtual void purgeCaches() { }
  • trunk/Source/WebCore/rendering/RenderThemeGtk.cpp

    r215218 r216902  
    6767}
    6868
    69 Ref<RenderTheme> RenderTheme::themeForPage(Page*)
    70 {
    71     static RenderTheme& rt = RenderThemeGtk::create().leakRef();
    72     return rt;
     69RenderTheme& RenderTheme::singleton()
     70{
     71    static NeverDestroyed<Ref<RenderTheme>> theme(RenderThemeGtk::create());
     72    return theme.get();
    7373}
    7474
  • trunk/Source/WebCore/rendering/RenderThemeIOS.mm

    r216544 r216902  
    296296}
    297297
    298 Ref<RenderTheme> RenderTheme::themeForPage(Page*)
    299 {
    300     static RenderTheme& renderTheme = RenderThemeIOS::create().leakRef();
    301     return renderTheme;
     298RenderTheme& RenderTheme::singleton()
     299{
     300    static NeverDestroyed<Ref<RenderTheme>> theme(RenderThemeIOS::create());
     301    return theme.get();
    302302}
    303303
  • trunk/Source/WebCore/rendering/RenderThemeMac.mm

    r216544 r216902  
    196196};
    197197
    198 Ref<RenderTheme> RenderTheme::themeForPage(Page*)
    199 {
    200     static RenderTheme& rt = RenderThemeMac::create().leakRef();
    201     return rt;
     198RenderTheme& RenderTheme::singleton()
     199{
     200    static NeverDestroyed<Ref<RenderTheme>> theme(RenderThemeMac::create());
     201    return theme.get();
    202202}
    203203
  • trunk/Source/WebCore/rendering/RenderThemeWin.cpp

    r216702 r216902  
    189189}
    190190
    191 Ref<RenderTheme> RenderTheme::themeForPage(Page* page)
    192 {
    193     static RenderTheme& winTheme = RenderThemeWin::create().leakRef();
    194     return winTheme;
     191RenderTheme& RenderTheme::singleton()
     192{
     193    static NeverDestroyed<Ref<RenderTheme>> theme(RenderThemeWin::create());
     194    return theme.get();
    195195}
    196196
  • trunk/Source/WebCore/rendering/TextPaintStyle.cpp

    r215261 r216902  
    8585        Page* page = frame.page();
    8686        if (page && page->focusController().isActive()) {
    87             paintStyle.fillColor = page->theme().systemColor(CSSValueActivebuttontext);
     87            paintStyle.fillColor = RenderTheme::singleton().systemColor(CSSValueActivebuttontext);
    8888            return paintStyle;
    8989        }
  • trunk/Source/WebKit/win/WebView.cpp

    r216823 r216902  
    27262726            if (Frame* coreFrame = core(mainFrameImpl)) {
    27272727                webView->deleteBackingStore();
    2728                 coreFrame->page()->theme().themeChanged();
     2728                RenderTheme::singleton().themeChanged();
    27292729                ScrollbarTheme::theme().themeChanged();
    27302730                RECT windowRect;
Note: See TracChangeset for help on using the changeset viewer.