| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |