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 #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
13 #include "base/memory/linked_ptr.h" | 13 #include "base/memory/linked_ptr.h" |
14 #include "chrome/browser/extensions/api/declarative_webrequest/request_stages.h" | 14 #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" |
15 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h
" | 15 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h
" |
16 #include "chrome/common/extensions/api/events.h" | 16 #include "chrome/common/extensions/api/events.h" |
17 #include "googleurl/src/gurl.h" | 17 #include "googleurl/src/gurl.h" |
18 #include "unicode/regex.h" | 18 #include "unicode/regex.h" |
19 | 19 |
20 class WebRequestPermission; | 20 class WebRequestPermission; |
21 | 21 |
22 namespace base { | 22 namespace base { |
23 class DictionaryValue; | 23 class DictionaryValue; |
24 class Time; | 24 class Time; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 ACTION_SET_REQUEST_HEADER, | 56 ACTION_SET_REQUEST_HEADER, |
57 ACTION_REMOVE_REQUEST_HEADER, | 57 ACTION_REMOVE_REQUEST_HEADER, |
58 ACTION_ADD_RESPONSE_HEADER, | 58 ACTION_ADD_RESPONSE_HEADER, |
59 ACTION_REMOVE_RESPONSE_HEADER, | 59 ACTION_REMOVE_RESPONSE_HEADER, |
60 ACTION_IGNORE_RULES, | 60 ACTION_IGNORE_RULES, |
61 }; | 61 }; |
62 | 62 |
63 WebRequestAction(); | 63 WebRequestAction(); |
64 virtual ~WebRequestAction(); | 64 virtual ~WebRequestAction(); |
65 | 65 |
66 // Returns a bit vector representing extensions::RequestStages. The bit vector | 66 // Returns a bit vector representing extensions::RequestStage. The bit vector |
67 // contains a 1 for each request stage during which the condition can be | 67 // contains a 1 for each request stage during which the condition can be |
68 // tested. | 68 // tested. |
69 virtual int GetStages() const = 0; | 69 virtual int GetStages() const = 0; |
70 | 70 |
71 virtual Type GetType() const = 0; | 71 virtual Type GetType() const = 0; |
72 | 72 |
73 // Returns the minimum priority of rules that may be evaluated after | 73 // Returns the minimum priority of rules that may be evaluated after |
74 // this rule. Defaults to MIN_INT. | 74 // this rule. Defaults to MIN_INT. |
75 virtual int GetMinimumPriority() const; | 75 virtual int GetMinimumPriority() const; |
76 | 76 |
(...skipping 19 matching lines...) Expand all Loading... |
96 // Sets |error| and returns NULL in case of a semantic error that cannot | 96 // Sets |error| and returns NULL in case of a semantic error that cannot |
97 // be caught by schema validation. Sets |bad_message| and returns NULL | 97 // be caught by schema validation. Sets |bad_message| and returns NULL |
98 // in case the input is syntactically unexpected. | 98 // in case the input is syntactically unexpected. |
99 static scoped_ptr<WebRequestAction> Create(const base::Value& json_action, | 99 static scoped_ptr<WebRequestAction> Create(const base::Value& json_action, |
100 std::string* error, | 100 std::string* error, |
101 bool* bad_message); | 101 bool* bad_message); |
102 | 102 |
103 // Returns a description of the modification to |request| caused by this | 103 // Returns a description of the modification to |request| caused by this |
104 // action. | 104 // action. |
105 virtual LinkedPtrEventResponseDelta CreateDelta( | 105 virtual LinkedPtrEventResponseDelta CreateDelta( |
106 net::URLRequest* request, | 106 const WebRequestRule::RequestData& request_data, |
107 RequestStages request_stage, | |
108 const WebRequestRule::OptionalRequestData& optional_request_data, | |
109 const std::string& extension_id, | 107 const std::string& extension_id, |
110 const base::Time& extension_install_time) const = 0; | 108 const base::Time& extension_install_time) const = 0; |
111 }; | 109 }; |
112 | 110 |
113 // Immutable container for multiple actions. | 111 // Immutable container for multiple actions. |
114 // | 112 // |
115 // TODO(battre): As WebRequestActionSet can become the single owner of all | 113 // TODO(battre): As WebRequestActionSet can become the single owner of all |
116 // actions, we can optimize here by making some of them singletons (e.g. Cancel | 114 // actions, we can optimize here by making some of them singletons (e.g. Cancel |
117 // actions). | 115 // actions). |
118 class WebRequestActionSet { | 116 class WebRequestActionSet { |
(...skipping 10 matching lines...) Expand all Loading... |
129 static scoped_ptr<WebRequestActionSet> Create(const AnyVector& actions, | 127 static scoped_ptr<WebRequestActionSet> Create(const AnyVector& actions, |
130 std::string* error, | 128 std::string* error, |
131 bool* bad_message); | 129 bool* bad_message); |
132 | 130 |
133 // Returns a description of the modifications to |request| caused by the | 131 // Returns a description of the modifications to |request| caused by the |
134 // |actions_| that can be executed at |request_stage|. If |extension| | 132 // |actions_| that can be executed at |request_stage|. If |extension| |
135 // is not NULL, permissions of extensions are checked. | 133 // is not NULL, permissions of extensions are checked. |
136 std::list<LinkedPtrEventResponseDelta> CreateDeltas( | 134 std::list<LinkedPtrEventResponseDelta> CreateDeltas( |
137 const ExtensionInfoMap* extension_info_map, | 135 const ExtensionInfoMap* extension_info_map, |
138 const std::string& extension_id, | 136 const std::string& extension_id, |
139 net::URLRequest* request, | 137 const WebRequestRule::RequestData& request_data, |
140 bool crosses_incognito, | 138 bool crosses_incognito, |
141 RequestStages request_stage, | |
142 const WebRequestRule::OptionalRequestData& optional_request_data, | |
143 const base::Time& extension_install_time) const; | 139 const base::Time& extension_install_time) const; |
144 | 140 |
145 // Returns the minimum priority of rules that may be evaluated after | 141 // Returns the minimum priority of rules that may be evaluated after |
146 // this rule. Defaults to MIN_INT. | 142 // this rule. Defaults to MIN_INT. |
147 int GetMinimumPriority() const; | 143 int GetMinimumPriority() const; |
148 | 144 |
149 const Actions& actions() const { return actions_; } | 145 const Actions& actions() const { return actions_; } |
150 | 146 |
151 private: | 147 private: |
152 Actions actions_; | 148 Actions actions_; |
153 | 149 |
154 DISALLOW_COPY_AND_ASSIGN(WebRequestActionSet); | 150 DISALLOW_COPY_AND_ASSIGN(WebRequestActionSet); |
155 }; | 151 }; |
156 | 152 |
157 // | 153 // |
158 // The following are concrete actions. | 154 // The following are concrete actions. |
159 // | 155 // |
160 | 156 |
161 // Action that instructs to cancel a network request. | 157 // Action that instructs to cancel a network request. |
162 class WebRequestCancelAction : public WebRequestAction { | 158 class WebRequestCancelAction : public WebRequestAction { |
163 public: | 159 public: |
164 WebRequestCancelAction(); | 160 WebRequestCancelAction(); |
165 virtual ~WebRequestCancelAction(); | 161 virtual ~WebRequestCancelAction(); |
166 | 162 |
167 // Implementation of WebRequestAction: | 163 // Implementation of WebRequestAction: |
168 virtual int GetStages() const OVERRIDE; | 164 virtual int GetStages() const OVERRIDE; |
169 virtual Type GetType() const OVERRIDE; | 165 virtual Type GetType() const OVERRIDE; |
170 virtual LinkedPtrEventResponseDelta CreateDelta( | 166 virtual LinkedPtrEventResponseDelta CreateDelta( |
171 net::URLRequest* request, | 167 const WebRequestRule::RequestData& request_data, |
172 RequestStages request_stage, | |
173 const WebRequestRule::OptionalRequestData& optional_request_data, | |
174 const std::string& extension_id, | 168 const std::string& extension_id, |
175 const base::Time& extension_install_time) const OVERRIDE; | 169 const base::Time& extension_install_time) const OVERRIDE; |
176 | 170 |
177 private: | 171 private: |
178 DISALLOW_COPY_AND_ASSIGN(WebRequestCancelAction); | 172 DISALLOW_COPY_AND_ASSIGN(WebRequestCancelAction); |
179 }; | 173 }; |
180 | 174 |
181 // Action that instructs to redirect a network request. | 175 // Action that instructs to redirect a network request. |
182 class WebRequestRedirectAction : public WebRequestAction { | 176 class WebRequestRedirectAction : public WebRequestAction { |
183 public: | 177 public: |
184 explicit WebRequestRedirectAction(const GURL& redirect_url); | 178 explicit WebRequestRedirectAction(const GURL& redirect_url); |
185 virtual ~WebRequestRedirectAction(); | 179 virtual ~WebRequestRedirectAction(); |
186 | 180 |
187 // Implementation of WebRequestAction: | 181 // Implementation of WebRequestAction: |
188 virtual int GetStages() const OVERRIDE; | 182 virtual int GetStages() const OVERRIDE; |
189 virtual Type GetType() const OVERRIDE; | 183 virtual Type GetType() const OVERRIDE; |
190 virtual LinkedPtrEventResponseDelta CreateDelta( | 184 virtual LinkedPtrEventResponseDelta CreateDelta( |
191 net::URLRequest* request, | 185 const WebRequestRule::RequestData& request_data, |
192 RequestStages request_stage, | |
193 const WebRequestRule::OptionalRequestData& optional_request_data, | |
194 const std::string& extension_id, | 186 const std::string& extension_id, |
195 const base::Time& extension_install_time) const OVERRIDE; | 187 const base::Time& extension_install_time) const OVERRIDE; |
196 | 188 |
197 private: | 189 private: |
198 GURL redirect_url_; // Target to which the request shall be redirected. | 190 GURL redirect_url_; // Target to which the request shall be redirected. |
199 | 191 |
200 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectAction); | 192 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectAction); |
201 }; | 193 }; |
202 | 194 |
203 // Action that instructs to redirect a network request to a transparent image. | 195 // Action that instructs to redirect a network request to a transparent image. |
204 class WebRequestRedirectToTransparentImageAction : public WebRequestAction { | 196 class WebRequestRedirectToTransparentImageAction : public WebRequestAction { |
205 public: | 197 public: |
206 WebRequestRedirectToTransparentImageAction(); | 198 WebRequestRedirectToTransparentImageAction(); |
207 virtual ~WebRequestRedirectToTransparentImageAction(); | 199 virtual ~WebRequestRedirectToTransparentImageAction(); |
208 | 200 |
209 // Implementation of WebRequestAction: | 201 // Implementation of WebRequestAction: |
210 virtual int GetStages() const OVERRIDE; | 202 virtual int GetStages() const OVERRIDE; |
211 virtual Type GetType() const OVERRIDE; | 203 virtual Type GetType() const OVERRIDE; |
212 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; | 204 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; |
213 virtual LinkedPtrEventResponseDelta CreateDelta( | 205 virtual LinkedPtrEventResponseDelta CreateDelta( |
214 net::URLRequest* request, | 206 const WebRequestRule::RequestData& request_data, |
215 RequestStages request_stage, | |
216 const WebRequestRule::OptionalRequestData& optional_request_data, | |
217 const std::string& extension_id, | 207 const std::string& extension_id, |
218 const base::Time& extension_install_time) const OVERRIDE; | 208 const base::Time& extension_install_time) const OVERRIDE; |
219 | 209 |
220 private: | 210 private: |
221 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToTransparentImageAction); | 211 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToTransparentImageAction); |
222 }; | 212 }; |
223 | 213 |
224 | 214 |
225 // Action that instructs to redirect a network request to an empty document. | 215 // Action that instructs to redirect a network request to an empty document. |
226 class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction { | 216 class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction { |
227 public: | 217 public: |
228 WebRequestRedirectToEmptyDocumentAction(); | 218 WebRequestRedirectToEmptyDocumentAction(); |
229 virtual ~WebRequestRedirectToEmptyDocumentAction(); | 219 virtual ~WebRequestRedirectToEmptyDocumentAction(); |
230 | 220 |
231 // Implementation of WebRequestAction: | 221 // Implementation of WebRequestAction: |
232 virtual int GetStages() const OVERRIDE; | 222 virtual int GetStages() const OVERRIDE; |
233 virtual Type GetType() const OVERRIDE; | 223 virtual Type GetType() const OVERRIDE; |
234 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; | 224 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; |
235 virtual LinkedPtrEventResponseDelta CreateDelta( | 225 virtual LinkedPtrEventResponseDelta CreateDelta( |
236 net::URLRequest* request, | 226 const WebRequestRule::RequestData& request_data, |
237 RequestStages request_stage, | |
238 const WebRequestRule::OptionalRequestData& optional_request_data, | |
239 const std::string& extension_id, | 227 const std::string& extension_id, |
240 const base::Time& extension_install_time) const OVERRIDE; | 228 const base::Time& extension_install_time) const OVERRIDE; |
241 | 229 |
242 private: | 230 private: |
243 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToEmptyDocumentAction); | 231 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToEmptyDocumentAction); |
244 }; | 232 }; |
245 | 233 |
246 // Action that instructs to redirect a network request. | 234 // Action that instructs to redirect a network request. |
247 class WebRequestRedirectByRegExAction : public WebRequestAction { | 235 class WebRequestRedirectByRegExAction : public WebRequestAction { |
248 public: | 236 public: |
249 // The |to_pattern| has to be passed in ICU syntax. | 237 // The |to_pattern| has to be passed in ICU syntax. |
250 // TODO(battre): Change this to Perl style when migrated to RE2. | 238 // TODO(battre): Change this to Perl style when migrated to RE2. |
251 explicit WebRequestRedirectByRegExAction( | 239 explicit WebRequestRedirectByRegExAction( |
252 scoped_ptr<icu::RegexPattern> from_pattern, | 240 scoped_ptr<icu::RegexPattern> from_pattern, |
253 const std::string& to_pattern); | 241 const std::string& to_pattern); |
254 virtual ~WebRequestRedirectByRegExAction(); | 242 virtual ~WebRequestRedirectByRegExAction(); |
255 | 243 |
256 // Conversion of capture group styles between Perl style ($1, $2, ...) and | 244 // Conversion of capture group styles between Perl style ($1, $2, ...) and |
257 // RE2 (\1, \2, ...). | 245 // RE2 (\1, \2, ...). |
258 static std::string PerlToRe2Style(const std::string& perl); | 246 static std::string PerlToRe2Style(const std::string& perl); |
259 | 247 |
260 // Implementation of WebRequestAction: | 248 // Implementation of WebRequestAction: |
261 virtual int GetStages() const OVERRIDE; | 249 virtual int GetStages() const OVERRIDE; |
262 virtual Type GetType() const OVERRIDE; | 250 virtual Type GetType() const OVERRIDE; |
263 virtual LinkedPtrEventResponseDelta CreateDelta( | 251 virtual LinkedPtrEventResponseDelta CreateDelta( |
264 net::URLRequest* request, | 252 const WebRequestRule::RequestData& request_data, |
265 RequestStages request_stage, | |
266 const WebRequestRule::OptionalRequestData& optional_request_data, | |
267 const std::string& extension_id, | 253 const std::string& extension_id, |
268 const base::Time& extension_install_time) const OVERRIDE; | 254 const base::Time& extension_install_time) const OVERRIDE; |
269 | 255 |
270 private: | 256 private: |
271 scoped_ptr<icu::RegexPattern> from_pattern_; | 257 scoped_ptr<icu::RegexPattern> from_pattern_; |
272 icu::UnicodeString to_pattern_; | 258 icu::UnicodeString to_pattern_; |
273 | 259 |
274 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectByRegExAction); | 260 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectByRegExAction); |
275 }; | 261 }; |
276 | 262 |
277 // Action that instructs to set a request header. | 263 // Action that instructs to set a request header. |
278 class WebRequestSetRequestHeaderAction : public WebRequestAction { | 264 class WebRequestSetRequestHeaderAction : public WebRequestAction { |
279 public: | 265 public: |
280 WebRequestSetRequestHeaderAction(const std::string& name, | 266 WebRequestSetRequestHeaderAction(const std::string& name, |
281 const std::string& value); | 267 const std::string& value); |
282 virtual ~WebRequestSetRequestHeaderAction(); | 268 virtual ~WebRequestSetRequestHeaderAction(); |
283 | 269 |
284 // Implementation of WebRequestAction: | 270 // Implementation of WebRequestAction: |
285 virtual int GetStages() const OVERRIDE; | 271 virtual int GetStages() const OVERRIDE; |
286 virtual Type GetType() const OVERRIDE; | 272 virtual Type GetType() const OVERRIDE; |
287 virtual LinkedPtrEventResponseDelta CreateDelta( | 273 virtual LinkedPtrEventResponseDelta CreateDelta( |
288 net::URLRequest* request, | 274 const WebRequestRule::RequestData& request_data, |
289 RequestStages request_stage, | |
290 const WebRequestRule::OptionalRequestData& optional_request_data, | |
291 const std::string& extension_id, | 275 const std::string& extension_id, |
292 const base::Time& extension_install_time) const OVERRIDE; | 276 const base::Time& extension_install_time) const OVERRIDE; |
293 | 277 |
294 private: | 278 private: |
295 std::string name_; | 279 std::string name_; |
296 std::string value_; | 280 std::string value_; |
297 DISALLOW_COPY_AND_ASSIGN(WebRequestSetRequestHeaderAction); | 281 DISALLOW_COPY_AND_ASSIGN(WebRequestSetRequestHeaderAction); |
298 }; | 282 }; |
299 | 283 |
300 // Action that instructs to remove a request header. | 284 // Action that instructs to remove a request header. |
301 class WebRequestRemoveRequestHeaderAction : public WebRequestAction { | 285 class WebRequestRemoveRequestHeaderAction : public WebRequestAction { |
302 public: | 286 public: |
303 explicit WebRequestRemoveRequestHeaderAction(const std::string& name); | 287 explicit WebRequestRemoveRequestHeaderAction(const std::string& name); |
304 virtual ~WebRequestRemoveRequestHeaderAction(); | 288 virtual ~WebRequestRemoveRequestHeaderAction(); |
305 | 289 |
306 // Implementation of WebRequestAction: | 290 // Implementation of WebRequestAction: |
307 virtual int GetStages() const OVERRIDE; | 291 virtual int GetStages() const OVERRIDE; |
308 virtual Type GetType() const OVERRIDE; | 292 virtual Type GetType() const OVERRIDE; |
309 virtual LinkedPtrEventResponseDelta CreateDelta( | 293 virtual LinkedPtrEventResponseDelta CreateDelta( |
310 net::URLRequest* request, | 294 const WebRequestRule::RequestData& request_data, |
311 RequestStages request_stage, | |
312 const WebRequestRule::OptionalRequestData& optional_request_data, | |
313 const std::string& extension_id, | 295 const std::string& extension_id, |
314 const base::Time& extension_install_time) const OVERRIDE; | 296 const base::Time& extension_install_time) const OVERRIDE; |
315 | 297 |
316 private: | 298 private: |
317 std::string name_; | 299 std::string name_; |
318 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveRequestHeaderAction); | 300 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveRequestHeaderAction); |
319 }; | 301 }; |
320 | 302 |
321 // Action that instructs to add a response header. | 303 // Action that instructs to add a response header. |
322 class WebRequestAddResponseHeaderAction : public WebRequestAction { | 304 class WebRequestAddResponseHeaderAction : public WebRequestAction { |
323 public: | 305 public: |
324 WebRequestAddResponseHeaderAction(const std::string& name, | 306 WebRequestAddResponseHeaderAction(const std::string& name, |
325 const std::string& value); | 307 const std::string& value); |
326 virtual ~WebRequestAddResponseHeaderAction(); | 308 virtual ~WebRequestAddResponseHeaderAction(); |
327 | 309 |
328 // Implementation of WebRequestAction: | 310 // Implementation of WebRequestAction: |
329 virtual int GetStages() const OVERRIDE; | 311 virtual int GetStages() const OVERRIDE; |
330 virtual Type GetType() const OVERRIDE; | 312 virtual Type GetType() const OVERRIDE; |
331 virtual LinkedPtrEventResponseDelta CreateDelta( | 313 virtual LinkedPtrEventResponseDelta CreateDelta( |
332 net::URLRequest* request, | 314 const WebRequestRule::RequestData& request_data, |
333 RequestStages request_stage, | |
334 const WebRequestRule::OptionalRequestData& optional_request_data, | |
335 const std::string& extension_id, | 315 const std::string& extension_id, |
336 const base::Time& extension_install_time) const OVERRIDE; | 316 const base::Time& extension_install_time) const OVERRIDE; |
337 | 317 |
338 private: | 318 private: |
339 std::string name_; | 319 std::string name_; |
340 std::string value_; | 320 std::string value_; |
341 DISALLOW_COPY_AND_ASSIGN(WebRequestAddResponseHeaderAction); | 321 DISALLOW_COPY_AND_ASSIGN(WebRequestAddResponseHeaderAction); |
342 }; | 322 }; |
343 | 323 |
344 // Action that instructs to remove a response header. | 324 // Action that instructs to remove a response header. |
345 class WebRequestRemoveResponseHeaderAction : public WebRequestAction { | 325 class WebRequestRemoveResponseHeaderAction : public WebRequestAction { |
346 public: | 326 public: |
347 explicit WebRequestRemoveResponseHeaderAction(const std::string& name, | 327 explicit WebRequestRemoveResponseHeaderAction(const std::string& name, |
348 const std::string& value, | 328 const std::string& value, |
349 bool has_value); | 329 bool has_value); |
350 virtual ~WebRequestRemoveResponseHeaderAction(); | 330 virtual ~WebRequestRemoveResponseHeaderAction(); |
351 | 331 |
352 // Implementation of WebRequestAction: | 332 // Implementation of WebRequestAction: |
353 virtual int GetStages() const OVERRIDE; | 333 virtual int GetStages() const OVERRIDE; |
354 virtual Type GetType() const OVERRIDE; | 334 virtual Type GetType() const OVERRIDE; |
355 virtual LinkedPtrEventResponseDelta CreateDelta( | 335 virtual LinkedPtrEventResponseDelta CreateDelta( |
356 net::URLRequest* request, | 336 const WebRequestRule::RequestData& request_data, |
357 RequestStages request_stage, | |
358 const WebRequestRule::OptionalRequestData& optional_request_data, | |
359 const std::string& extension_id, | 337 const std::string& extension_id, |
360 const base::Time& extension_install_time) const OVERRIDE; | 338 const base::Time& extension_install_time) const OVERRIDE; |
361 | 339 |
362 private: | 340 private: |
363 std::string name_; | 341 std::string name_; |
364 std::string value_; | 342 std::string value_; |
365 bool has_value_; | 343 bool has_value_; |
366 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveResponseHeaderAction); | 344 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveResponseHeaderAction); |
367 }; | 345 }; |
368 | 346 |
369 // Action that instructs to ignore rules below a certain priority. | 347 // Action that instructs to ignore rules below a certain priority. |
370 class WebRequestIgnoreRulesAction : public WebRequestAction { | 348 class WebRequestIgnoreRulesAction : public WebRequestAction { |
371 public: | 349 public: |
372 explicit WebRequestIgnoreRulesAction(int minimum_priority); | 350 explicit WebRequestIgnoreRulesAction(int minimum_priority); |
373 virtual ~WebRequestIgnoreRulesAction(); | 351 virtual ~WebRequestIgnoreRulesAction(); |
374 | 352 |
375 // Implementation of WebRequestAction: | 353 // Implementation of WebRequestAction: |
376 virtual int GetStages() const OVERRIDE; | 354 virtual int GetStages() const OVERRIDE; |
377 virtual Type GetType() const OVERRIDE; | 355 virtual Type GetType() const OVERRIDE; |
378 virtual int GetMinimumPriority() const OVERRIDE; | 356 virtual int GetMinimumPriority() const OVERRIDE; |
379 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; | 357 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; |
380 virtual LinkedPtrEventResponseDelta CreateDelta( | 358 virtual LinkedPtrEventResponseDelta CreateDelta( |
381 net::URLRequest* request, | 359 const WebRequestRule::RequestData& request_data, |
382 RequestStages request_stage, | |
383 const WebRequestRule::OptionalRequestData& optional_request_data, | |
384 const std::string& extension_id, | 360 const std::string& extension_id, |
385 const base::Time& extension_install_time) const OVERRIDE; | 361 const base::Time& extension_install_time) const OVERRIDE; |
386 | 362 |
387 private: | 363 private: |
388 int minimum_priority_; | 364 int minimum_priority_; |
389 DISALLOW_COPY_AND_ASSIGN(WebRequestIgnoreRulesAction); | 365 DISALLOW_COPY_AND_ASSIGN(WebRequestIgnoreRulesAction); |
390 }; | 366 }; |
391 | 367 |
392 // TODO(battre) Implement further actions: | 368 // TODO(battre) Implement further actions: |
393 // Redirect by RegEx, Cookie manipulations, ... | 369 // Redirect by RegEx, Cookie manipulations, ... |
394 | 370 |
395 } // namespace extensions | 371 } // namespace extensions |
396 | 372 |
397 #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTIO
N_H_ | 373 #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTIO
N_H_ |
OLD | NEW |