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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 this, | 71 this, |
72 DocumentStyleSheetCollection::Create(document)) { | 72 DocumentStyleSheetCollection::Create(document)) { |
73 if (document.GetFrame()) { | 73 if (document.GetFrame()) { |
74 // We don't need to create CSSFontSelector for imported document or | 74 // We don't need to create CSSFontSelector for imported document or |
75 // HTMLTemplateElement's document, because those documents have no frame. | 75 // HTMLTemplateElement's document, because those documents have no frame. |
76 font_selector_ = CSSFontSelector::Create(&document); | 76 font_selector_ = CSSFontSelector::Create(&document); |
77 font_selector_->RegisterForInvalidationCallbacks(this); | 77 font_selector_->RegisterForInvalidationCallbacks(this); |
78 } | 78 } |
79 if (document.IsInMainFrame()) | 79 if (document.IsInMainFrame()) |
80 viewport_resolver_ = ViewportStyleResolver::Create(document); | 80 viewport_resolver_ = ViewportStyleResolver::Create(document); |
| 81 if (IsMaster()) |
| 82 global_rule_set_ = CSSGlobalRuleSet::Create(); |
81 } | 83 } |
82 | 84 |
83 StyleEngine::~StyleEngine() {} | 85 StyleEngine::~StyleEngine() {} |
84 | 86 |
85 inline Document* StyleEngine::Master() { | 87 inline Document* StyleEngine::Master() { |
86 if (IsMaster()) | 88 if (IsMaster()) |
87 return document_; | 89 return document_; |
88 HTMLImportsController* import = GetDocument().ImportsController(); | 90 HTMLImportsController* import = GetDocument().ImportsController(); |
89 // Document::import() can return null while executing its destructor. | 91 // Document::import() can return null while executing its destructor. |
90 if (!import) | 92 if (!import) |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 SetNeedsActiveStyleUpdate(node.GetTreeScope()); | 247 SetNeedsActiveStyleUpdate(node.GetTreeScope()); |
246 } | 248 } |
247 | 249 |
248 void StyleEngine::MediaQueriesChangedInScope(TreeScope& tree_scope) { | 250 void StyleEngine::MediaQueriesChangedInScope(TreeScope& tree_scope) { |
249 if (ScopedStyleResolver* resolver = tree_scope.GetScopedStyleResolver()) | 251 if (ScopedStyleResolver* resolver = tree_scope.GetScopedStyleResolver()) |
250 resolver->SetNeedsAppendAllSheets(); | 252 resolver->SetNeedsAppendAllSheets(); |
251 SetNeedsActiveStyleUpdate(tree_scope); | 253 SetNeedsActiveStyleUpdate(tree_scope); |
252 } | 254 } |
253 | 255 |
254 void StyleEngine::WatchedSelectorsChanged() { | 256 void StyleEngine::WatchedSelectorsChanged() { |
255 global_rule_set_.InitWatchedSelectorsRuleSet(GetDocument()); | 257 DCHECK(IsMaster()); |
| 258 DCHECK(global_rule_set_); |
| 259 global_rule_set_->InitWatchedSelectorsRuleSet(GetDocument()); |
256 // TODO(rune@opera.com): Should be able to use RuleSetInvalidation here. | 260 // TODO(rune@opera.com): Should be able to use RuleSetInvalidation here. |
257 GetDocument().SetNeedsStyleRecalc( | 261 GetDocument().SetNeedsStyleRecalc( |
258 kSubtreeStyleChange, StyleChangeReasonForTracing::Create( | 262 kSubtreeStyleChange, StyleChangeReasonForTracing::Create( |
259 StyleChangeReason::kDeclarativeContent)); | 263 StyleChangeReason::kDeclarativeContent)); |
260 } | 264 } |
261 | 265 |
262 bool StyleEngine::ShouldUpdateDocumentStyleSheetCollection() const { | 266 bool StyleEngine::ShouldUpdateDocumentStyleSheetCollection() const { |
263 return all_tree_scopes_dirty_ || document_scope_dirty_; | 267 return all_tree_scopes_dirty_ || document_scope_dirty_; |
264 } | 268 } |
265 | 269 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 tree_scopes_removed_ = false; | 354 tree_scopes_removed_ = false; |
351 } | 355 } |
352 | 356 |
353 void StyleEngine::UpdateViewport() { | 357 void StyleEngine::UpdateViewport() { |
354 if (viewport_resolver_) | 358 if (viewport_resolver_) |
355 viewport_resolver_->UpdateViewport(GetDocumentStyleSheetCollection()); | 359 viewport_resolver_->UpdateViewport(GetDocumentStyleSheetCollection()); |
356 } | 360 } |
357 | 361 |
358 bool StyleEngine::NeedsActiveStyleUpdate() const { | 362 bool StyleEngine::NeedsActiveStyleUpdate() const { |
359 return (viewport_resolver_ && viewport_resolver_->NeedsUpdate()) || | 363 return (viewport_resolver_ && viewport_resolver_->NeedsUpdate()) || |
360 NeedsActiveStyleSheetUpdate() || global_rule_set_.IsDirty(); | 364 NeedsActiveStyleSheetUpdate() || |
| 365 (global_rule_set_ && global_rule_set_->IsDirty()); |
361 } | 366 } |
362 | 367 |
363 void StyleEngine::UpdateActiveStyle() { | 368 void StyleEngine::UpdateActiveStyle() { |
364 DCHECK(GetDocument().IsActive()); | 369 DCHECK(GetDocument().IsActive()); |
365 UpdateViewport(); | 370 UpdateViewport(); |
366 UpdateActiveStyleSheets(); | 371 UpdateActiveStyleSheets(); |
367 UpdateGlobalRuleSet(); | 372 UpdateGlobalRuleSet(); |
368 } | 373 } |
369 | 374 |
370 const ActiveStyleSheetVector StyleEngine::ActiveStyleSheetsForInspector() { | 375 const ActiveStyleSheetVector StyleEngine::ActiveStyleSheetsForInspector() { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 tree_boundary_crossing_scopes_.Add(&tree_scope.RootNode()); | 407 tree_boundary_crossing_scopes_.Add(&tree_scope.RootNode()); |
403 } | 408 } |
404 | 409 |
405 void StyleEngine::ResetAuthorStyle(TreeScope& tree_scope) { | 410 void StyleEngine::ResetAuthorStyle(TreeScope& tree_scope) { |
406 tree_boundary_crossing_scopes_.Remove(&tree_scope.RootNode()); | 411 tree_boundary_crossing_scopes_.Remove(&tree_scope.RootNode()); |
407 | 412 |
408 ScopedStyleResolver* scoped_resolver = tree_scope.GetScopedStyleResolver(); | 413 ScopedStyleResolver* scoped_resolver = tree_scope.GetScopedStyleResolver(); |
409 if (!scoped_resolver) | 414 if (!scoped_resolver) |
410 return; | 415 return; |
411 | 416 |
412 global_rule_set_.MarkDirty(); | 417 global_rule_set_->MarkDirty(); |
413 if (tree_scope.RootNode().IsDocumentNode()) { | 418 if (tree_scope.RootNode().IsDocumentNode()) { |
414 scoped_resolver->ResetAuthorStyle(); | 419 scoped_resolver->ResetAuthorStyle(); |
415 return; | 420 return; |
416 } | 421 } |
417 | 422 |
418 tree_scope.ClearScopedStyleResolver(); | 423 tree_scope.ClearScopedStyleResolver(); |
419 } | 424 } |
420 | 425 |
421 void StyleEngine::SetRuleUsageTracker(StyleRuleUsageTracker* tracker) { | 426 void StyleEngine::SetRuleUsageTracker(StyleRuleUsageTracker* tracker) { |
422 tracker_ = tracker; | 427 tracker_ = tracker; |
(...skipping 29 matching lines...) Expand all Loading... |
452 if (resolver_) { | 457 if (resolver_) { |
453 TRACE_EVENT1("blink", "StyleEngine::clearResolver", "frame", | 458 TRACE_EVENT1("blink", "StyleEngine::clearResolver", "frame", |
454 GetDocument().GetFrame()); | 459 GetDocument().GetFrame()); |
455 resolver_->Dispose(); | 460 resolver_->Dispose(); |
456 resolver_.Clear(); | 461 resolver_.Clear(); |
457 } | 462 } |
458 } | 463 } |
459 | 464 |
460 void StyleEngine::DidDetach() { | 465 void StyleEngine::DidDetach() { |
461 ClearResolvers(); | 466 ClearResolvers(); |
462 global_rule_set_.Dispose(); | 467 if (global_rule_set_) |
| 468 global_rule_set_->Dispose(); |
| 469 global_rule_set_ = nullptr; |
463 tree_boundary_crossing_scopes_.Clear(); | 470 tree_boundary_crossing_scopes_.Clear(); |
464 dirty_tree_scopes_.clear(); | 471 dirty_tree_scopes_.clear(); |
465 active_tree_scopes_.clear(); | 472 active_tree_scopes_.clear(); |
466 viewport_resolver_ = nullptr; | 473 viewport_resolver_ = nullptr; |
467 media_query_evaluator_ = nullptr; | 474 media_query_evaluator_ = nullptr; |
468 if (font_selector_) | 475 if (font_selector_) |
469 font_selector_->GetFontFaceCache()->ClearAll(); | 476 font_selector_->GetFontFaceCache()->ClearAll(); |
470 font_selector_ = nullptr; | 477 font_selector_ = nullptr; |
471 } | 478 } |
472 | 479 |
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
943 // the same api. If it did have an effect, we should have marked the | 950 // the same api. If it did have an effect, we should have marked the |
944 // document scope dirty and triggered an update of the active stylesheets | 951 // document scope dirty and triggered an update of the active stylesheets |
945 // from here. | 952 // from here. |
946 } | 953 } |
947 | 954 |
948 void StyleEngine::SetHttpDefaultStyle(const String& content) { | 955 void StyleEngine::SetHttpDefaultStyle(const String& content) { |
949 SetPreferredStylesheetSetNameIfNotSet(content); | 956 SetPreferredStylesheetSetNameIfNotSet(content); |
950 } | 957 } |
951 | 958 |
952 void StyleEngine::EnsureUAStyleForFullscreen() { | 959 void StyleEngine::EnsureUAStyleForFullscreen() { |
953 if (global_rule_set_.HasFullscreenUAStyle()) | 960 DCHECK(IsMaster()); |
| 961 DCHECK(global_rule_set_); |
| 962 if (global_rule_set_->HasFullscreenUAStyle()) |
954 return; | 963 return; |
955 CSSDefaultStyleSheets::Instance().EnsureDefaultStyleSheetForFullscreen(); | 964 CSSDefaultStyleSheets::Instance().EnsureDefaultStyleSheetForFullscreen(); |
956 global_rule_set_.MarkDirty(); | 965 global_rule_set_->MarkDirty(); |
957 UpdateActiveStyle(); | 966 UpdateActiveStyle(); |
958 } | 967 } |
959 | 968 |
960 void StyleEngine::EnsureUAStyleForElement(const Element& element) { | 969 void StyleEngine::EnsureUAStyleForElement(const Element& element) { |
| 970 DCHECK(IsMaster()); |
| 971 DCHECK(global_rule_set_); |
961 if (CSSDefaultStyleSheets::Instance().EnsureDefaultStyleSheetsForElement( | 972 if (CSSDefaultStyleSheets::Instance().EnsureDefaultStyleSheetsForElement( |
962 element)) { | 973 element)) { |
963 global_rule_set_.MarkDirty(); | 974 global_rule_set_->MarkDirty(); |
964 UpdateActiveStyle(); | 975 UpdateActiveStyle(); |
965 } | 976 } |
966 } | 977 } |
967 | 978 |
968 bool StyleEngine::HasRulesForId(const AtomicString& id) const { | 979 bool StyleEngine::HasRulesForId(const AtomicString& id) const { |
969 return global_rule_set_.GetRuleFeatureSet().HasSelectorForId(id); | 980 DCHECK(IsMaster()); |
| 981 DCHECK(global_rule_set_); |
| 982 return global_rule_set_->GetRuleFeatureSet().HasSelectorForId(id); |
970 } | 983 } |
971 | 984 |
972 void StyleEngine::InitialViewportChanged() { | 985 void StyleEngine::InitialViewportChanged() { |
973 if (viewport_resolver_) | 986 if (viewport_resolver_) |
974 viewport_resolver_->InitialViewportChanged(); | 987 viewport_resolver_->InitialViewportChanged(); |
975 } | 988 } |
976 | 989 |
977 void StyleEngine::ViewportRulesChanged() { | 990 void StyleEngine::ViewportRulesChanged() { |
978 if (viewport_resolver_) | 991 if (viewport_resolver_) |
979 viewport_resolver_->SetNeedsCollectRules(); | 992 viewport_resolver_->SetNeedsCollectRules(); |
(...skipping 24 matching lines...) Expand all Loading... |
1004 MarkDocumentDirty(); | 1017 MarkDocumentDirty(); |
1005 resolver->SetNeedsAppendAllSheets(); | 1018 resolver->SetNeedsAppendAllSheets(); |
1006 GetDocument().SetNeedsStyleRecalc( | 1019 GetDocument().SetNeedsStyleRecalc( |
1007 kSubtreeStyleChange, StyleChangeReasonForTracing::Create( | 1020 kSubtreeStyleChange, StyleChangeReasonForTracing::Create( |
1008 StyleChangeReason::kActiveStylesheetsUpdate)); | 1021 StyleChangeReason::kActiveStylesheetsUpdate)); |
1009 } | 1022 } |
1010 } | 1023 } |
1011 | 1024 |
1012 PassRefPtr<ComputedStyle> StyleEngine::FindSharedStyle( | 1025 PassRefPtr<ComputedStyle> StyleEngine::FindSharedStyle( |
1013 const ElementResolveContext& element_resolve_context) { | 1026 const ElementResolveContext& element_resolve_context) { |
| 1027 DCHECK(IsMaster()); |
1014 DCHECK(resolver_); | 1028 DCHECK(resolver_); |
| 1029 DCHECK(global_rule_set_); |
1015 return SharedStyleFinder( | 1030 return SharedStyleFinder( |
1016 element_resolve_context, global_rule_set_.GetRuleFeatureSet(), | 1031 element_resolve_context, global_rule_set_->GetRuleFeatureSet(), |
1017 global_rule_set_.SiblingRuleSet(), | 1032 global_rule_set_->SiblingRuleSet(), |
1018 global_rule_set_.UncommonAttributeRuleSet(), *resolver_) | 1033 global_rule_set_->UncommonAttributeRuleSet(), *resolver_) |
1019 .FindSharedStyle(); | 1034 .FindSharedStyle(); |
1020 } | 1035 } |
1021 namespace { | 1036 namespace { |
1022 | 1037 |
1023 enum RuleSetFlags { | 1038 enum RuleSetFlags { |
1024 kFontFaceRules = 1 << 0, | 1039 kFontFaceRules = 1 << 0, |
1025 kKeyframesRules = 1 << 1, | 1040 kKeyframesRules = 1 << 1, |
1026 kFullRecalcRules = 1 << 2 | 1041 kFullRecalcRules = 1 << 2 |
1027 }; | 1042 }; |
1028 | 1043 |
(...skipping 10 matching lines...) Expand all Loading... |
1039 } | 1054 } |
1040 return flags; | 1055 return flags; |
1041 } | 1056 } |
1042 | 1057 |
1043 } // namespace | 1058 } // namespace |
1044 | 1059 |
1045 void StyleEngine::ApplyRuleSetChanges( | 1060 void StyleEngine::ApplyRuleSetChanges( |
1046 TreeScope& tree_scope, | 1061 TreeScope& tree_scope, |
1047 const ActiveStyleSheetVector& old_style_sheets, | 1062 const ActiveStyleSheetVector& old_style_sheets, |
1048 const ActiveStyleSheetVector& new_style_sheets) { | 1063 const ActiveStyleSheetVector& new_style_sheets) { |
| 1064 DCHECK(IsMaster()); |
| 1065 DCHECK(global_rule_set_); |
1049 HeapHashSet<Member<RuleSet>> changed_rule_sets; | 1066 HeapHashSet<Member<RuleSet>> changed_rule_sets; |
1050 | 1067 |
1051 ScopedStyleResolver* scoped_resolver = tree_scope.GetScopedStyleResolver(); | 1068 ScopedStyleResolver* scoped_resolver = tree_scope.GetScopedStyleResolver(); |
1052 bool append_all_sheets = | 1069 bool append_all_sheets = |
1053 scoped_resolver && scoped_resolver->NeedsAppendAllSheets(); | 1070 scoped_resolver && scoped_resolver->NeedsAppendAllSheets(); |
1054 | 1071 |
1055 ActiveSheetsChange change = CompareActiveStyleSheets( | 1072 ActiveSheetsChange change = CompareActiveStyleSheets( |
1056 old_style_sheets, new_style_sheets, changed_rule_sets); | 1073 old_style_sheets, new_style_sheets, changed_rule_sets); |
1057 if (change == kNoActiveSheetsChanged && !append_all_sheets) | 1074 if (change == kNoActiveSheetsChanged && !append_all_sheets) |
1058 return; | 1075 return; |
1059 | 1076 |
1060 // With rules added or removed, we need to re-aggregate rule meta data. | 1077 // With rules added or removed, we need to re-aggregate rule meta data. |
1061 global_rule_set_.MarkDirty(); | 1078 global_rule_set_->MarkDirty(); |
1062 | 1079 |
1063 unsigned changed_rule_flags = GetRuleSetFlags(changed_rule_sets); | 1080 unsigned changed_rule_flags = GetRuleSetFlags(changed_rule_sets); |
1064 bool fonts_changed = tree_scope.RootNode().IsDocumentNode() && | 1081 bool fonts_changed = tree_scope.RootNode().IsDocumentNode() && |
1065 (changed_rule_flags & kFontFaceRules); | 1082 (changed_rule_flags & kFontFaceRules); |
1066 unsigned append_start_index = 0; | 1083 unsigned append_start_index = 0; |
1067 | 1084 |
1068 // We don't need to clear the font cache if new sheets are appended. | 1085 // We don't need to clear the font cache if new sheets are appended. |
1069 if (fonts_changed && change == kActiveSheetsChanged) | 1086 if (fonts_changed && change == kActiveSheetsChanged) |
1070 ClearFontCache(); | 1087 ClearFontCache(); |
1071 | 1088 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1125 if (GetDocument().GetFrame()) | 1142 if (GetDocument().GetFrame()) |
1126 media_query_evaluator_ = | 1143 media_query_evaluator_ = |
1127 new MediaQueryEvaluator(GetDocument().GetFrame()); | 1144 new MediaQueryEvaluator(GetDocument().GetFrame()); |
1128 else | 1145 else |
1129 media_query_evaluator_ = new MediaQueryEvaluator("all"); | 1146 media_query_evaluator_ = new MediaQueryEvaluator("all"); |
1130 } | 1147 } |
1131 return *media_query_evaluator_; | 1148 return *media_query_evaluator_; |
1132 } | 1149 } |
1133 | 1150 |
1134 bool StyleEngine::MediaQueryAffectedByViewportChange() { | 1151 bool StyleEngine::MediaQueryAffectedByViewportChange() { |
| 1152 DCHECK(IsMaster()); |
| 1153 DCHECK(global_rule_set_); |
1135 const MediaQueryEvaluator& evaluator = EnsureMediaQueryEvaluator(); | 1154 const MediaQueryEvaluator& evaluator = EnsureMediaQueryEvaluator(); |
1136 const auto& results = | 1155 const auto& results = global_rule_set_->GetRuleFeatureSet() |
1137 global_rule_set_.GetRuleFeatureSet().ViewportDependentMediaQueryResults(); | 1156 .ViewportDependentMediaQueryResults(); |
1138 for (unsigned i = 0; i < results.size(); ++i) { | 1157 for (unsigned i = 0; i < results.size(); ++i) { |
1139 if (evaluator.Eval(results[i].Expression()) != results[i].Result()) | 1158 if (evaluator.Eval(results[i].Expression()) != results[i].Result()) |
1140 return true; | 1159 return true; |
1141 } | 1160 } |
1142 return false; | 1161 return false; |
1143 } | 1162 } |
1144 | 1163 |
1145 bool StyleEngine::MediaQueryAffectedByDeviceChange() { | 1164 bool StyleEngine::MediaQueryAffectedByDeviceChange() { |
| 1165 DCHECK(IsMaster()); |
| 1166 DCHECK(global_rule_set_); |
1146 const MediaQueryEvaluator& evaluator = EnsureMediaQueryEvaluator(); | 1167 const MediaQueryEvaluator& evaluator = EnsureMediaQueryEvaluator(); |
1147 const auto& results = | 1168 const auto& results = |
1148 global_rule_set_.GetRuleFeatureSet().DeviceDependentMediaQueryResults(); | 1169 global_rule_set_->GetRuleFeatureSet().DeviceDependentMediaQueryResults(); |
1149 for (unsigned i = 0; i < results.size(); ++i) { | 1170 for (unsigned i = 0; i < results.size(); ++i) { |
1150 if (evaluator.Eval(results[i].Expression()) != results[i].Result()) | 1171 if (evaluator.Eval(results[i].Expression()) != results[i].Result()) |
1151 return true; | 1172 return true; |
1152 } | 1173 } |
1153 return false; | 1174 return false; |
1154 } | 1175 } |
1155 | 1176 |
1156 DEFINE_TRACE(StyleEngine) { | 1177 DEFINE_TRACE(StyleEngine) { |
1157 visitor->Trace(document_); | 1178 visitor->Trace(document_); |
1158 visitor->Trace(injected_author_style_sheets_); | 1179 visitor->Trace(injected_author_style_sheets_); |
1159 visitor->Trace(inspector_style_sheet_); | 1180 visitor->Trace(inspector_style_sheet_); |
1160 visitor->Trace(document_style_sheet_collection_); | 1181 visitor->Trace(document_style_sheet_collection_); |
1161 visitor->Trace(style_sheet_collection_map_); | 1182 visitor->Trace(style_sheet_collection_map_); |
1162 visitor->Trace(dirty_tree_scopes_); | 1183 visitor->Trace(dirty_tree_scopes_); |
1163 visitor->Trace(active_tree_scopes_); | 1184 visitor->Trace(active_tree_scopes_); |
1164 visitor->Trace(tree_boundary_crossing_scopes_); | 1185 visitor->Trace(tree_boundary_crossing_scopes_); |
1165 visitor->Trace(global_rule_set_); | |
1166 visitor->Trace(resolver_); | 1186 visitor->Trace(resolver_); |
1167 visitor->Trace(viewport_resolver_); | 1187 visitor->Trace(viewport_resolver_); |
1168 visitor->Trace(media_query_evaluator_); | 1188 visitor->Trace(media_query_evaluator_); |
| 1189 visitor->Trace(global_rule_set_); |
1169 visitor->Trace(style_invalidator_); | 1190 visitor->Trace(style_invalidator_); |
1170 visitor->Trace(font_selector_); | 1191 visitor->Trace(font_selector_); |
1171 visitor->Trace(text_to_sheet_cache_); | 1192 visitor->Trace(text_to_sheet_cache_); |
1172 visitor->Trace(sheet_to_text_cache_); | 1193 visitor->Trace(sheet_to_text_cache_); |
1173 visitor->Trace(tracker_); | 1194 visitor->Trace(tracker_); |
1174 CSSFontSelectorClient::Trace(visitor); | 1195 CSSFontSelectorClient::Trace(visitor); |
1175 } | 1196 } |
1176 | 1197 |
1177 DEFINE_TRACE_WRAPPERS(StyleEngine) { | 1198 DEFINE_TRACE_WRAPPERS(StyleEngine) { |
1178 for (auto sheet : injected_author_style_sheets_) { | 1199 for (auto sheet : injected_author_style_sheets_) { |
1179 visitor->TraceWrappers(sheet); | 1200 visitor->TraceWrappers(sheet); |
1180 } | 1201 } |
1181 visitor->TraceWrappers(document_style_sheet_collection_); | 1202 visitor->TraceWrappers(document_style_sheet_collection_); |
1182 } | 1203 } |
1183 | 1204 |
1184 } // namespace blink | 1205 } // namespace blink |
OLD | NEW |