Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: third_party/WebKit/Source/core/dom/Element.cpp

Issue 2727233005: Remove calls to styleForLayoutObject() in LayoutTreeBuilder::style() (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Peter Kelly (pmk@post.com) 4 * (C) 2001 Peter Kelly (pmk@post.com)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * (C) 2007 David Smith (catfish.man@gmail.com) 6 * (C) 2007 David Smith (catfish.man@gmail.com)
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
8 * All rights reserved. 8 * All rights reserved.
9 * (C) 2007 Eric Seidel (eric@webkit.org) 9 * (C) 2007 Eric Seidel (eric@webkit.org)
10 * 10 *
(...skipping 2002 matching lines...) Expand 10 before | Expand all | Expand 10 after
2013 2013
2014 StyleRecalcChange localChange = 2014 StyleRecalcChange localChange =
2015 ComputedStyle::stylePropagationDiff(oldStyle.get(), newStyle.get()); 2015 ComputedStyle::stylePropagationDiff(oldStyle.get(), newStyle.get());
2016 if (localChange == NoChange) { 2016 if (localChange == NoChange) {
2017 INCREMENT_STYLE_STATS_COUNTER(document().styleEngine(), stylesUnchanged, 1); 2017 INCREMENT_STYLE_STATS_COUNTER(document().styleEngine(), stylesUnchanged, 1);
2018 } else { 2018 } else {
2019 INCREMENT_STYLE_STATS_COUNTER(document().styleEngine(), stylesChanged, 1); 2019 INCREMENT_STYLE_STATS_COUNTER(document().styleEngine(), stylesChanged, 1);
2020 } 2020 }
2021 2021
2022 if (localChange == Reattach) { 2022 if (localChange == Reattach) {
2023 // This mimicks Element::recalcStyleForLayout except it also stores the
2024 // nextTextSibling information and sets the NeedsReattachLayoutTree flag.
2023 StyleReattachData styleReattachData; 2025 StyleReattachData styleReattachData;
2024 styleReattachData.computedStyle = std::move(newStyle); 2026 styleReattachData.computedStyle = std::move(newStyle);
2025 styleReattachData.nextTextSibling = nextTextSibling; 2027 styleReattachData.nextTextSibling = nextTextSibling;
2026 document().addStyleReattachData(*this, styleReattachData); 2028 document().addStyleReattachData(*this, styleReattachData);
2027 setNeedsReattachLayoutTree(); 2029 setNeedsReattachLayoutTree();
2030 recalcShadowRootStylesForLayout();
nainar 2017/03/03 06:08:52 This only goes over the descendants (ContainerNode
2031 recalcDescendantStylesForLayout();
2028 return Reattach; 2032 return Reattach;
2029 } 2033 }
2030 2034
2031 DCHECK(oldStyle); 2035 DCHECK(oldStyle);
2032 2036
2033 if (localChange != NoChange) 2037 if (localChange != NoChange)
2034 updateCallbackSelectors(oldStyle.get(), newStyle.get()); 2038 updateCallbackSelectors(oldStyle.get(), newStyle.get());
2035 2039
2036 if (LayoutObject* layoutObject = this->layoutObject()) { 2040 if (LayoutObject* layoutObject = this->layoutObject()) {
2037 if (localChange != NoChange || 2041 if (localChange != NoChange ||
(...skipping 24 matching lines...) Expand all
2062 return Inherit; 2066 return Inherit;
2063 newStyle->copyChildDependentFlagsFrom(*oldStyle); 2067 newStyle->copyChildDependentFlagsFrom(*oldStyle);
2064 } 2068 }
2065 if (oldStyle->hasPseudoElementStyle() || newStyle->hasPseudoElementStyle()) 2069 if (oldStyle->hasPseudoElementStyle() || newStyle->hasPseudoElementStyle())
2066 return UpdatePseudoElements; 2070 return UpdatePseudoElements;
2067 } 2071 }
2068 2072
2069 return localChange; 2073 return localChange;
2070 } 2074 }
2071 2075
2076 void Element::recalcStyleForLayout() {
2077 if (!hasCustomStyleCallbacks()) {
2078 StyleReattachData styleReattachData;
2079 styleReattachData.computedStyle = styleForLayoutObject();
2080 document().addStyleReattachData(*this, styleReattachData);
2081 }
2082 recalcShadowRootStylesForLayout();
nainar 2017/03/03 06:08:52 Need to add a function here to deal with the relev
2083 recalcDescendantStylesForLayout();
2084 }
2085
2086 void Element::recalcShadowRootStylesForLayout() {
2087 for (ShadowRoot* root = youngestShadowRoot(); root;
2088 root = root->olderShadowRoot()) {
2089 root->recalcDescendantStylesForLayout();
2090 }
2091 }
2092
2072 void Element::rebuildLayoutTree() { 2093 void Element::rebuildLayoutTree() {
2073 DCHECK(inActiveDocument()); 2094 DCHECK(inActiveDocument());
2074 DCHECK(parentNode()); 2095 DCHECK(parentNode());
2075 2096
2076 if (needsReattachLayoutTree()) { 2097 if (needsReattachLayoutTree()) {
2077 StyleReattachData styleReattachData = 2098 StyleReattachData styleReattachData =
2078 document().getStyleReattachData(*this); 2099 document().getStyleReattachData(*this);
2079 AttachContext reattachContext; 2100 AttachContext reattachContext;
2080 reattachContext.resolvedStyle = styleReattachData.computedStyle.get(); 2101 reattachContext.resolvedStyle = styleReattachData.computedStyle.get();
2081 bool layoutObjectWillChange = needsAttach() || layoutObject(); 2102 bool layoutObjectWillChange = needsAttach() || layoutObject();
(...skipping 2144 matching lines...) Expand 10 before | Expand all | Expand 10 after
4226 } 4247 }
4227 4248
4228 DEFINE_TRACE_WRAPPERS(Element) { 4249 DEFINE_TRACE_WRAPPERS(Element) {
4229 if (hasRareData()) { 4250 if (hasRareData()) {
4230 visitor->traceWrappers(elementRareData()); 4251 visitor->traceWrappers(elementRareData());
4231 } 4252 }
4232 ContainerNode::traceWrappers(visitor); 4253 ContainerNode::traceWrappers(visitor);
4233 } 4254 }
4234 4255
4235 } // namespace blink 4256 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Element.h ('k') | third_party/WebKit/Source/core/dom/LayoutTreeBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698