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

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

Issue 2883003002: Allocate CSSGlobalRuleSet on heap. (Closed)
Patch Set: Created 3 years, 7 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 | « third_party/WebKit/Source/core/dom/StyleEngine.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) 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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/StyleEngine.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698