| 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_webrequest/webrequest_rules_
registry.h" | 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_
registry.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit
ion.h" | 9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit
ion.h" |
| 10 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 10 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 WebRequestRule* rule = rule_trigger->second; | 37 WebRequestRule* rule = rule_trigger->second; |
| 38 if (rule->conditions().IsFulfilled(*url_match, request, request_stage)) | 38 if (rule->conditions().IsFulfilled(*url_match, request, request_stage)) |
| 39 result.insert(rule->id()); | 39 result.insert(rule->id()); |
| 40 } | 40 } |
| 41 return result; | 41 return result; |
| 42 } | 42 } |
| 43 | 43 |
| 44 std::list<LinkedPtrEventResponseDelta> WebRequestRulesRegistry::CreateDeltas( | 44 std::list<LinkedPtrEventResponseDelta> WebRequestRulesRegistry::CreateDeltas( |
| 45 net::URLRequest* request, | 45 net::URLRequest* request, |
| 46 RequestStages request_stage) { | 46 RequestStages request_stage, |
| 47 const WebRequestRule::OptionalRequestData& optional_request_data) { |
| 47 std::set<WebRequestRule::GlobalRuleId> matches = | 48 std::set<WebRequestRule::GlobalRuleId> matches = |
| 48 GetMatches(request, request_stage); | 49 GetMatches(request, request_stage); |
| 49 | 50 |
| 50 // Sort all matching rules by their priority so that they can be processed | 51 // Sort all matching rules by their priority so that they can be processed |
| 51 // in decreasing order. | 52 // in decreasing order. |
| 52 typedef std::pair<WebRequestRule::Priority, WebRequestRule::GlobalRuleId> | 53 typedef std::pair<WebRequestRule::Priority, WebRequestRule::GlobalRuleId> |
| 53 PriorityRuleIdPair; | 54 PriorityRuleIdPair; |
| 54 std::vector<PriorityRuleIdPair> ordered_matches; | 55 std::vector<PriorityRuleIdPair> ordered_matches; |
| 55 ordered_matches.reserve(matches.size()); | 56 ordered_matches.reserve(matches.size()); |
| 56 for (std::set<WebRequestRule::GlobalRuleId>::iterator i = matches.begin(); | 57 for (std::set<WebRequestRule::GlobalRuleId>::iterator i = matches.begin(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 86 const WebRequestRule* rule = webrequest_rules_[rule_id].get(); | 87 const WebRequestRule* rule = webrequest_rules_[rule_id].get(); |
| 87 CHECK(rule); | 88 CHECK(rule); |
| 88 | 89 |
| 89 // Skip rule if a previous rule of this extension instructed to ignore | 90 // Skip rule if a previous rule of this extension instructed to ignore |
| 90 // all rules with a lower priority than min_priorities[extension_id]. | 91 // all rules with a lower priority than min_priorities[extension_id]. |
| 91 int current_min_priority = min_priorities[extension_id]; | 92 int current_min_priority = min_priorities[extension_id]; |
| 92 if (priority_of_rule < current_min_priority) | 93 if (priority_of_rule < current_min_priority) |
| 93 continue; | 94 continue; |
| 94 | 95 |
| 95 std::list<LinkedPtrEventResponseDelta> rule_result = | 96 std::list<LinkedPtrEventResponseDelta> rule_result = |
| 96 rule->CreateDeltas(request, request_stage); | 97 rule->CreateDeltas(request, request_stage, optional_request_data); |
| 97 result.splice(result.begin(), rule_result); | 98 result.splice(result.begin(), rule_result); |
| 98 | 99 |
| 99 min_priorities[extension_id] = std::max(current_min_priority, | 100 min_priorities[extension_id] = std::max(current_min_priority, |
| 100 rule->GetMinimumPriority()); | 101 rule->GetMinimumPriority()); |
| 101 } | 102 } |
| 102 return result; | 103 return result; |
| 103 } | 104 } |
| 104 | 105 |
| 105 std::string WebRequestRulesRegistry::AddRulesImpl( | 106 std::string WebRequestRulesRegistry::AddRulesImpl( |
| 106 const std::string& extension_id, | 107 const std::string& extension_id, |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 | 224 |
| 224 base::Time WebRequestRulesRegistry::GetExtensionInstallationTime( | 225 base::Time WebRequestRulesRegistry::GetExtensionInstallationTime( |
| 225 const std::string& extension_id) const { | 226 const std::string& extension_id) const { |
| 226 if (!extension_info_map_.get()) // May be NULL during testing. | 227 if (!extension_info_map_.get()) // May be NULL during testing. |
| 227 return base::Time(); | 228 return base::Time(); |
| 228 | 229 |
| 229 return extension_info_map_->GetInstallTime(extension_id); | 230 return extension_info_map_->GetInstallTime(extension_id); |
| 230 } | 231 } |
| 231 | 232 |
| 232 } // namespace extensions | 233 } // namespace extensions |
| OLD | NEW |