OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/declarative_content/chrome_content_rules
_registry.h" | 5 #include "chrome/browser/extensions/api/declarative_content/chrome_content_rules
_registry.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "chrome/browser/chrome_notification_types.h" | 10 #include "chrome/browser/chrome_notification_types.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 EvaluationScope evaluation_scope(this); | 129 EvaluationScope evaluation_scope(this); |
130 for (const std::unique_ptr<ContentPredicateEvaluator>& evaluator : | 130 for (const std::unique_ptr<ContentPredicateEvaluator>& evaluator : |
131 evaluators_) | 131 evaluators_) |
132 evaluator->TrackForWebContents(contents); | 132 evaluator->TrackForWebContents(contents); |
133 } | 133 } |
134 | 134 |
135 void ChromeContentRulesRegistry::DidNavigateMainFrame( | 135 void ChromeContentRulesRegistry::DidNavigateMainFrame( |
136 content::WebContents* contents, | 136 content::WebContents* contents, |
137 const content::LoadCommittedDetails& details, | 137 const content::LoadCommittedDetails& details, |
138 const content::FrameNavigateParams& params) { | 138 const content::FrameNavigateParams& params) { |
139 if (ContainsKey(active_rules_, contents)) { | 139 if (base::ContainsKey(active_rules_, contents)) { |
140 EvaluationScope evaluation_scope(this); | 140 EvaluationScope evaluation_scope(this); |
141 for (const std::unique_ptr<ContentPredicateEvaluator>& evaluator : | 141 for (const std::unique_ptr<ContentPredicateEvaluator>& evaluator : |
142 evaluators_) | 142 evaluators_) |
143 evaluator->OnWebContentsNavigation(contents, details, params); | 143 evaluator->OnWebContentsNavigation(contents, details, params); |
144 } | 144 } |
145 } | 145 } |
146 | 146 |
147 ChromeContentRulesRegistry::ContentRule::ContentRule( | 147 ChromeContentRulesRegistry::ContentRule::ContentRule( |
148 const Extension* extension, | 148 const Extension* extension, |
149 std::vector<std::unique_ptr<const ContentCondition>> conditions, | 149 std::vector<std::unique_ptr<const ContentCondition>> conditions, |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 // Skip unknown rules. | 314 // Skip unknown rules. |
315 RulesMap::iterator content_rules_entry = | 315 RulesMap::iterator content_rules_entry = |
316 content_rules_.find(std::make_pair(extension_id, id)); | 316 content_rules_.find(std::make_pair(extension_id, id)); |
317 if (content_rules_entry == content_rules_.end()) | 317 if (content_rules_entry == content_rules_.end()) |
318 continue; | 318 continue; |
319 | 319 |
320 const ContentRule* rule = content_rules_entry->second.get(); | 320 const ContentRule* rule = content_rules_entry->second.get(); |
321 | 321 |
322 // Remove the ContentRule from active_rules_. | 322 // Remove the ContentRule from active_rules_. |
323 for (auto& tab_rules_pair : active_rules_) { | 323 for (auto& tab_rules_pair : active_rules_) { |
324 if (ContainsKey(tab_rules_pair.second, rule)) { | 324 if (base::ContainsKey(tab_rules_pair.second, rule)) { |
325 ContentAction::ApplyInfo apply_info = | 325 ContentAction::ApplyInfo apply_info = |
326 {rule->extension, browser_context(), tab_rules_pair.first, | 326 {rule->extension, browser_context(), tab_rules_pair.first, |
327 rule->priority}; | 327 rule->priority}; |
328 for (const auto& action : rule->actions) | 328 for (const auto& action : rule->actions) |
329 action->Revert(apply_info); | 329 action->Revert(apply_info); |
330 tab_rules_pair.second.erase(rule); | 330 tab_rules_pair.second.erase(rule); |
331 } | 331 } |
332 } | 332 } |
333 | 333 |
334 rules_to_erase.push_back(content_rules_entry); | 334 rules_to_erase.push_back(content_rules_entry); |
(...skipping 21 matching lines...) Expand all Loading... |
356 if (extension_id_rule_id_pair.first == extension_id) | 356 if (extension_id_rule_id_pair.first == extension_id) |
357 rule_identifiers.push_back(extension_id_rule_id_pair.second); | 357 rule_identifiers.push_back(extension_id_rule_id_pair.second); |
358 } | 358 } |
359 | 359 |
360 return RemoveRulesImpl(extension_id, rule_identifiers); | 360 return RemoveRulesImpl(extension_id, rule_identifiers); |
361 } | 361 } |
362 | 362 |
363 void ChromeContentRulesRegistry::EvaluateConditionsForTab( | 363 void ChromeContentRulesRegistry::EvaluateConditionsForTab( |
364 content::WebContents* tab) { | 364 content::WebContents* tab) { |
365 std::set<const ContentRule*> matching_rules = GetMatchingRules(tab); | 365 std::set<const ContentRule*> matching_rules = GetMatchingRules(tab); |
366 if (matching_rules.empty() && !ContainsKey(active_rules_, tab)) | 366 if (matching_rules.empty() && !base::ContainsKey(active_rules_, tab)) |
367 return; | 367 return; |
368 | 368 |
369 std::set<const ContentRule*>& prev_matching_rules = active_rules_[tab]; | 369 std::set<const ContentRule*>& prev_matching_rules = active_rules_[tab]; |
370 for (const ContentRule* rule : matching_rules) { | 370 for (const ContentRule* rule : matching_rules) { |
371 ContentAction::ApplyInfo apply_info = | 371 ContentAction::ApplyInfo apply_info = |
372 {rule->extension, browser_context(), tab, rule->priority}; | 372 {rule->extension, browser_context(), tab, rule->priority}; |
373 if (!ContainsKey(prev_matching_rules, rule)) { | 373 if (!base::ContainsKey(prev_matching_rules, rule)) { |
374 for (const std::unique_ptr<const ContentAction>& action : rule->actions) | 374 for (const std::unique_ptr<const ContentAction>& action : rule->actions) |
375 action->Apply(apply_info); | 375 action->Apply(apply_info); |
376 } else { | 376 } else { |
377 for (const std::unique_ptr<const ContentAction>& action : rule->actions) | 377 for (const std::unique_ptr<const ContentAction>& action : rule->actions) |
378 action->Reapply(apply_info); | 378 action->Reapply(apply_info); |
379 } | 379 } |
380 } | 380 } |
381 for (const ContentRule* rule : prev_matching_rules) { | 381 for (const ContentRule* rule : prev_matching_rules) { |
382 if (!ContainsKey(matching_rules, rule)) { | 382 if (!base::ContainsKey(matching_rules, rule)) { |
383 ContentAction::ApplyInfo apply_info = | 383 ContentAction::ApplyInfo apply_info = |
384 {rule->extension, browser_context(), tab, rule->priority}; | 384 {rule->extension, browser_context(), tab, rule->priority}; |
385 for (const std::unique_ptr<const ContentAction>& action : rule->actions) | 385 for (const std::unique_ptr<const ContentAction>& action : rule->actions) |
386 action->Revert(apply_info); | 386 action->Revert(apply_info); |
387 } | 387 } |
388 } | 388 } |
389 | 389 |
390 if (matching_rules.empty()) | 390 if (matching_rules.empty()) |
391 active_rules_[tab].clear(); | 391 active_rules_[tab].clear(); |
392 else | 392 else |
(...skipping 30 matching lines...) Expand all Loading... |
423 size_t count = 0; | 423 size_t count = 0; |
424 for (const auto& web_contents_rules_pair : active_rules_) | 424 for (const auto& web_contents_rules_pair : active_rules_) |
425 count += web_contents_rules_pair.second.size(); | 425 count += web_contents_rules_pair.second.size(); |
426 return count; | 426 return count; |
427 } | 427 } |
428 | 428 |
429 ChromeContentRulesRegistry::~ChromeContentRulesRegistry() { | 429 ChromeContentRulesRegistry::~ChromeContentRulesRegistry() { |
430 } | 430 } |
431 | 431 |
432 } // namespace extensions | 432 } // namespace extensions |
OLD | NEW |