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

Side by Side Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc

Issue 10451071: Add support for response header manipulation in Declarative WebRequest API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Made header value comparison case-insensitive Created 8 years, 6 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698