| Index: Source/core/css/resolver/StyleResolver.cpp
|
| diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
|
| index 10638405cd9184128caf9fe31269b5eb60ab9511..0ea3837c1444ba3d25d6dc6bb012437a99034a4c 100644
|
| --- a/Source/core/css/resolver/StyleResolver.cpp
|
| +++ b/Source/core/css/resolver/StyleResolver.cpp
|
| @@ -828,16 +828,22 @@ PassRefPtr<PseudoElement> StyleResolver::createPseudoElementIfNeeded(Element& pa
|
| return nullptr;
|
|
|
| RenderStyle* parentStyle = parentRenderer->style();
|
| + if (RenderStyle* cachedStyle = parentStyle->getCachedPseudoStyle(pseudoId)) {
|
| + if (!pseudoElementRendererIsNeeded(cachedStyle))
|
| + return nullptr;
|
| + return PseudoElement::create(&parent, pseudoId);
|
| + }
|
| +
|
| StyleResolverState state(document(), &parent, parentStyle);
|
| if (!pseudoStyleForElementInternal(parent, pseudoId, parentStyle, state))
|
| return nullptr;
|
| RefPtr<RenderStyle> style = state.takeStyle();
|
| ASSERT(style);
|
| + parentStyle->addCachedPseudoStyle(style);
|
|
|
| if (!pseudoElementRendererIsNeeded(style.get()))
|
| return nullptr;
|
|
|
| - parentStyle->addCachedPseudoStyle(style.release());
|
| RefPtr<PseudoElement> pseudo = PseudoElement::create(&parent, pseudoId);
|
|
|
| setAnimationUpdateIfNeeded(state, *pseudo);
|
|
|