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

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

Issue 405953002: Fix MQEvaluator::mediaType() related perf regressions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Really fix the issue Created 6 years, 4 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
« no previous file with comments | « 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. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 13 matching lines...) Expand all
24 * along with this library; see the file COPYING.LIB. If not, write to 24 * along with this library; see the file COPYING.LIB. If not, write to
25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26 * Boston, MA 02110-1301, USA. 26 * Boston, MA 02110-1301, USA.
27 */ 27 */
28 28
29 #include "config.h" 29 #include "config.h"
30 #include "core/css/resolver/StyleResolver.h" 30 #include "core/css/resolver/StyleResolver.h"
31 31
32 #include "core/CSSPropertyNames.h" 32 #include "core/CSSPropertyNames.h"
33 #include "core/HTMLNames.h" 33 #include "core/HTMLNames.h"
34 #include "core/MediaTypeNames.h"
34 #include "core/StylePropertyShorthand.h" 35 #include "core/StylePropertyShorthand.h"
35 #include "core/animation/ActiveAnimations.h" 36 #include "core/animation/ActiveAnimations.h"
36 #include "core/animation/Animation.h" 37 #include "core/animation/Animation.h"
37 #include "core/animation/AnimationTimeline.h" 38 #include "core/animation/AnimationTimeline.h"
38 #include "core/animation/StyleInterpolation.h" 39 #include "core/animation/StyleInterpolation.h"
39 #include "core/animation/animatable/AnimatableValue.h" 40 #include "core/animation/animatable/AnimatableValue.h"
40 #include "core/animation/css/CSSAnimatableValueFactory.h" 41 #include "core/animation/css/CSSAnimatableValueFactory.h"
41 #include "core/animation/css/CSSAnimations.h" 42 #include "core/animation/css/CSSAnimations.h"
42 #include "core/css/CSSCalculationValue.h" 43 #include "core/css/CSSCalculationValue.h"
43 #include "core/css/CSSDefaultStyleSheets.h" 44 #include "core/css/CSSDefaultStyleSheets.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 { 126 {
126 RefPtrWillBeRawPtr<FontFace> fontFace = FontFace::create(document, fontFaceR ule); 127 RefPtrWillBeRawPtr<FontFace> fontFace = FontFace::create(document, fontFaceR ule);
127 if (fontFace) 128 if (fontFace)
128 cssFontSelector->fontFaceCache()->add(cssFontSelector, fontFaceRule, fon tFace); 129 cssFontSelector->fontFaceCache()->add(cssFontSelector, fontFaceRule, fon tFace);
129 } 130 }
130 131
131 StyleResolver::StyleResolver(Document& document) 132 StyleResolver::StyleResolver(Document& document)
132 : m_document(document) 133 : m_document(document)
133 , m_viewportStyleResolver(ViewportStyleResolver::create(&document)) 134 , m_viewportStyleResolver(ViewportStyleResolver::create(&document))
134 , m_needCollectFeatures(false) 135 , m_needCollectFeatures(false)
136 , m_printMediaType(false)
135 , m_styleResourceLoader(document.fetcher()) 137 , m_styleResourceLoader(document.fetcher())
136 , m_styleSharingDepth(0) 138 , m_styleSharingDepth(0)
137 , m_styleResolverStatsSequence(0) 139 , m_styleResolverStatsSequence(0)
138 , m_accessCount(0) 140 , m_accessCount(0)
139 { 141 {
140 FrameView* view = document.view(); 142 FrameView* view = document.view();
141 if (view) 143 if (view) {
142 m_medium = adoptPtr(new MediaQueryEvaluator(&view->frame())); 144 m_medium = adoptPtr(new MediaQueryEvaluator(&view->frame()));
143 else 145 m_printMediaType = equalIgnoringCase(view->mediaType(), MediaTypeNames:: print);
esprehn 2014/08/11 20:33:21 Do we destroy the StyleResolver when the media typ
146 } else {
144 m_medium = adoptPtr(new MediaQueryEvaluator("all")); 147 m_medium = adoptPtr(new MediaQueryEvaluator("all"));
148 }
145 149
146 initWatchedSelectorRules(CSSSelectorWatch::from(document).watchedCallbackSel ectors()); 150 initWatchedSelectorRules(CSSSelectorWatch::from(document).watchedCallbackSel ectors());
147 151
148 #if ENABLE(SVG_FONTS) 152 #if ENABLE(SVG_FONTS)
149 if (document.svgExtensions()) { 153 if (document.svgExtensions()) {
150 const WillBeHeapHashSet<RawPtrWillBeMember<SVGFontFaceElement> >& svgFon tFaceElements = document.svgExtensions()->svgFontFaceElements(); 154 const WillBeHeapHashSet<RawPtrWillBeMember<SVGFontFaceElement> >& svgFon tFaceElements = document.svgExtensions()->svgFontFaceElements();
151 WillBeHeapHashSet<RawPtrWillBeMember<SVGFontFaceElement> >::const_iterat or end = svgFontFaceElements.end(); 155 WillBeHeapHashSet<RawPtrWillBeMember<SVGFontFaceElement> >::const_iterat or end = svgFontFaceElements.end();
152 for (WillBeHeapHashSet<RawPtrWillBeMember<SVGFontFaceElement> >::const_i terator it = svgFontFaceElements.begin(); it != end; ++it) 156 for (WillBeHeapHashSet<RawPtrWillBeMember<SVGFontFaceElement> >::const_i terator it = svgFontFaceElements.begin(); it != end; ++it)
153 addFontFaceRule(&document, document.styleEngine()->fontSelector(), ( *it)->fontFaceRule()); 157 addFontFaceRule(&document, document.styleEngine()->fontSelector(), ( *it)->fontFaceRule());
154 } 158 }
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 collector.collectMatchingRules(matchRequest, ruleRange); 453 collector.collectMatchingRules(matchRequest, ruleRange);
450 454
451 collector.sortAndTransferMatchedRules(); 455 collector.sortAndTransferMatchedRules();
452 } 456 }
453 457
454 void StyleResolver::matchUARules(ElementRuleCollector& collector) 458 void StyleResolver::matchUARules(ElementRuleCollector& collector)
455 { 459 {
456 collector.setMatchingUARules(true); 460 collector.setMatchingUARules(true);
457 461
458 CSSDefaultStyleSheets& defaultStyleSheets = CSSDefaultStyleSheets::instance( ); 462 CSSDefaultStyleSheets& defaultStyleSheets = CSSDefaultStyleSheets::instance( );
459 RuleSet* userAgentStyleSheet = m_medium->mediaTypeMatchSpecific("print") 463 RuleSet* userAgentStyleSheet = m_printMediaType ? defaultStyleSheets.default PrintStyle() : defaultStyleSheets.defaultStyle();
460 ? defaultStyleSheets.defaultPrintStyle() : defaultStyleSheets.defaultSty le();
461 matchUARules(collector, userAgentStyleSheet); 464 matchUARules(collector, userAgentStyleSheet);
462 465
463 // In quirks mode, we match rules from the quirks user agent sheet. 466 // In quirks mode, we match rules from the quirks user agent sheet.
464 if (document().inQuirksMode()) 467 if (document().inQuirksMode())
465 matchUARules(collector, defaultStyleSheets.defaultQuirksStyle()); 468 matchUARules(collector, defaultStyleSheets.defaultQuirksStyle());
466 469
467 // If document uses view source styles (in view source mode or in xml viewer mode), then we match rules from the view source style sheet. 470 // If document uses view source styles (in view source mode or in xml viewer mode), then we match rules from the view source style sheet.
468 if (document().isViewSource()) 471 if (document().isViewSource())
469 matchUARules(collector, defaultStyleSheets.defaultViewSourceStyle()); 472 matchUARules(collector, defaultStyleSheets.defaultViewSourceStyle());
470 473
(...skipping 1129 matching lines...) Expand 10 before | Expand all | Expand 10 after
1600 visitor->trace(m_uncommonAttributeRuleSet); 1603 visitor->trace(m_uncommonAttributeRuleSet);
1601 visitor->trace(m_watchedSelectorsRules); 1604 visitor->trace(m_watchedSelectorsRules);
1602 visitor->trace(m_treeBoundaryCrossingRules); 1605 visitor->trace(m_treeBoundaryCrossingRules);
1603 visitor->trace(m_styleSharingLists); 1606 visitor->trace(m_styleSharingLists);
1604 visitor->trace(m_pendingStyleSheets); 1607 visitor->trace(m_pendingStyleSheets);
1605 visitor->trace(m_document); 1608 visitor->trace(m_document);
1606 #endif 1609 #endif
1607 } 1610 }
1608 1611
1609 } // namespace blink 1612 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/resolver/StyleResolver.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698