Chromium Code Reviews| Index: Source/core/dom/Element.cpp |
| diff --git a/Source/core/dom/Element.cpp b/Source/core/dom/Element.cpp |
| index c69348e34641b001dad546df2a175dd3c422cf6d..8d6b05fc1b8482d232e106104829af7e983ec578 100644 |
| --- a/Source/core/dom/Element.cpp |
| +++ b/Source/core/dom/Element.cpp |
| @@ -1540,23 +1540,20 @@ bool Element::pseudoStyleCacheIsInvalid(const ComputedStyle* currentStyle, Compu |
| size_t cacheSize = pseudoStyleCache->size(); |
| for (size_t i = 0; i < cacheSize; ++i) { |
| RefPtr<ComputedStyle> newPseudoStyle; |
| - PseudoId pseudoId = pseudoStyleCache->at(i)->styleType(); |
| + RefPtr<ComputedStyle> oldPseudoStyle = pseudoStyleCache->at(i); |
| + PseudoId pseudoId = oldPseudoStyle->styleType(); |
| if (pseudoId == FIRST_LINE || pseudoId == FIRST_LINE_INHERITED) |
| newPseudoStyle = layoutObject()->uncachedFirstLineStyle(newStyle); |
| else |
| newPseudoStyle = layoutObject()->getUncachedPseudoStyle(PseudoStyleRequest(pseudoId), newStyle, newStyle); |
| if (!newPseudoStyle) |
| return true; |
| - if (*newPseudoStyle != *pseudoStyleCache->at(i)) { |
| + if (*oldPseudoStyle != *newPseudoStyle || oldPseudoStyle->font().loadingCustomFonts() != newPseudoStyle->font().loadingCustomFonts()) { |
|
mstensho (USE GERRIT)
2015/06/30 08:25:22
So I assume that letting differing loadingCustomFo
rune
2015/06/30 09:39:40
This was changed when introducing the baseLayoutSt
|
| if (pseudoId < FIRST_INTERNAL_PSEUDOID) |
| newStyle->setHasPseudoStyle(pseudoId); |
| newStyle->addCachedPseudoStyle(newPseudoStyle); |
| - if (pseudoId == FIRST_LINE || pseudoId == FIRST_LINE_INHERITED) { |
| - // FIXME: We should do an actual diff to determine whether a repaint vs. layout |
| - // is needed, but for now just assume a layout will be required. The diff code |
| - // in LayoutObject::setStyle would need to be factored out so that it could be reused. |
| - layoutObject()->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(LayoutInvalidationReason::StyleChange); |
| - } |
| + if (pseudoId == FIRST_LINE || pseudoId == FIRST_LINE_INHERITED) |
| + layoutObject()->firstLineStyleDidChange(*oldPseudoStyle, *newPseudoStyle); |
| return true; |
| } |
| } |