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

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

Issue 2528633003: Move MediaQueryResults to RuleFeatureSet. (Closed)
Patch Set: Removed members. 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
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 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All
7 * rights reserved. 7 * rights reserved.
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
9 * (http://www.torchmobile.com/) 9 * (http://www.torchmobile.com/)
10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 } 440 }
441 } 441 }
442 442
443 void StyleEngine::setRuleUsageTracker(StyleRuleUsageTracker* tracker) { 443 void StyleEngine::setRuleUsageTracker(StyleRuleUsageTracker* tracker) {
444 m_tracker = tracker; 444 m_tracker = tracker;
445 445
446 if (m_resolver) 446 if (m_resolver)
447 m_resolver->setRuleUsageTracker(m_tracker); 447 m_resolver->setRuleUsageTracker(m_tracker);
448 } 448 }
449 449
450 RuleSet* StyleEngine::ruleSetForSheet(CSSStyleSheet& sheet) {
451 if (!sheet.matchesMediaQueries(ensureMediaQueryEvaluator()))
452 return nullptr;
453
454 AddRuleFlags addRuleFlags = RuleHasNoSpecialState;
455 if (m_document->getSecurityOrigin()->canRequest(sheet.baseURL()))
456 addRuleFlags = RuleHasDocumentSecurityOrigin;
457 return &sheet.contents()->ensureRuleSet(*m_mediaQueryEvaluator, addRuleFlags);
458 }
459
450 void StyleEngine::createResolver() { 460 void StyleEngine::createResolver() {
451 m_resolver = StyleResolver::create(*m_document); 461 m_resolver = StyleResolver::create(*m_document);
452 462
453 m_resolver->setRuleUsageTracker(m_tracker); 463 m_resolver->setRuleUsageTracker(m_tracker);
454 464
455 // A scoped style resolver for document will be created during 465 // A scoped style resolver for document will be created during
456 // appendActiveAuthorStyleSheets if needed. 466 // appendActiveAuthorStyleSheets if needed.
457 appendActiveAuthorStyleSheets(); 467 appendActiveAuthorStyleSheets();
458 finishAppendAuthorStyleSheets(); 468 finishAppendAuthorStyleSheets();
459 } 469 }
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 const MediaQueryEvaluator& StyleEngine::ensureMediaQueryEvaluator() { 1152 const MediaQueryEvaluator& StyleEngine::ensureMediaQueryEvaluator() {
1143 if (!m_mediaQueryEvaluator) { 1153 if (!m_mediaQueryEvaluator) {
1144 if (document().frame()) 1154 if (document().frame())
1145 m_mediaQueryEvaluator = new MediaQueryEvaluator(document().frame()); 1155 m_mediaQueryEvaluator = new MediaQueryEvaluator(document().frame());
1146 else 1156 else
1147 m_mediaQueryEvaluator = new MediaQueryEvaluator("all"); 1157 m_mediaQueryEvaluator = new MediaQueryEvaluator("all");
1148 } 1158 }
1149 return *m_mediaQueryEvaluator; 1159 return *m_mediaQueryEvaluator;
1150 } 1160 }
1151 1161
1162 bool StyleEngine::mediaQueryAffectedByViewportChange() {
1163 const MediaQueryEvaluator& evaluator = ensureMediaQueryEvaluator();
1164 const auto& results =
1165 m_globalRuleSet.ruleFeatureSet().viewportDependentMediaQueryResults();
1166 for (unsigned i = 0; i < results.size(); ++i) {
1167 if (evaluator.eval(results[i]->expression()) != results[i]->result())
1168 return true;
1169 }
1170 return false;
1171 }
1172
1173 bool StyleEngine::mediaQueryAffectedByDeviceChange() {
1174 const MediaQueryEvaluator& evaluator = ensureMediaQueryEvaluator();
1175 const auto& results =
1176 m_globalRuleSet.ruleFeatureSet().deviceDependentMediaQueryResults();
1177 for (unsigned i = 0; i < results.size(); ++i) {
1178 if (evaluator.eval(results[i]->expression()) != results[i]->result())
1179 return true;
1180 }
1181 return false;
1182 }
1183
1152 DEFINE_TRACE(StyleEngine) { 1184 DEFINE_TRACE(StyleEngine) {
1153 visitor->trace(m_document); 1185 visitor->trace(m_document);
1154 visitor->trace(m_injectedAuthorStyleSheets); 1186 visitor->trace(m_injectedAuthorStyleSheets);
1155 visitor->trace(m_inspectorStyleSheet); 1187 visitor->trace(m_inspectorStyleSheet);
1156 visitor->trace(m_documentStyleSheetCollection); 1188 visitor->trace(m_documentStyleSheetCollection);
1157 visitor->trace(m_styleSheetCollectionMap); 1189 visitor->trace(m_styleSheetCollectionMap);
1158 visitor->trace(m_dirtyTreeScopes); 1190 visitor->trace(m_dirtyTreeScopes);
1159 visitor->trace(m_activeTreeScopes); 1191 visitor->trace(m_activeTreeScopes);
1160 visitor->trace(m_treeBoundaryCrossingScopes); 1192 visitor->trace(m_treeBoundaryCrossingScopes);
1161 visitor->trace(m_globalRuleSet); 1193 visitor->trace(m_globalRuleSet);
1162 visitor->trace(m_resolver); 1194 visitor->trace(m_resolver);
1163 visitor->trace(m_viewportResolver); 1195 visitor->trace(m_viewportResolver);
1164 visitor->trace(m_mediaQueryEvaluator); 1196 visitor->trace(m_mediaQueryEvaluator);
1165 visitor->trace(m_styleInvalidator); 1197 visitor->trace(m_styleInvalidator);
1166 visitor->trace(m_fontSelector); 1198 visitor->trace(m_fontSelector);
1167 visitor->trace(m_textToSheetCache); 1199 visitor->trace(m_textToSheetCache);
1168 visitor->trace(m_sheetToTextCache); 1200 visitor->trace(m_sheetToTextCache);
1169 visitor->trace(m_tracker); 1201 visitor->trace(m_tracker);
1170 CSSFontSelectorClient::trace(visitor); 1202 CSSFontSelectorClient::trace(visitor);
1171 } 1203 }
1172 1204
1173 DEFINE_TRACE_WRAPPERS(StyleEngine) { 1205 DEFINE_TRACE_WRAPPERS(StyleEngine) {
1174 for (auto sheet : m_injectedAuthorStyleSheets) { 1206 for (auto sheet : m_injectedAuthorStyleSheets) {
1175 visitor->traceWrappers(sheet); 1207 visitor->traceWrappers(sheet);
1176 } 1208 }
1177 visitor->traceWrappers(m_documentStyleSheetCollection); 1209 visitor->traceWrappers(m_documentStyleSheetCollection);
1178 } 1210 }
1179 1211
1180 } // namespace blink 1212 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/StyleEngine.h ('k') | third_party/WebKit/Source/core/dom/StyleEngineTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698