| Index: third_party/WebKit/Source/core/css/resolver/SharedStyleFinder.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/resolver/SharedStyleFinder.cpp b/third_party/WebKit/Source/core/css/resolver/SharedStyleFinder.cpp
|
| index 6c0529d8398a6af248d1e0b841d7f70320b7fbf0..253d88a096dd14864e2f942edfe265360028e385 100644
|
| --- a/third_party/WebKit/Source/core/css/resolver/SharedStyleFinder.cpp
|
| +++ b/third_party/WebKit/Source/core/css/resolver/SharedStyleFinder.cpp
|
| @@ -59,6 +59,16 @@ namespace blink {
|
|
|
| using namespace HTMLNames;
|
|
|
| +inline ComputedStyle* getElementStyle(Element& element) {
|
| + if (element.needsReattachLayoutTree()) {
|
| + StyleReattachData styleReattachData =
|
| + element.document().getStyleReattachData(element);
|
| + if (styleReattachData.computedStyle)
|
| + return styleReattachData.computedStyle.get();
|
| + }
|
| + return element.mutableComputedStyle();
|
| +}
|
| +
|
| bool SharedStyleFinder::canShareStyleWithControl(Element& candidate) const {
|
| if (!isHTMLInputElement(candidate) || !isHTMLInputElement(element()))
|
| return false;
|
| @@ -228,15 +238,15 @@ bool SharedStyleFinder::canShareStyleWithElement(Element& candidate) const {
|
| if (element() == candidate)
|
| return false;
|
| Element* parent = candidate.parentOrShadowHostElement();
|
| - const ComputedStyle* style = candidate.computedStyle();
|
| + const ComputedStyle* style = getElementStyle(candidate);
|
| if (!style)
|
| return false;
|
| if (!style->isSharable())
|
| return false;
|
| if (!parent)
|
| return false;
|
| - if (element().parentOrShadowHostElement()->computedStyle() !=
|
| - parent->computedStyle())
|
| + if (getElementStyle(*element().parentOrShadowHostElement()) !=
|
| + getElementStyle(*parent))
|
| return false;
|
| if (candidate.tagQName() != element().tagQName())
|
| return false;
|
| @@ -407,7 +417,7 @@ ComputedStyle* SharedStyleFinder::findSharedStyle() {
|
| return nullptr;
|
| }
|
|
|
| - return shareElement->mutableComputedStyle();
|
| + return getElementStyle(*shareElement);
|
| }
|
|
|
| } // namespace blink
|
|
|