Changeset 149392 in webkit


Ignore:
Timestamp:
Apr 30, 2013 12:42:45 PM (11 years ago)
Author:
akling@apple.com
Message:

Don't create StyleResolvers just to invalidate them.
<http://webkit.org/b/115436>

Reviewed by Geoffrey Garen.

Source/WebCore:

Renamed Document::styleResolver() to ensureStyleResolver() so it's clear that it never returns null.
Removed a bunch of unnecessary null-checks I spotted while doing this.

Also fixed Element::willModifyAttribute() and FrameView::setFrameRect() to not create a StyleResolver
and immediately invalidate it in some cases.

  • css/FontLoader.cpp:

(WebCore::FontLoader::loadFont):
(WebCore::FontLoader::checkFont):
(WebCore::FontLoader::resolveFontStyle):

  • css/MediaQueryMatcher.cpp:

(WebCore::MediaQueryMatcher::prepareEvaluator):

  • css/StyleMedia.cpp:

(WebCore::StyleMedia::matchMedium):

  • dom/Document.cpp:

(WebCore::Document::styleForElementIgnoringPendingStylesheets):
(WebCore::Document::styleForPage):

  • dom/Document.h:

(WebCore::Document::ensureStyleResolver):

  • dom/DocumentStyleSheetCollection.cpp:

(WebCore::DocumentStyleSheetCollection::combineCSSFeatureFlags):
(WebCore::DocumentStyleSheetCollection::resetCSSFeatureFlags):
(WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets):

  • dom/Element.cpp:

(WebCore::StyleResolverParentPusher::push):
(WebCore::StyleResolverParentPusher::~StyleResolverParentPusher):
(WebCore::Element::styleForRenderer):
(WebCore::Element::recalcStyle):
(WebCore::Element::willModifyAttribute):

  • dom/NodeRenderingContext.cpp:

(WebCore::NodeRenderingContext::createRendererForTextIfNeeded):

  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::recalcStyle):
(WebCore::ShadowRoot::attach):

  • dom/Text.cpp:

(WebCore::Text::recalcTextStyle):

  • editing/EditingStyle.cpp:

(WebCore::styleFromMatchedRulesForElement):

  • html/HTMLCanvasElement.cpp:
  • html/HTMLCanvasElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::customStyleForRenderer):

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::updateNonRenderStyle):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::updateNonRenderStyle):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::customStyleForRenderer):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setFont):

  • html/shadow/DateTimeEditElement.cpp:

(WebCore::DateTimeEditElement::customStyleForRenderer):

  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::getMatchedStylesForNode):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::getMatchedCSSRules):

  • page/FrameView.cpp:

(WebCore::FrameView::setFrameRect):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::KeyframeAnimation):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::updateFromElement):
(WebCore::RenderListBox::paintItemForeground):

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::fontSelector):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::getUncachedPseudoStyle):

  • rendering/RenderRegion.cpp:

(WebCore::RenderRegion::checkRegionStyle):
(WebCore::RenderRegion::computeStyleInRegion):

  • rendering/RenderSearchField.cpp:

(WebCore::RenderSearchField::fontSelector):

  • rendering/svg/RenderSVGInlineText.cpp:

(WebCore::RenderSVGInlineText::computeNewScaledFontForStyle):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::customStyleForRenderer):

  • svg/SVGElementRareData.h:

(WebCore::SVGElementRareData::overrideComputedStyle):

Source/WebKit/qt:

  • Api/qwebelement.cpp:

(QWebElement::styleProperty):

Location:
trunk/Source
Files:
34 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r149388 r149392  
     12013-04-30  Andreas Kling  <akling@apple.com>
     2
     3        Don't create StyleResolvers just to invalidate them.
     4        <http://webkit.org/b/115436>
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        Renamed Document::styleResolver() to ensureStyleResolver() so it's clear that it never returns null.
     9        Removed a bunch of unnecessary null-checks I spotted while doing this.
     10
     11        Also fixed Element::willModifyAttribute() and FrameView::setFrameRect() to not create a StyleResolver
     12        and immediately invalidate it in some cases.
     13
     14        * css/FontLoader.cpp:
     15        (WebCore::FontLoader::loadFont):
     16        (WebCore::FontLoader::checkFont):
     17        (WebCore::FontLoader::resolveFontStyle):
     18        * css/MediaQueryMatcher.cpp:
     19        (WebCore::MediaQueryMatcher::prepareEvaluator):
     20        * css/StyleMedia.cpp:
     21        (WebCore::StyleMedia::matchMedium):
     22        * dom/Document.cpp:
     23        (WebCore::Document::styleForElementIgnoringPendingStylesheets):
     24        (WebCore::Document::styleForPage):
     25        * dom/Document.h:
     26        (WebCore::Document::ensureStyleResolver):
     27        * dom/DocumentStyleSheetCollection.cpp:
     28        (WebCore::DocumentStyleSheetCollection::combineCSSFeatureFlags):
     29        (WebCore::DocumentStyleSheetCollection::resetCSSFeatureFlags):
     30        (WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets):
     31        * dom/Element.cpp:
     32        (WebCore::StyleResolverParentPusher::push):
     33        (WebCore::StyleResolverParentPusher::~StyleResolverParentPusher):
     34        (WebCore::Element::styleForRenderer):
     35        (WebCore::Element::recalcStyle):
     36        (WebCore::Element::willModifyAttribute):
     37        * dom/NodeRenderingContext.cpp:
     38        (WebCore::NodeRenderingContext::createRendererForTextIfNeeded):
     39        * dom/ShadowRoot.cpp:
     40        (WebCore::ShadowRoot::recalcStyle):
     41        (WebCore::ShadowRoot::attach):
     42        * dom/Text.cpp:
     43        (WebCore::Text::recalcTextStyle):
     44        * editing/EditingStyle.cpp:
     45        (WebCore::styleFromMatchedRulesForElement):
     46        * html/HTMLCanvasElement.cpp:
     47        * html/HTMLCanvasElement.h:
     48        * html/HTMLInputElement.cpp:
     49        (WebCore::HTMLInputElement::customStyleForRenderer):
     50        * html/HTMLOptGroupElement.cpp:
     51        (WebCore::HTMLOptGroupElement::updateNonRenderStyle):
     52        * html/HTMLOptionElement.cpp:
     53        (WebCore::HTMLOptionElement::updateNonRenderStyle):
     54        * html/HTMLPlugInImageElement.cpp:
     55        (WebCore::HTMLPlugInImageElement::customStyleForRenderer):
     56        * html/canvas/CanvasRenderingContext2D.cpp:
     57        (WebCore::CanvasRenderingContext2D::setFont):
     58        * html/shadow/DateTimeEditElement.cpp:
     59        (WebCore::DateTimeEditElement::customStyleForRenderer):
     60        * inspector/InspectorCSSAgent.cpp:
     61        (WebCore::InspectorCSSAgent::getMatchedStylesForNode):
     62        * page/DOMWindow.cpp:
     63        (WebCore::DOMWindow::getMatchedCSSRules):
     64        * page/FrameView.cpp:
     65        (WebCore::FrameView::setFrameRect):
     66        * page/animation/KeyframeAnimation.cpp:
     67        (WebCore::KeyframeAnimation::KeyframeAnimation):
     68        * rendering/RenderListBox.cpp:
     69        (WebCore::RenderListBox::updateFromElement):
     70        (WebCore::RenderListBox::paintItemForeground):
     71        * rendering/RenderMenuList.cpp:
     72        (WebCore::RenderMenuList::fontSelector):
     73        * rendering/RenderObject.cpp:
     74        (WebCore::RenderObject::getUncachedPseudoStyle):
     75        * rendering/RenderRegion.cpp:
     76        (WebCore::RenderRegion::checkRegionStyle):
     77        (WebCore::RenderRegion::computeStyleInRegion):
     78        * rendering/RenderSearchField.cpp:
     79        (WebCore::RenderSearchField::fontSelector):
     80        * rendering/svg/RenderSVGInlineText.cpp:
     81        (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle):
     82        * svg/SVGElement.cpp:
     83        (WebCore::SVGElement::customStyleForRenderer):
     84        * svg/SVGElementRareData.h:
     85        (WebCore::SVGElementRareData::overrideComputedStyle):
     86
    1872013-04-30  Simon Fraser  <simon.fraser@apple.com>
    288
  • trunk/Source/WebCore/css/FontLoader.cpp

    r148395 r149392  
    238238   
    239239    for (const FontFamily* f = &font.family(); f; f = f->next()) {
    240         CSSSegmentedFontFace* face = m_document->styleResolver()->fontSelector()->getFontFace(font.fontDescription(), f->family());
     240        CSSSegmentedFontFace* face = m_document->ensureStyleResolver()->fontSelector()->getFontFace(font.fontDescription(), f->family());
    241241        if (!face) {
    242242            if (callback)
     
    255255        return false;
    256256    for (const FontFamily* f = &font.family(); f; f = f->next()) {
    257         CSSSegmentedFontFace* face = m_document->styleResolver()->fontSelector()->getFontFace(font.fontDescription(), f->family());
     257        CSSSegmentedFontFace* face = m_document->ensureStyleResolver()->fontSelector()->getFontFace(font.fontDescription(), f->family());
    258258        if (!face || !face->checkFont())
    259259            return false;
     
    294294
    295295    // Now map the font property longhands into the style.
    296     StyleResolver* styleResolver = m_document->styleResolver();
     296    StyleResolver* styleResolver = m_document->ensureStyleResolver();
    297297    styleResolver->applyPropertyToStyle(CSSPropertyFontFamily, parsedStyle->getPropertyCSSValue(CSSPropertyFontFamily).get(), style.get());
    298298    applyPropertyToCurrentStyle(styleResolver, CSSPropertyFontStyle, parsedStyle);
  • trunk/Source/WebCore/css/MediaQueryMatcher.cpp

    r133884 r149392  
    8585        return nullptr;
    8686
    87     StyleResolver* styleResolver = m_document->styleResolver();
    88     if (!styleResolver)
    89         return nullptr;
     87    StyleResolver* styleResolver = m_document->ensureStyleResolver();
    9088
    9189    RefPtr<RenderStyle> rootStyle = styleResolver->styleForElement(documentElement, 0 /*defaultParent*/, DisallowStyleSharing, MatchOnlyUserAgentRules);
  • trunk/Source/WebCore/css/StyleMedia.cpp

    r115215 r149392  
    6161        return false;
    6262
    63     StyleResolver* styleResolver = document->styleResolver();
    64     if (!styleResolver)
    65         return false;
     63    StyleResolver* styleResolver = document->ensureStyleResolver();
    6664
    6765    RefPtr<RenderStyle> rootStyle = styleResolver->styleForElement(documentElement, 0 /*defaultParent*/, DisallowStyleSharing, MatchOnlyUserAgentRules);
  • trunk/Source/WebCore/dom/Document.cpp

    r149317 r149392  
    19351935    bool oldIgnore = m_ignorePendingStylesheets;
    19361936    m_ignorePendingStylesheets = true;
    1937     RefPtr<RenderStyle> style = styleResolver()->styleForElement(element, element->parentNode() ? element->parentNode()->computedStyle() : 0);
     1937    RefPtr<RenderStyle> style = ensureStyleResolver()->styleForElement(element, element->parentNode() ? element->parentNode()->computedStyle() : 0);
    19381938    m_ignorePendingStylesheets = oldIgnore;
    19391939    return style.release();
     
    19421942PassRefPtr<RenderStyle> Document::styleForPage(int pageIndex)
    19431943{
    1944     RefPtr<RenderStyle> style = styleResolver()->styleForPage(pageIndex);
     1944    RefPtr<RenderStyle> style = ensureStyleResolver()->styleForPage(pageIndex);
    19451945    return style.release();
    19461946}
  • trunk/Source/WebCore/dom/Document.h

    r149262 r149392  
    450450    bool sawElementsInKnownNamespaces() const { return m_sawElementsInKnownNamespaces; }
    451451
    452     StyleResolver* styleResolver()
     452    StyleResolver* ensureStyleResolver()
    453453    {
    454454        if (!m_styleResolver)
  • trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp

    r148921 r149392  
    8787{
    8888    // Delay resetting the flags until after next style recalc since unapplying the style may not work without these set (this is true at least with before/after).
    89     StyleResolver* styleResolver = m_document->styleResolver();
     89    StyleResolver* styleResolver = m_document->ensureStyleResolver();
    9090    m_usesSiblingRules = m_usesSiblingRules || styleResolver->usesSiblingRules();
    9191    m_usesFirstLineRules = m_usesFirstLineRules || styleResolver->usesFirstLineRules();
     
    9595void DocumentStyleSheetCollection::resetCSSFeatureFlags()
    9696{
    97     StyleResolver* styleResolver = m_document->styleResolver();
     97    StyleResolver* styleResolver = m_document->ensureStyleResolver();
    9898    m_usesSiblingRules = styleResolver->usesSiblingRules();
    9999    m_usesFirstLineRules = styleResolver->usesFirstLineRules();
     
    475475        m_document->clearStyleResolver();
    476476    else {
    477         StyleResolver* styleResolver = m_document->styleResolver();
     477        StyleResolver* styleResolver = m_document->ensureStyleResolver();
    478478        if (styleResolverUpdateType == Reset) {
    479479            styleResolver->ruleSets().resetAuthorStyle();
  • trunk/Source/WebCore/dom/Element.cpp

    r149061 r149392  
    113113        if (m_pushedStyleResolver)
    114114            return;
    115         m_pushedStyleResolver = m_parent->document()->styleResolver();
     115        m_pushedStyleResolver = m_parent->document()->ensureStyleResolver();
    116116        m_pushedStyleResolver->pushParentElement(m_parent);
    117117    }
     
    124124        // This tells us that our pushed style selector is in a bad state,
    125125        // so we should just bail out in that scenario.
    126         ASSERT(m_pushedStyleResolver == m_parent->document()->styleResolver());
    127         if (m_pushedStyleResolver != m_parent->document()->styleResolver())
     126        ASSERT(m_pushedStyleResolver == m_parent->document()->ensureStyleResolver());
     127        if (m_pushedStyleResolver != m_parent->document()->ensureStyleResolver())
    128128            return;
    129129
     
    13881388    }
    13891389
    1390     return document()->styleResolver()->styleForElement(this);
     1390    return document()->ensureStyleResolver()->styleForElement(this);
    13911391}
    13921392
     
    14411441        if (document()->styleSheetCollection()->usesRemUnits() && document()->documentElement() == this && localChange != NoChange && currentStyle && newStyle && currentStyle->fontSize() != newStyle->fontSize()) {
    14421442            // Cached RenderStyles may depend on the re units.
    1443             document()->styleResolver()->invalidateMatchedPropertiesCache();
     1443            if (StyleResolver* styleResolver = document()->styleResolverIfExists())
     1444                styleResolver->invalidateMatchedPropertiesCache();
    14441445            change = Force;
    14451446        }
     
    27222723
    27232724    if (oldValue != newValue) {
    2724         if (attached() && document()->styleResolver() && document()->styleResolver()->hasSelectorForAttribute(name.localName()))
     2725        if (attached() && document()->styleResolverIfExists() && document()->styleResolverIfExists()->hasSelectorForAttribute(name.localName()))
    27252726            setNeedsStyleRecalc();
    27262727    }
  • trunk/Source/WebCore/dom/NodeRenderingContext.cpp

    r148865 r149392  
    298298
    299299    if (resetStyleInheritance())
    300         m_style = document->styleResolver()->defaultStyleForElement();
     300        m_style = document->ensureStyleResolver()->defaultStyleForElement();
    301301    else
    302302        m_style = parentRenderer->style();
  • trunk/Source/WebCore/dom/ShadowRoot.cpp

    r148921 r149392  
    135135    ASSERT(!hasCustomStyleCallbacks());
    136136
    137     StyleResolver* styleResolver = document()->styleResolver();
     137    StyleResolver* styleResolver = document()->ensureStyleResolver();
    138138    styleResolver->pushParentShadowRoot(this);
    139139
     
    175175void ShadowRoot::attach()
    176176{
    177     StyleResolver* styleResolver = document()->styleResolver();
     177    StyleResolver* styleResolver = document()->ensureStyleResolver();
    178178    styleResolver->pushParentShadowRoot(this);
    179179    DocumentFragment::attach();
  • trunk/Source/WebCore/dom/Text.cpp

    r148865 r149392  
    287287
    288288    if (change != NoChange && renderer)
    289         renderer->setStyle(document()->styleResolver()->styleForText(this));
     289        renderer->setStyle(document()->ensureStyleResolver()->styleForText(this));
    290290
    291291    if (needsStyleRecalc()) {
  • trunk/Source/WebCore/editing/EditingStyle.cpp

    r149029 r149392  
    10771077{
    10781078    RefPtr<MutableStylePropertySet> style = MutableStylePropertySet::create();
    1079     RefPtr<CSSRuleList> matchedRules = element->document()->styleResolver()->styleRulesForElement(element, rulesToInclude);
     1079    RefPtr<CSSRuleList> matchedRules = element->document()->ensureStyleResolver()->styleRulesForElement(element, rulesToInclude);
    10801080    if (matchedRules) {
    10811081        for (unsigned i = 0; i < matchedRules->length(); i++) {
  • trunk/Source/WebCore/html/HTMLCanvasElement.cpp

    r149347 r149392  
    479479}
    480480
    481 StyleResolver* HTMLCanvasElement::styleResolver()
    482 {
    483     return document()->styleResolver();
    484 }
    485 
    486481bool HTMLCanvasElement::shouldAccelerate(const IntSize& size) const
    487482{
  • trunk/Source/WebCore/html/HTMLCanvasElement.h

    r148921 r149392  
    125125    bool originClean() const { return m_originClean; }
    126126
    127     StyleResolver* styleResolver();
    128 
    129127    AffineTransform baseTransform() const;
    130128
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r148921 r149392  
    19731973PassRefPtr<RenderStyle> HTMLInputElement::customStyleForRenderer()
    19741974{
    1975     return m_inputType->customStyleForRenderer(document()->styleResolver()->styleForElement(this));
     1975    return m_inputType->customStyleForRenderer(document()->ensureStyleResolver()->styleForElement(this));
    19761976}
    19771977#endif
  • trunk/Source/WebCore/html/HTMLOptGroupElement.cpp

    r147135 r149392  
    115115void HTMLOptGroupElement::updateNonRenderStyle()
    116116{
    117     m_style = document()->styleResolver()->styleForElement(this);
     117    m_style = document()->ensureStyleResolver()->styleForElement(this);
    118118}
    119119
  • trunk/Source/WebCore/html/HTMLOptionElement.cpp

    r147135 r149392  
    313313void HTMLOptionElement::updateNonRenderStyle()
    314314{
    315     m_style = document()->styleResolver()->styleForElement(this);
     315    m_style = document()->ensureStyleResolver()->styleForElement(this);
    316316}
    317317
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp

    r148560 r149392  
    294294{
    295295    if (!m_customStyleForPageCache)
    296         return document()->styleResolver()->styleForElement(this);
     296        return document()->ensureStyleResolver()->styleForElement(this);
    297297    return m_customStyleForPageCache;
    298298}
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp

    r148395 r149392  
    20642064
    20652065    // Now map the font property longhands into the style.
    2066     StyleResolver* styleResolver = canvas()->styleResolver();
     2066    StyleResolver* styleResolver = canvas()->document()->ensureStyleResolver();
    20672067    styleResolver->applyPropertyToStyle(CSSPropertyFontFamily, parsedStyle->getPropertyCSSValue(CSSPropertyFontFamily).get(), newStyle.get());
    20682068    styleResolver->applyPropertyToCurrentStyle(CSSPropertyFontStyle, parsedStyle->getPropertyCSSValue(CSSPropertyFontStyle).get());
  • trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp

    r146453 r149392  
    499499    // FIXME: This is a kind of layout. We might want to introduce new renderer.
    500500    FontCachePurgePreventer fontCachePurgePreventer;
    501     RefPtr<RenderStyle> originalStyle = document()->styleResolver()->styleForElement(this);
     501    RefPtr<RenderStyle> originalStyle = document()->ensureStyleResolver()->styleForElement(this);
    502502    RefPtr<RenderStyle> style = RenderStyle::clone(originalStyle.get());
    503503    float width = 0;
  • trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp

    r148723 r149392  
    735735
    736736    // Matched rules.
    737     StyleResolver* styleResolver = element->ownerDocument()->styleResolver();
     737    StyleResolver* styleResolver = element->ownerDocument()->ensureStyleResolver();
    738738    RefPtr<CSSRuleList> matchedRules = styleResolver->styleRulesForElement(element, StyleResolver::AllCSSRules);
    739739    matchedCSSRules = buildArrayForMatchedRuleList(matchedRules.get(), styleResolver, element);
     
    760760        Element* parentElement = element->parentElement();
    761761        while (parentElement) {
    762             StyleResolver* parentStyleResolver = parentElement->ownerDocument()->styleResolver();
     762            StyleResolver* parentStyleResolver = parentElement->ownerDocument()->ensureStyleResolver();
    763763            RefPtr<CSSRuleList> parentMatchedRules = parentStyleResolver->styleRulesForElement(parentElement, StyleResolver::AllCSSRules);
    764764            RefPtr<TypeBuilder::CSS::InheritedStyleEntry> entry = TypeBuilder::CSS::InheritedStyleEntry::create()
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r149359 r149392  
    13831383    PseudoId pseudoId = CSSSelector::pseudoId(pseudoType);
    13841384
    1385     return m_frame->document()->styleResolver()->pseudoStyleRulesForElement(element, pseudoId, rulesToInclude);
     1385    return m_frame->document()->ensureStyleResolver()->pseudoStyleRulesForElement(element, pseudoId, rulesToInclude);
    13861386}
    13871387
  • trunk/Source/WebCore/page/FrameView.cpp

    r149382 r149392  
    482482
    483483    // Viewport-dependent media queries may cause us to need completely different style information.
    484     if (document && document->styleResolver() && document->styleResolver()->affectedByViewportChange()) {
     484    if (document && document->styleResolverIfExists() && document->styleResolverIfExists()->affectedByViewportChange()) {
    485485        document->styleResolverChanged(DeferRecalcStyle);
    486486        InspectorInstrumentation::mediaQueryResultChanged(document);
  • trunk/Source/WebCore/page/animation/KeyframeAnimation.cpp

    r147792 r149392  
    5353    // Get the keyframe RenderStyles
    5454    if (m_object && m_object->node() && m_object->node()->isElementNode())
    55         m_object->document()->styleResolver()->keyframeStylesForAnimation(toElement(m_object->node()), unanimatedStyle, m_keyframes);
     55        m_object->document()->ensureStyleResolver()->keyframeStylesForAnimation(toElement(m_object->node()), unanimatedStyle, m_keyframes);
    5656
    5757    // Update the m_transformFunctionListValid flag based on whether the function lists in the keyframes match.
  • trunk/Source/WebCore/rendering/RenderListBox.cpp

    r149066 r149392  
    132132                d.setWeight(d.bolderWeight());
    133133                itemFont = Font(d, itemFont.letterSpacing(), itemFont.wordSpacing());
    134                 itemFont.update(document()->styleResolver()->fontSelector());
     134                itemFont.update(document()->ensureStyleResolver()->fontSelector());
    135135            }
    136136
     
    432432        d.setWeight(d.bolderWeight());
    433433        itemFont = Font(d, itemFont.letterSpacing(), itemFont.wordSpacing());
    434         itemFont.update(document()->styleResolver()->fontSelector());
     434        itemFont.update(document()->ensureStyleResolver()->fontSelector());
    435435    }
    436436
  • trunk/Source/WebCore/rendering/RenderMenuList.cpp

    r147135 r149392  
    616616FontSelector* RenderMenuList::fontSelector() const
    617617{
    618     return document()->styleResolver()->fontSelector();
    619 }
    620 
    621 }
     618    return document()->ensureStyleResolver()->fontSelector();
     619}
     620
     621}
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r149007 r149392  
    27692769
    27702770    if (pseudoStyleRequest.pseudoId == FIRST_LINE_INHERITED) {
    2771         RefPtr<RenderStyle> result = document()->styleResolver()->styleForElement(element, parentStyle, DisallowStyleSharing);
     2771        RefPtr<RenderStyle> result = document()->ensureStyleResolver()->styleForElement(element, parentStyle, DisallowStyleSharing);
    27722772        result->setStyleType(FIRST_LINE_INHERITED);
    27732773        return result.release();
    27742774    }
    27752775
    2776     return document()->styleResolver()->pseudoStyleForElement(element, pseudoStyleRequest, parentStyle);
     2776    return document()->ensureStyleResolver()->pseudoStyleForElement(element, pseudoStyleRequest, parentStyle);
    27772777}
    27782778
  • trunk/Source/WebCore/rendering/RenderRegion.cpp

    r149168 r149392  
    196196    if (node()) {
    197197        Element* regionElement = toElement(node());
    198         customRegionStyle = view()->document()->styleResolver()->checkRegionStyle(regionElement);
     198        customRegionStyle = view()->document()->ensureStyleResolver()->checkRegionStyle(regionElement);
    199199    }
    200200    setHasCustomRegionStyle(customRegionStyle);
     
    527527    // FIXME: Region styling fails for pseudo-elements because the renderers don't have a node.
    528528    Element* element = toElement(object->node());
    529     RefPtr<RenderStyle> renderObjectRegionStyle = object->view()->document()->styleResolver()->styleForElement(element, 0, DisallowStyleSharing, MatchAllRules, this);
     529    RefPtr<RenderStyle> renderObjectRegionStyle = object->view()->document()->ensureStyleResolver()->styleForElement(element, 0, DisallowStyleSharing, MatchAllRules, this);
    530530
    531531    return renderObjectRegionStyle.release();
  • trunk/Source/WebCore/rendering/RenderSearchField.cpp

    r145562 r149392  
    345345FontSelector* RenderSearchField::fontSelector() const
    346346{
    347     return document()->styleResolver()->fontSelector();
     347    return document()->ensureStyleResolver()->fontSelector();
    348348}
    349349
  • trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp

    r130612 r149392  
    229229    ASSERT(document);
    230230   
    231     StyleResolver* styleResolver = document->styleResolver();
    232     ASSERT(styleResolver);
     231    StyleResolver* styleResolver = document->ensureStyleResolver();
    233232
    234233    // Alter font-size to the right on-screen value to avoid scaling the glyphs themselves, except when GeometricPrecision is specified
  • trunk/Source/WebCore/svg/SVGElement.cpp

    r149306 r149392  
    597597{
    598598    if (!correspondingElement())
    599         return document()->styleResolver()->styleForElement(this);
     599        return document()->ensureStyleResolver()->styleForElement(this);
    600600
    601601    RenderStyle* style = 0;
     
    605605    }
    606606
    607     return document()->styleResolver()->styleForElement(correspondingElement(), style, DisallowStyleSharing);
     607    return document()->ensureStyleResolver()->styleForElement(correspondingElement(), style, DisallowStyleSharing);
    608608}
    609609
  • trunk/Source/WebCore/svg/SVGElementRareData.h

    r148403 r149392  
    9696        if (!m_overrideComputedStyle || m_needsOverrideComputedStyleUpdate) {
    9797            // The style computed here contains no CSS Animations/Transitions or SMIL induced rules - this is needed to compute the "base value" for the SMIL animation sandwhich model.
    98             m_overrideComputedStyle = element->document()->styleResolver()->styleForElement(element, parentStyle, DisallowStyleSharing, MatchAllRulesExcludingSMIL);
     98            m_overrideComputedStyle = element->document()->ensureStyleResolver()->styleForElement(element, parentStyle, DisallowStyleSharing, MatchAllRulesExcludingSMIL);
    9999            m_needsOverrideComputedStyleUpdate = false;
    100100        }
  • trunk/Source/WebKit/qt/Api/qwebelement.cpp

    r148373 r149392  
    830830
    831831        Document* doc = m_element->document();
    832         if (RefPtr<CSSRuleList> rules = doc->styleResolver()->styleRulesForElement(m_element, StyleResolver::AuthorCSSRules | StyleResolver::CrossOriginCSSRules)) {
     832        if (RefPtr<CSSRuleList> rules = doc->ensureStyleResolver()->styleRulesForElement(m_element, StyleResolver::AuthorCSSRules | StyleResolver::CrossOriginCSSRules)) {
    833833            for (int i = rules->length(); i > 0; --i) {
    834834                CSSStyleRule* rule = static_cast<CSSStyleRule*>(rules->item(i - 1));
  • trunk/Source/WebKit/qt/ChangeLog

    r149125 r149392  
     12013-04-30  Andreas Kling  <akling@apple.com>
     2
     3        Don't create StyleResolvers just to invalidate them.
     4        <http://webkit.org/b/115436>
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        * Api/qwebelement.cpp:
     9        (QWebElement::styleProperty):
     10
    1112013-04-25  Joseph Pecoraro  <pecoraro@apple.com>
    212
Note: See TracChangeset for help on using the changeset viewer.