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

Side by Side Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.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: Merged with ToT 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_action .h" 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action .h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "base/string_util.h"
12 #include "base/values.h" 13 #include "base/values.h"
13 #include "chrome/browser/extensions/api/declarative_webrequest/request_stages.h" 14 #include "chrome/browser/extensions/api/declarative_webrequest/request_stages.h"
14 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h" 15 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h"
15 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" 16 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
16 #include "net/url_request/url_request.h" 17 #include "net/url_request/url_request.h"
17 18
18 namespace extensions { 19 namespace extensions {
19 20
20 namespace keys = declarative_webrequest_constants; 21 namespace keys = declarative_webrequest_constants;
21 22
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 scoped_ptr<WebRequestAction> CreateRemoveRequestHeaderAction( 73 scoped_ptr<WebRequestAction> CreateRemoveRequestHeaderAction(
73 const base::DictionaryValue* dict, 74 const base::DictionaryValue* dict,
74 std::string* error, 75 std::string* error,
75 bool* bad_message) { 76 bool* bad_message) {
76 std::string name; 77 std::string name;
77 INPUT_FORMAT_VALIDATE(dict->GetString(keys::kNameKey, &name)); 78 INPUT_FORMAT_VALIDATE(dict->GetString(keys::kNameKey, &name));
78 return scoped_ptr<WebRequestAction>( 79 return scoped_ptr<WebRequestAction>(
79 new WebRequestRemoveRequestHeaderAction(name)); 80 new WebRequestRemoveRequestHeaderAction(name));
80 } 81 }
81 82
83 scoped_ptr<WebRequestAction> CreateAddResponseHeaderAction(
84 const base::DictionaryValue* dict,
85 std::string* error,
86 bool* bad_message) {
87 std::string name;
88 std::string value;
89 INPUT_FORMAT_VALIDATE(dict->GetString(keys::kNameKey, &name));
90 INPUT_FORMAT_VALIDATE(dict->GetString(keys::kValueKey, &value));
91 return scoped_ptr<WebRequestAction>(
92 new WebRequestAddResponseHeaderAction(name, value));
93 }
94
95 scoped_ptr<WebRequestAction> CreateRemoveResponseHeaderAction(
96 const base::DictionaryValue* dict,
97 std::string* error,
98 bool* bad_message) {
99 std::string name;
100 std::string value;
101 INPUT_FORMAT_VALIDATE(dict->GetString(keys::kNameKey, &name));
102 bool has_value = dict->GetString(keys::kValueKey, &value);
103 return scoped_ptr<WebRequestAction>(
104 new WebRequestRemoveResponseHeaderAction(name, value, has_value));
105 }
106
82 scoped_ptr<WebRequestAction> CreateIgnoreRulesAction( 107 scoped_ptr<WebRequestAction> CreateIgnoreRulesAction(
83 const base::DictionaryValue* dict, 108 const base::DictionaryValue* dict,
84 std::string* error, 109 std::string* error,
85 bool* bad_message) { 110 bool* bad_message) {
86 int minium_priority; 111 int minium_priority;
87 INPUT_FORMAT_VALIDATE( 112 INPUT_FORMAT_VALIDATE(
88 dict->GetInteger(keys::kLowerPriorityThanKey, &minium_priority)); 113 dict->GetInteger(keys::kLowerPriorityThanKey, &minium_priority));
89 return scoped_ptr<WebRequestAction>( 114 return scoped_ptr<WebRequestAction>(
90 new WebRequestIgnoreRulesAction(minium_priority)); 115 new WebRequestIgnoreRulesAction(minium_priority));
91 } 116 }
92 117
93 struct WebRequestActionFactory { 118 struct WebRequestActionFactory {
94 // Factory methods for WebRequestAction instances. |dict| contains the json 119 // Factory methods for WebRequestAction instances. |dict| contains the json
95 // dictionary that describes the action. |error| is used to return error 120 // dictionary that describes the action. |error| is used to return error
96 // messages in case the extension passed an action that was syntactically 121 // messages in case the extension passed an action that was syntactically
97 // correct but semantically incorrect. |bad_message| is set to true in case 122 // correct but semantically incorrect. |bad_message| is set to true in case
98 // |dict| does not confirm to the validated JSON specification. 123 // |dict| does not confirm to the validated JSON specification.
99 typedef scoped_ptr<WebRequestAction> 124 typedef scoped_ptr<WebRequestAction>
100 (* FactoryMethod)(const base::DictionaryValue* /* dict */ , 125 (* FactoryMethod)(const base::DictionaryValue* /* dict */ ,
101 std::string* /* error */, 126 std::string* /* error */,
102 bool* /* bad_message */); 127 bool* /* bad_message */);
103 std::map<std::string, FactoryMethod> factory_methods; 128 std::map<std::string, FactoryMethod> factory_methods;
104 129
105 WebRequestActionFactory() { 130 WebRequestActionFactory() {
131 factory_methods[keys::kAddResponseHeaderType] =
132 &CreateAddResponseHeaderAction;
106 factory_methods[keys::kCancelRequestType] = 133 factory_methods[keys::kCancelRequestType] =
107 &CallConstructorFactoryMethod<WebRequestCancelAction>; 134 &CallConstructorFactoryMethod<WebRequestCancelAction>;
108 factory_methods[keys::kRedirectRequestType] = 135 factory_methods[keys::kRedirectRequestType] =
109 &CreateRedirectRequestAction; 136 &CreateRedirectRequestAction;
110 factory_methods[keys::kRedirectToTransparentImageType] = 137 factory_methods[keys::kRedirectToTransparentImageType] =
111 &CallConstructorFactoryMethod< 138 &CallConstructorFactoryMethod<
112 WebRequestRedirectToTransparentImageAction>; 139 WebRequestRedirectToTransparentImageAction>;
113 factory_methods[keys::kRedirectToEmptyDocumentType] = 140 factory_methods[keys::kRedirectToEmptyDocumentType] =
114 &CallConstructorFactoryMethod<WebRequestRedirectToEmptyDocumentAction>; 141 &CallConstructorFactoryMethod<WebRequestRedirectToEmptyDocumentAction>;
115 factory_methods[keys::kSetRequestHeaderType] = 142 factory_methods[keys::kSetRequestHeaderType] =
116 &CreateSetRequestHeaderAction; 143 &CreateSetRequestHeaderAction;
117 factory_methods[keys::kRemoveRequestHeaderType] = 144 factory_methods[keys::kRemoveRequestHeaderType] =
118 &CreateRemoveRequestHeaderAction; 145 &CreateRemoveRequestHeaderAction;
146 factory_methods[keys::kRemoveResponseHeaderType] =
147 &CreateRemoveResponseHeaderAction;
119 factory_methods[keys::kIgnoreRulesType] = 148 factory_methods[keys::kIgnoreRulesType] =
120 &CreateIgnoreRulesAction; 149 &CreateIgnoreRulesAction;
121 } 150 }
122 }; 151 };
123 152
124 base::LazyInstance<WebRequestActionFactory>::Leaky 153 base::LazyInstance<WebRequestActionFactory>::Leaky
125 g_web_request_action_factory = LAZY_INSTANCE_INITIALIZER; 154 g_web_request_action_factory = LAZY_INSTANCE_INITIALIZER;
126 155
127 } // namespace 156 } // namespace
128 157
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 return scoped_ptr<WebRequestActionSet>(NULL); 220 return scoped_ptr<WebRequestActionSet>(NULL);
192 result.push_back(make_linked_ptr(action.release())); 221 result.push_back(make_linked_ptr(action.release()));
193 } 222 }
194 223
195 return scoped_ptr<WebRequestActionSet>(new WebRequestActionSet(result)); 224 return scoped_ptr<WebRequestActionSet>(new WebRequestActionSet(result));
196 } 225 }
197 226
198 std::list<LinkedPtrEventResponseDelta> WebRequestActionSet::CreateDeltas( 227 std::list<LinkedPtrEventResponseDelta> WebRequestActionSet::CreateDeltas(
199 net::URLRequest* request, 228 net::URLRequest* request,
200 RequestStages request_stage, 229 RequestStages request_stage,
230 const WebRequestRule::OptionalRequestData& optional_request_data,
201 const std::string& extension_id, 231 const std::string& extension_id,
202 const base::Time& extension_install_time) const { 232 const base::Time& extension_install_time) const {
203 std::list<LinkedPtrEventResponseDelta> result; 233 std::list<LinkedPtrEventResponseDelta> result;
204 for (Actions::const_iterator i = actions_.begin(); i != actions_.end(); ++i) { 234 for (Actions::const_iterator i = actions_.begin(); i != actions_.end(); ++i) {
205 if ((*i)->GetStages() & request_stage) { 235 if ((*i)->GetStages() & request_stage) {
206 LinkedPtrEventResponseDelta delta = (*i)->CreateDelta(request, 236 LinkedPtrEventResponseDelta delta = (*i)->CreateDelta(request,
207 request_stage, extension_id, extension_install_time); 237 request_stage, optional_request_data, extension_id,
238 extension_install_time);
208 if (delta.get()) 239 if (delta.get())
209 result.push_back(delta); 240 result.push_back(delta);
210 } 241 }
211 } 242 }
212 return result; 243 return result;
213 } 244 }
214 245
215 int WebRequestActionSet::GetMinimumPriority() const { 246 int WebRequestActionSet::GetMinimumPriority() const {
216 int minimum_priority = std::numeric_limits<int>::min(); 247 int minimum_priority = std::numeric_limits<int>::min();
217 for (Actions::const_iterator i = actions_.begin(); i != actions_.end(); ++i) { 248 for (Actions::const_iterator i = actions_.begin(); i != actions_.end(); ++i) {
(...skipping 15 matching lines...) Expand all
233 ON_AUTH_REQUIRED; 264 ON_AUTH_REQUIRED;
234 } 265 }
235 266
236 WebRequestAction::Type WebRequestCancelAction::GetType() const { 267 WebRequestAction::Type WebRequestCancelAction::GetType() const {
237 return WebRequestAction::ACTION_CANCEL_REQUEST; 268 return WebRequestAction::ACTION_CANCEL_REQUEST;
238 } 269 }
239 270
240 LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta( 271 LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta(
241 net::URLRequest* request, 272 net::URLRequest* request,
242 RequestStages request_stage, 273 RequestStages request_stage,
274 const WebRequestRule::OptionalRequestData& optional_request_data,
243 const std::string& extension_id, 275 const std::string& extension_id,
244 const base::Time& extension_install_time) const { 276 const base::Time& extension_install_time) const {
245 CHECK(request_stage & GetStages()); 277 CHECK(request_stage & GetStages());
246 LinkedPtrEventResponseDelta result( 278 LinkedPtrEventResponseDelta result(
247 new extension_web_request_api_helpers::EventResponseDelta( 279 new extension_web_request_api_helpers::EventResponseDelta(
248 extension_id, extension_install_time)); 280 extension_id, extension_install_time));
249 result->cancel = true; 281 result->cancel = true;
250 return result; 282 return result;
251 } 283 }
252 284
(...skipping 10 matching lines...) Expand all
263 return ON_BEFORE_REQUEST; 295 return ON_BEFORE_REQUEST;
264 } 296 }
265 297
266 WebRequestAction::Type WebRequestRedirectAction::GetType() const { 298 WebRequestAction::Type WebRequestRedirectAction::GetType() const {
267 return WebRequestAction::ACTION_REDIRECT_REQUEST; 299 return WebRequestAction::ACTION_REDIRECT_REQUEST;
268 } 300 }
269 301
270 LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta( 302 LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta(
271 net::URLRequest* request, 303 net::URLRequest* request,
272 RequestStages request_stage, 304 RequestStages request_stage,
305 const WebRequestRule::OptionalRequestData& optional_request_data,
273 const std::string& extension_id, 306 const std::string& extension_id,
274 const base::Time& extension_install_time) const { 307 const base::Time& extension_install_time) const {
275 CHECK(request_stage & GetStages()); 308 CHECK(request_stage & GetStages());
276 if (request->url() == redirect_url_) 309 if (request->url() == redirect_url_)
277 return LinkedPtrEventResponseDelta(NULL); 310 return LinkedPtrEventResponseDelta(NULL);
278 LinkedPtrEventResponseDelta result( 311 LinkedPtrEventResponseDelta result(
279 new extension_web_request_api_helpers::EventResponseDelta( 312 new extension_web_request_api_helpers::EventResponseDelta(
280 extension_id, extension_install_time)); 313 extension_id, extension_install_time));
281 result->new_url = redirect_url_; 314 result->new_url = redirect_url_;
282 return result; 315 return result;
(...skipping 15 matching lines...) Expand all
298 331
299 WebRequestAction::Type 332 WebRequestAction::Type
300 WebRequestRedirectToTransparentImageAction::GetType() const { 333 WebRequestRedirectToTransparentImageAction::GetType() const {
301 return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE; 334 return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE;
302 } 335 }
303 336
304 LinkedPtrEventResponseDelta 337 LinkedPtrEventResponseDelta
305 WebRequestRedirectToTransparentImageAction::CreateDelta( 338 WebRequestRedirectToTransparentImageAction::CreateDelta(
306 net::URLRequest* request, 339 net::URLRequest* request,
307 RequestStages request_stage, 340 RequestStages request_stage,
341 const WebRequestRule::OptionalRequestData& optional_request_data,
308 const std::string& extension_id, 342 const std::string& extension_id,
309 const base::Time& extension_install_time) const { 343 const base::Time& extension_install_time) const {
310 CHECK(request_stage & GetStages()); 344 CHECK(request_stage & GetStages());
311 LinkedPtrEventResponseDelta result( 345 LinkedPtrEventResponseDelta result(
312 new extension_web_request_api_helpers::EventResponseDelta( 346 new extension_web_request_api_helpers::EventResponseDelta(
313 extension_id, extension_install_time)); 347 extension_id, extension_install_time));
314 result->new_url = GURL(kTransparentImageUrl); 348 result->new_url = GURL(kTransparentImageUrl);
315 return result; 349 return result;
316 } 350 }
317 351
(...skipping 13 matching lines...) Expand all
331 365
332 WebRequestAction::Type 366 WebRequestAction::Type
333 WebRequestRedirectToEmptyDocumentAction::GetType() const { 367 WebRequestRedirectToEmptyDocumentAction::GetType() const {
334 return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT; 368 return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT;
335 } 369 }
336 370
337 LinkedPtrEventResponseDelta 371 LinkedPtrEventResponseDelta
338 WebRequestRedirectToEmptyDocumentAction::CreateDelta( 372 WebRequestRedirectToEmptyDocumentAction::CreateDelta(
339 net::URLRequest* request, 373 net::URLRequest* request,
340 RequestStages request_stage, 374 RequestStages request_stage,
375 const WebRequestRule::OptionalRequestData& optional_request_data,
341 const std::string& extension_id, 376 const std::string& extension_id,
342 const base::Time& extension_install_time) const { 377 const base::Time& extension_install_time) const {
343 CHECK(request_stage & GetStages()); 378 CHECK(request_stage & GetStages());
344 LinkedPtrEventResponseDelta result( 379 LinkedPtrEventResponseDelta result(
345 new extension_web_request_api_helpers::EventResponseDelta( 380 new extension_web_request_api_helpers::EventResponseDelta(
346 extension_id, extension_install_time)); 381 extension_id, extension_install_time));
347 result->new_url = GURL(kEmptyDocumentUrl); 382 result->new_url = GURL(kEmptyDocumentUrl);
348 return result; 383 return result;
349 } 384 }
350 385
(...skipping 16 matching lines...) Expand all
367 402
368 WebRequestAction::Type 403 WebRequestAction::Type
369 WebRequestSetRequestHeaderAction::GetType() const { 404 WebRequestSetRequestHeaderAction::GetType() const {
370 return WebRequestAction::ACTION_SET_REQUEST_HEADER; 405 return WebRequestAction::ACTION_SET_REQUEST_HEADER;
371 } 406 }
372 407
373 LinkedPtrEventResponseDelta 408 LinkedPtrEventResponseDelta
374 WebRequestSetRequestHeaderAction::CreateDelta( 409 WebRequestSetRequestHeaderAction::CreateDelta(
375 net::URLRequest* request, 410 net::URLRequest* request,
376 RequestStages request_stage, 411 RequestStages request_stage,
412 const WebRequestRule::OptionalRequestData& optional_request_data,
377 const std::string& extension_id, 413 const std::string& extension_id,
378 const base::Time& extension_install_time) const { 414 const base::Time& extension_install_time) const {
379 CHECK(request_stage & GetStages()); 415 CHECK(request_stage & GetStages());
380 LinkedPtrEventResponseDelta result( 416 LinkedPtrEventResponseDelta result(
381 new extension_web_request_api_helpers::EventResponseDelta( 417 new extension_web_request_api_helpers::EventResponseDelta(
382 extension_id, extension_install_time)); 418 extension_id, extension_install_time));
383 result->modified_request_headers.SetHeader(name_, value_); 419 result->modified_request_headers.SetHeader(name_, value_);
384 return result; 420 return result;
385 } 421 }
386 422
(...skipping 14 matching lines...) Expand all
401 437
402 WebRequestAction::Type 438 WebRequestAction::Type
403 WebRequestRemoveRequestHeaderAction::GetType() const { 439 WebRequestRemoveRequestHeaderAction::GetType() const {
404 return WebRequestAction::ACTION_REMOVE_REQUEST_HEADER; 440 return WebRequestAction::ACTION_REMOVE_REQUEST_HEADER;
405 } 441 }
406 442
407 LinkedPtrEventResponseDelta 443 LinkedPtrEventResponseDelta
408 WebRequestRemoveRequestHeaderAction::CreateDelta( 444 WebRequestRemoveRequestHeaderAction::CreateDelta(
409 net::URLRequest* request, 445 net::URLRequest* request,
410 RequestStages request_stage, 446 RequestStages request_stage,
447 const WebRequestRule::OptionalRequestData& optional_request_data,
411 const std::string& extension_id, 448 const std::string& extension_id,
412 const base::Time& extension_install_time) const { 449 const base::Time& extension_install_time) const {
413 CHECK(request_stage & GetStages()); 450 CHECK(request_stage & GetStages());
414 LinkedPtrEventResponseDelta result( 451 LinkedPtrEventResponseDelta result(
415 new extension_web_request_api_helpers::EventResponseDelta( 452 new extension_web_request_api_helpers::EventResponseDelta(
416 extension_id, extension_install_time)); 453 extension_id, extension_install_time));
417 result->deleted_request_headers.push_back(name_); 454 result->deleted_request_headers.push_back(name_);
418 return result; 455 return result;
419 } 456 }
420 457
421 // 458 //
459 // WebRequestAddResponseHeaderAction
460 //
461
462 WebRequestAddResponseHeaderAction::WebRequestAddResponseHeaderAction(
463 const std::string& name,
464 const std::string& value)
465 : name_(name),
466 value_(value) {
467 }
468
469 WebRequestAddResponseHeaderAction::~WebRequestAddResponseHeaderAction() {}
470
471 int WebRequestAddResponseHeaderAction::GetStages() const {
472 return ON_HEADERS_RECEIVED;
473 }
474
475 WebRequestAction::Type
476 WebRequestAddResponseHeaderAction::GetType() const {
477 return WebRequestAction::ACTION_ADD_RESPONSE_HEADER;
478 }
479
480 LinkedPtrEventResponseDelta
481 WebRequestAddResponseHeaderAction::CreateDelta(
482 net::URLRequest* request,
483 RequestStages request_stage,
484 const WebRequestRule::OptionalRequestData& optional_request_data,
485 const std::string& extension_id,
486 const base::Time& extension_install_time) const {
487 CHECK(request_stage & GetStages());
488 LinkedPtrEventResponseDelta result(
489 new extension_web_request_api_helpers::EventResponseDelta(
490 extension_id, extension_install_time));
491
492 net::HttpResponseHeaders* headers =
493 optional_request_data.original_response_headers;
494 if (!headers)
495 return result;
496
497 // Don't generate the header if it exists already.
498 if (headers->HasHeaderValue(name_, value_))
499 return result;
500
501 result->added_response_headers.push_back(make_pair(name_, value_));
502 return result;
503 }
504
505 //
506 // WebRequestRemoveResponseHeaderAction
507 //
508
509 WebRequestRemoveResponseHeaderAction::WebRequestRemoveResponseHeaderAction(
510 const std::string& name,
511 const std::string& value,
512 bool has_value)
513 : name_(name),
514 value_(value),
515 has_value_(has_value) {
516 }
517
518 WebRequestRemoveResponseHeaderAction::~WebRequestRemoveResponseHeaderAction() {}
519
520 int WebRequestRemoveResponseHeaderAction::GetStages() const {
521 return ON_HEADERS_RECEIVED;
522 }
523
524 WebRequestAction::Type
525 WebRequestRemoveResponseHeaderAction::GetType() const {
526 return WebRequestAction::ACTION_REMOVE_RESPONSE_HEADER;
527 }
528
529 LinkedPtrEventResponseDelta
530 WebRequestRemoveResponseHeaderAction::CreateDelta(
531 net::URLRequest* request,
532 RequestStages request_stage,
533 const WebRequestRule::OptionalRequestData& optional_request_data,
534 const std::string& extension_id,
535 const base::Time& extension_install_time) const {
536 CHECK(request_stage & GetStages());
537 LinkedPtrEventResponseDelta result(
538 new extension_web_request_api_helpers::EventResponseDelta(
539 extension_id, extension_install_time));
540 net::HttpResponseHeaders* headers =
541 optional_request_data.original_response_headers;
542 if (!headers)
543 return result;
544 void* iter = NULL;
545 std::string current_value;
546 while (headers->EnumerateHeader(&iter, name_, &current_value)) {
547 if (has_value_ &&
548 (current_value.size() != value_.size() ||
549 !std::equal(current_value.begin(), current_value.end(),
550 value_.begin(),
551 base::CaseInsensitiveCompare<char>()))) {
552 continue;
553 }
554 result->deleted_response_headers.push_back(make_pair(name_, current_value));
555 }
556 return result;
557 }
558
559 //
422 // WebRequestIgnoreRulesAction 560 // WebRequestIgnoreRulesAction
423 // 561 //
424 562
425 WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction( 563 WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction(
426 int minimum_priority) 564 int minimum_priority)
427 : minimum_priority_(minimum_priority) { 565 : minimum_priority_(minimum_priority) {
428 } 566 }
429 567
430 WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {} 568 WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {}
431 569
432 int WebRequestIgnoreRulesAction::GetStages() const { 570 int WebRequestIgnoreRulesAction::GetStages() const {
433 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | 571 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED |
434 ON_AUTH_REQUIRED; 572 ON_AUTH_REQUIRED;
435 } 573 }
436 574
437 WebRequestAction::Type WebRequestIgnoreRulesAction::GetType() const { 575 WebRequestAction::Type WebRequestIgnoreRulesAction::GetType() const {
438 return WebRequestAction::ACTION_IGNORE_RULES; 576 return WebRequestAction::ACTION_IGNORE_RULES;
439 } 577 }
440 578
441 int WebRequestIgnoreRulesAction::GetMinimumPriority() const { 579 int WebRequestIgnoreRulesAction::GetMinimumPriority() const {
442 return minimum_priority_; 580 return minimum_priority_;
443 } 581 }
444 582
445 LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta( 583 LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta(
446 net::URLRequest* request, 584 net::URLRequest* request,
447 RequestStages request_stage, 585 RequestStages request_stage,
586 const WebRequestRule::OptionalRequestData& optional_request_data,
448 const std::string& extension_id, 587 const std::string& extension_id,
449 const base::Time& extension_install_time) const { 588 const base::Time& extension_install_time) const {
450 CHECK(request_stage & GetStages()); 589 CHECK(request_stage & GetStages());
451 return LinkedPtrEventResponseDelta(NULL); 590 return LinkedPtrEventResponseDelta(NULL);
452 } 591 }
453 592
454 } // namespace extensions 593 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698