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

Side by Side Diff: third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp

Issue 2557773004: Remove unused lazyAppend from StyleResolver. (Closed)
Patch Set: Rebased. Created 4 years 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
« no previous file with comments | « third_party/WebKit/Source/core/css/resolver/StyleResolver.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
6 * All rights reserved. 6 * All rights reserved.
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
10 * (http://www.torchmobile.com/) 10 * (http://www.torchmobile.com/)
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 StyleResolver::~StyleResolver() {} 185 StyleResolver::~StyleResolver() {}
186 186
187 void StyleResolver::dispose() { 187 void StyleResolver::dispose() {
188 m_matchedPropertiesCache.clear(); 188 m_matchedPropertiesCache.clear();
189 } 189 }
190 190
191 void StyleResolver::setRuleUsageTracker(StyleRuleUsageTracker* tracker) { 191 void StyleResolver::setRuleUsageTracker(StyleRuleUsageTracker* tracker) {
192 m_tracker = tracker; 192 m_tracker = tracker;
193 } 193 }
194 194
195 void StyleResolver::lazyAppendAuthorStyleSheets(
196 unsigned firstNew,
197 const HeapVector<Member<CSSStyleSheet>>& styleSheets) {
198 unsigned size = styleSheets.size();
199 for (unsigned i = firstNew; i < size; ++i)
200 m_pendingStyleSheets.add(styleSheets[i].get());
201 }
202
203 void StyleResolver::removePendingAuthorStyleSheets(
204 const HeapVector<Member<CSSStyleSheet>>& styleSheets) {
205 for (unsigned i = 0; i < styleSheets.size(); ++i)
206 m_pendingStyleSheets.remove(styleSheets[i].get());
207 }
208
209 void StyleResolver::appendCSSStyleSheet(CSSStyleSheet& cssSheet) {
210 DCHECK(!cssSheet.disabled());
211 DCHECK(cssSheet.ownerDocument());
212 DCHECK(cssSheet.ownerNode());
213 DCHECK(isHTMLStyleElement(cssSheet.ownerNode()) ||
214 isSVGStyleElement(cssSheet.ownerNode()) ||
215 cssSheet.ownerNode()->isConnected());
216
217 TreeScope* treeScope = &cssSheet.ownerNode()->treeScope();
218 // TODO(rune@opera.com): This is a workaround for crbug.com/559292
219 // when we're in the middle of removing a subtree with a style element
220 // and the treescope has been changed but inDocument and isInShadowTree
221 // are not.
222 //
223 // This check can be removed when crbug.com/567021 is fixed.
224 if (cssSheet.ownerNode()->isInShadowTree() &&
225 treeScope->rootNode().isDocumentNode())
226 return;
227
228 // Sheets in the document scope of HTML imports apply to the main document
229 // (m_document), so we override it for all document scoped sheets.
230 if (treeScope->rootNode().isDocumentNode())
231 treeScope = m_document;
232 treeScope->ensureScopedStyleResolver().appendCSSStyleSheet(cssSheet);
233 }
234
235 void StyleResolver::appendPendingAuthorStyleSheets() {
236 for (const auto& styleSheet : m_pendingStyleSheets)
237 appendCSSStyleSheet(*styleSheet);
238
239 m_pendingStyleSheets.clear();
240 }
241
242 void StyleResolver::appendAuthorStyleSheets(
243 const HeapVector<Member<CSSStyleSheet>>& styleSheets) {
244 // This handles sheets added to the end of the stylesheet list only. In other
245 // cases the style resolver needs to be reconstructed. To handle insertions
246 // too the rule order numbers would need to be updated.
247 for (const auto& styleSheet : styleSheets)
248 appendCSSStyleSheet(*styleSheet);
249 }
250
251 void StyleResolver::addToStyleSharingList(Element& element) { 195 void StyleResolver::addToStyleSharingList(Element& element) {
252 DCHECK(RuntimeEnabledFeatures::styleSharingEnabled()); 196 DCHECK(RuntimeEnabledFeatures::styleSharingEnabled());
253 // Never add elements to the style sharing list if we're not in a recalcStyle, 197 // Never add elements to the style sharing list if we're not in a recalcStyle,
254 // otherwise we could leave stale pointers in there. 198 // otherwise we could leave stale pointers in there.
255 if (!document().inStyleRecalc()) 199 if (!document().inStyleRecalc())
256 return; 200 return;
257 INCREMENT_STYLE_STATS_COUNTER(document().styleEngine(), sharedStyleCandidates, 201 INCREMENT_STYLE_STATS_COUNTER(document().styleEngine(), sharedStyleCandidates,
258 1); 202 1);
259 StyleSharingList& list = styleSharingList(); 203 StyleSharingList& list = styleSharingList();
260 if (list.size() >= styleSharingListSize) 204 if (list.size() >= styleSharingListSize)
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 elementAnimations->updateBaseComputedStyle(state.style()); 619 elementAnimations->updateBaseComputedStyle(state.style());
676 } 620 }
677 621
678 PassRefPtr<ComputedStyle> StyleResolver::styleForElement( 622 PassRefPtr<ComputedStyle> StyleResolver::styleForElement(
679 Element* element, 623 Element* element,
680 const ComputedStyle* defaultParent, 624 const ComputedStyle* defaultParent,
681 StyleSharingBehavior sharingBehavior, 625 StyleSharingBehavior sharingBehavior,
682 RuleMatchingBehavior matchingBehavior) { 626 RuleMatchingBehavior matchingBehavior) {
683 DCHECK(document().frame()); 627 DCHECK(document().frame());
684 DCHECK(document().settings()); 628 DCHECK(document().settings());
685 DCHECK(!hasPendingAuthorStyleSheets());
686 629
687 // Once an element has a layoutObject, we don't try to destroy it, since 630 // Once an element has a layoutObject, we don't try to destroy it, since
688 // otherwise the layoutObject will vanish if a style recalc happens during 631 // otherwise the layoutObject will vanish if a style recalc happens during
689 // loading. 632 // loading.
690 if (sharingBehavior == AllowStyleSharing && !document().isRenderingReady() && 633 if (sharingBehavior == AllowStyleSharing && !document().isRenderingReady() &&
691 !element->layoutObject()) { 634 !element->layoutObject()) {
692 if (!s_styleNotYetAvailable) { 635 if (!s_styleNotYetAvailable) {
693 s_styleNotYetAvailable = ComputedStyle::create().leakRef(); 636 s_styleNotYetAvailable = ComputedStyle::create().leakRef();
694 s_styleNotYetAvailable->setDisplay(EDisplay::None); 637 s_styleNotYetAvailable->setDisplay(EDisplay::None);
695 s_styleNotYetAvailable->font().update( 638 s_styleNotYetAvailable->font().update(
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 956
1014 if (PseudoElement* pseudoElement = 957 if (PseudoElement* pseudoElement =
1015 element->pseudoElement(pseudoStyleRequest.pseudoId)) 958 element->pseudoElement(pseudoStyleRequest.pseudoId))
1016 setAnimationUpdateIfNeeded(state, *pseudoElement); 959 setAnimationUpdateIfNeeded(state, *pseudoElement);
1017 960
1018 // Now return the style. 961 // Now return the style.
1019 return state.takeStyle(); 962 return state.takeStyle();
1020 } 963 }
1021 964
1022 PassRefPtr<ComputedStyle> StyleResolver::styleForPage(int pageIndex) { 965 PassRefPtr<ComputedStyle> StyleResolver::styleForPage(int pageIndex) {
1023 DCHECK(!hasPendingAuthorStyleSheets());
1024 // m_rootElementStyle will be set to the document style. 966 // m_rootElementStyle will be set to the document style.
1025 StyleResolverState state(document(), document().documentElement()); 967 StyleResolverState state(document(), document().documentElement());
1026 968
1027 RefPtr<ComputedStyle> style = ComputedStyle::create(); 969 RefPtr<ComputedStyle> style = ComputedStyle::create();
1028 const ComputedStyle* rootElementStyle = state.rootElementStyle() 970 const ComputedStyle* rootElementStyle = state.rootElementStyle()
1029 ? state.rootElementStyle() 971 ? state.rootElementStyle()
1030 : document().computedStyle(); 972 : document().computedStyle();
1031 DCHECK(rootElementStyle); 973 DCHECK(rootElementStyle);
1032 style->inheritFrom(*rootElementStyle); 974 style->inheritFrom(*rootElementStyle);
1033 state.setStyle(style.release()); 975 state.setStyle(style.release());
(...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after
1977 if (FrameView* view = document().view()) { 1919 if (FrameView* view = document().view()) {
1978 m_printMediaType = 1920 m_printMediaType =
1979 equalIgnoringCase(view->mediaType(), MediaTypeNames::print); 1921 equalIgnoringCase(view->mediaType(), MediaTypeNames::print);
1980 } 1922 }
1981 } 1923 }
1982 1924
1983 DEFINE_TRACE(StyleResolver) { 1925 DEFINE_TRACE(StyleResolver) {
1984 visitor->trace(m_matchedPropertiesCache); 1926 visitor->trace(m_matchedPropertiesCache);
1985 visitor->trace(m_selectorFilter); 1927 visitor->trace(m_selectorFilter);
1986 visitor->trace(m_styleSharingLists); 1928 visitor->trace(m_styleSharingLists);
1987 visitor->trace(m_pendingStyleSheets);
1988 visitor->trace(m_document); 1929 visitor->trace(m_document);
1989 visitor->trace(m_tracker); 1930 visitor->trace(m_tracker);
1990 } 1931 }
1991 1932
1992 } // namespace blink 1933 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/resolver/StyleResolver.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698