Chromium Code Reviews| 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_action .h" | 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action .h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <sstream> | |
| 8 | 9 |
| 9 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| 10 #include "base/logging.h" | 11 #include "base/logging.h" |
| 11 #include "base/stringprintf.h" | 12 #include "base/stringprintf.h" |
| 12 #include "base/string_util.h" | 13 #include "base/string_util.h" |
| 13 #include "base/values.h" | 14 #include "base/values.h" |
| 14 #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" | 15 #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" |
| 15 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion.h" | 16 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion.h" |
| 16 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h" | 17 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h" |
| 17 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 18 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 322 struct WebRequestActionFactory { | 323 struct WebRequestActionFactory { |
| 323 // Factory methods for WebRequestAction instances. |dict| contains the json | 324 // Factory methods for WebRequestAction instances. |dict| contains the json |
| 324 // dictionary that describes the action. |error| is used to return error | 325 // dictionary that describes the action. |error| is used to return error |
| 325 // messages in case the extension passed an action that was syntactically | 326 // messages in case the extension passed an action that was syntactically |
| 326 // correct but semantically incorrect. |bad_message| is set to true in case | 327 // correct but semantically incorrect. |bad_message| is set to true in case |
| 327 // |dict| does not confirm to the validated JSON specification. | 328 // |dict| does not confirm to the validated JSON specification. |
| 328 typedef scoped_ptr<WebRequestAction> | 329 typedef scoped_ptr<WebRequestAction> |
| 329 (* FactoryMethod)(const base::DictionaryValue* /* dict */ , | 330 (* FactoryMethod)(const base::DictionaryValue* /* dict */ , |
| 330 std::string* /* error */, | 331 std::string* /* error */, |
| 331 bool* /* bad_message */); | 332 bool* /* bad_message */); |
| 333 | |
| 334 typedef std::map<WebRequestAction::Type, const std::string> ActionNames; | |
| 335 | |
| 332 // Maps the name of a declarativeWebRequest action type to the factory | 336 // Maps the name of a declarativeWebRequest action type to the factory |
| 333 // function creating it. | 337 // function creating it. |
| 334 std::map<std::string, FactoryMethod> factory_methods; | 338 std::map<std::string, FactoryMethod> factory_methods; |
| 335 | 339 |
| 340 // Translates action types into the corresponding JavaScript names. | |
| 341 std::map<WebRequestAction::Type, const std::string> action_names; | |
|
Matt Perry
2013/04/25 19:59:21
use the typedef?
vabr (Chromium)
2013/04/26 09:58:52
Done.
| |
| 342 | |
| 336 WebRequestActionFactory() { | 343 WebRequestActionFactory() { |
| 337 factory_methods[keys::kAddRequestCookieType] = | 344 factory_methods[keys::kAddRequestCookieType] = |
| 338 &CreateRequestCookieAction; | 345 &CreateRequestCookieAction; |
| 339 factory_methods[keys::kAddResponseCookieType] = | 346 factory_methods[keys::kAddResponseCookieType] = |
| 340 &CreateResponseCookieAction; | 347 &CreateResponseCookieAction; |
| 341 factory_methods[keys::kAddResponseHeaderType] = | 348 factory_methods[keys::kAddResponseHeaderType] = |
| 342 &CreateAddResponseHeaderAction; | 349 &CreateAddResponseHeaderAction; |
| 343 factory_methods[keys::kCancelRequestType] = | 350 factory_methods[keys::kCancelRequestType] = |
| 344 &CallConstructorFactoryMethod<WebRequestCancelAction>; | 351 &CallConstructorFactoryMethod<WebRequestCancelAction>; |
| 345 factory_methods[keys::kEditRequestCookieType] = | 352 factory_methods[keys::kEditRequestCookieType] = |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 362 factory_methods[keys::kSetRequestHeaderType] = | 369 factory_methods[keys::kSetRequestHeaderType] = |
| 363 &CreateSetRequestHeaderAction; | 370 &CreateSetRequestHeaderAction; |
| 364 factory_methods[keys::kRemoveRequestHeaderType] = | 371 factory_methods[keys::kRemoveRequestHeaderType] = |
| 365 &CreateRemoveRequestHeaderAction; | 372 &CreateRemoveRequestHeaderAction; |
| 366 factory_methods[keys::kRemoveResponseHeaderType] = | 373 factory_methods[keys::kRemoveResponseHeaderType] = |
| 367 &CreateRemoveResponseHeaderAction; | 374 &CreateRemoveResponseHeaderAction; |
| 368 factory_methods[keys::kIgnoreRulesType] = | 375 factory_methods[keys::kIgnoreRulesType] = |
| 369 &CreateIgnoreRulesAction; | 376 &CreateIgnoreRulesAction; |
| 370 factory_methods[keys::kSendMessageToExtensionType] = | 377 factory_methods[keys::kSendMessageToExtensionType] = |
| 371 &CreateSendMessageToExtensionAction; | 378 &CreateSendMessageToExtensionAction; |
| 379 | |
| 380 #define INSERT_ACTION_NAME(type, name) \ | |
| 381 action_names.insert(ActionNames::value_type(type, name)); | |
|
vabr (Chromium)
2013/04/25 19:08:03
Inserting instead of using [] because I want the s
Matt Perry
2013/04/25 19:59:21
Weird... [] prevents that?
vabr (Chromium)
2013/04/26 09:58:52
Yes, in
action_names[x] = "some string";
I would b
| |
| 382 std::ostringstream modify_request_cookie; | |
|
Matt Perry
2013/04/25 19:59:21
Don't use streams: http://google-styleguide.google
vabr (Chromium)
2013/04/26 09:58:52
Done.
Using JoinString instead of plain +=, becau
| |
| 383 modify_request_cookie << keys::kAddRequestCookieType << ", " | |
| 384 << keys::kEditRequestCookieType << ", " | |
| 385 << keys::kRemoveRequestCookieType; | |
| 386 INSERT_ACTION_NAME(WebRequestAction::ACTION_MODIFY_REQUEST_COOKIE, | |
| 387 modify_request_cookie.str()); | |
| 388 std::ostringstream modify_response_cookie; | |
| 389 modify_response_cookie << keys::kAddResponseCookieType << ", " | |
| 390 << keys::kEditResponseCookieType << ", " | |
| 391 << keys::kRemoveResponseCookieType; | |
| 392 INSERT_ACTION_NAME(WebRequestAction::ACTION_MODIFY_RESPONSE_COOKIE, | |
| 393 modify_response_cookie.str()); | |
| 394 INSERT_ACTION_NAME(WebRequestAction::ACTION_ADD_RESPONSE_HEADER, | |
| 395 keys::kAddResponseHeaderType); | |
| 396 INSERT_ACTION_NAME(WebRequestAction::ACTION_CANCEL_REQUEST, | |
| 397 keys::kCancelRequestType); | |
| 398 INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT, | |
| 399 keys::kRedirectByRegExType); | |
| 400 INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_REQUEST, | |
| 401 keys::kRedirectRequestType); | |
| 402 INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE, | |
| 403 keys::kRedirectToTransparentImageType); | |
| 404 INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT, | |
| 405 keys::kRedirectToEmptyDocumentType); | |
| 406 INSERT_ACTION_NAME(WebRequestAction::ACTION_SET_REQUEST_HEADER, | |
| 407 keys::kSetRequestHeaderType); | |
| 408 INSERT_ACTION_NAME(WebRequestAction::ACTION_REMOVE_REQUEST_HEADER, | |
| 409 keys::kRemoveRequestHeaderType); | |
| 410 INSERT_ACTION_NAME(WebRequestAction::ACTION_REMOVE_RESPONSE_HEADER, | |
| 411 keys::kRemoveResponseHeaderType); | |
| 412 INSERT_ACTION_NAME(WebRequestAction::ACTION_IGNORE_RULES, | |
| 413 keys::kIgnoreRulesType); | |
| 414 INSERT_ACTION_NAME(WebRequestAction::ACTION_SEND_MESSAGE_TO_EXTENSION, | |
| 415 keys::kSendMessageToExtensionType); | |
| 416 #undef INSERT_ACTION_NAME | |
| 372 } | 417 } |
| 373 }; | 418 }; |
| 374 | 419 |
| 375 base::LazyInstance<WebRequestActionFactory>::Leaky | 420 base::LazyInstance<WebRequestActionFactory>::Leaky |
| 376 g_web_request_action_factory = LAZY_INSTANCE_INITIALIZER; | 421 g_web_request_action_factory = LAZY_INSTANCE_INITIALIZER; |
| 377 | 422 |
| 378 } // namespace | 423 } // namespace |
| 379 | 424 |
| 380 // | 425 // |
| 381 // WebRequestAction | 426 // WebRequestAction |
| 382 // | 427 // |
| 383 | 428 |
| 384 WebRequestAction::WebRequestAction() {} | 429 WebRequestAction::~WebRequestAction() {} |
| 385 | 430 |
| 386 WebRequestAction::~WebRequestAction() {} | 431 const std::string& WebRequestAction::GetName() const { |
| 432 const std::map<WebRequestAction::Type, const std::string>& names = | |
|
Matt Perry
2013/04/25 19:59:21
typedef?
vabr (Chromium)
2013/04/26 09:58:52
Done.
| |
| 433 g_web_request_action_factory.Get().action_names; | |
| 434 std::map<WebRequestAction::Type, const std::string>::const_iterator it = | |
| 435 names.find(GetType()); | |
| 436 CHECK(it != names.end()); | |
| 437 return it->second; | |
| 438 } | |
| 387 | 439 |
| 388 int WebRequestAction::GetMinimumPriority() const { | 440 int WebRequestAction::GetMinimumPriority() const { |
| 389 return std::numeric_limits<int>::min(); | 441 return std::numeric_limits<int>::min(); |
| 390 } | 442 } |
| 391 | 443 |
| 392 WebRequestAction::HostPermissionsStrategy | |
| 393 WebRequestAction::GetHostPermissionsStrategy() const { | |
| 394 return STRATEGY_DEFAULT; | |
| 395 } | |
| 396 | |
| 397 bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map, | 444 bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map, |
| 398 const std::string& extension_id, | 445 const std::string& extension_id, |
| 399 const net::URLRequest* request, | 446 const net::URLRequest* request, |
| 400 bool crosses_incognito) const { | 447 bool crosses_incognito) const { |
| 401 if (WebRequestPermissions::HideRequest(extension_info_map, request)) | 448 if (WebRequestPermissions::HideRequest(extension_info_map, request)) |
| 402 return false; | 449 return false; |
| 403 | 450 |
| 404 // In unit tests we don't have an extension_info_map object here and skip host | 451 // In unit tests we don't have an extension_info_map object here and skip host |
| 405 // permission checks. | 452 // permission checks. |
| 406 if (!extension_info_map) | 453 if (!extension_info_map) |
| 407 return true; | 454 return true; |
| 408 | 455 |
| 409 HostPermissionsStrategy strategy = GetHostPermissionsStrategy(); | 456 WebRequestPermissions::HostPermissionsCheck permission_check = |
| 410 if (strategy == STRATEGY_NONE || strategy == STRATEGY_DEFAULT) { | 457 WebRequestPermissions::REQUIRE_ALL_URLS; |
| 411 bool check_host_permissions = strategy != STRATEGY_NONE; | 458 switch (host_permissions_strategy()) { |
| 412 return WebRequestPermissions::CanExtensionAccessURL( | 459 case STRATEGY_DEFAULT: // Default value is already set. |
| 413 extension_info_map, extension_id, request->url(), crosses_incognito, | 460 break; |
| 414 check_host_permissions); | 461 case STRATEGY_NONE: |
| 462 permission_check = WebRequestPermissions::DO_NOT_CHECK_HOST; | |
| 463 break; | |
| 464 case STRATEGY_HOST: | |
| 465 permission_check = WebRequestPermissions::REQUIRE_HOST_PERMISSION; | |
| 466 break; | |
| 415 } | 467 } |
| 416 return true; | 468 return WebRequestPermissions::CanExtensionAccessURL( |
| 417 } | 469 extension_info_map, extension_id, request->url(), crosses_incognito, |
| 418 | 470 permission_check); |
| 419 bool WebRequestAction::DeltaHasPermission( | |
| 420 const ExtensionInfoMap* extension_info_map, | |
| 421 const std::string& extension_id, | |
| 422 const net::URLRequest* request, | |
| 423 bool crosses_incognito, | |
| 424 const LinkedPtrEventResponseDelta& delta) const { | |
| 425 if (GetHostPermissionsStrategy() == STRATEGY_ALLOW_SAME_DOMAIN) { | |
| 426 return | |
| 427 net::RegistryControlledDomainService::SameDomainOrHost( | |
| 428 request->url(), delta->new_url) || | |
| 429 WebRequestPermissions::CanExtensionAccessURL( | |
| 430 extension_info_map, extension_id, request->url(), crosses_incognito, | |
| 431 true); | |
| 432 } | |
| 433 return true; | |
| 434 } | 471 } |
| 435 | 472 |
| 436 // static | 473 // static |
| 437 scoped_ptr<WebRequestAction> WebRequestAction::Create( | 474 scoped_ptr<WebRequestAction> WebRequestAction::Create( |
| 438 const base::Value& json_action, | 475 const base::Value& json_action, |
| 439 std::string* error, | 476 std::string* error, |
| 440 bool* bad_message) { | 477 bool* bad_message) { |
| 441 *error = ""; | 478 *error = ""; |
| 442 *bad_message = false; | 479 *bad_message = false; |
| 443 | 480 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 461 void WebRequestAction::Apply(const std::string& extension_id, | 498 void WebRequestAction::Apply(const std::string& extension_id, |
| 462 base::Time extension_install_time, | 499 base::Time extension_install_time, |
| 463 ApplyInfo* apply_info) const { | 500 ApplyInfo* apply_info) const { |
| 464 if (!HasPermission(apply_info->extension_info_map, extension_id, | 501 if (!HasPermission(apply_info->extension_info_map, extension_id, |
| 465 apply_info->request_data.request, | 502 apply_info->request_data.request, |
| 466 apply_info->crosses_incognito)) | 503 apply_info->crosses_incognito)) |
| 467 return; | 504 return; |
| 468 if (GetStages() & apply_info->request_data.stage) { | 505 if (GetStages() & apply_info->request_data.stage) { |
| 469 LinkedPtrEventResponseDelta delta = CreateDelta( | 506 LinkedPtrEventResponseDelta delta = CreateDelta( |
| 470 apply_info->request_data, extension_id, extension_install_time); | 507 apply_info->request_data, extension_id, extension_install_time); |
| 471 if (delta.get()) { | 508 if (delta.get()) |
| 472 if (DeltaHasPermission(apply_info->extension_info_map, extension_id, | 509 apply_info->deltas->push_back(delta); |
| 473 apply_info->request_data.request, | |
| 474 apply_info->crosses_incognito, | |
| 475 delta)) | |
| 476 apply_info->deltas->push_back(delta); | |
| 477 } | |
| 478 if (GetType() == WebRequestAction::ACTION_IGNORE_RULES) { | 510 if (GetType() == WebRequestAction::ACTION_IGNORE_RULES) { |
| 479 const WebRequestIgnoreRulesAction* ignore_action = | 511 const WebRequestIgnoreRulesAction* ignore_action = |
| 480 static_cast<const WebRequestIgnoreRulesAction*>(this); | 512 static_cast<const WebRequestIgnoreRulesAction*>(this); |
| 481 if (!ignore_action->ignore_tag().empty()) | 513 if (!ignore_action->ignore_tag().empty()) |
| 482 apply_info->ignored_tags->insert(ignore_action->ignore_tag()); | 514 apply_info->ignored_tags->insert(ignore_action->ignore_tag()); |
| 483 } | 515 } |
| 484 } | 516 } |
| 485 } | 517 } |
| 486 | 518 |
| 519 WebRequestAction::WebRequestAction(HostPermissionsStrategy strategy) | |
| 520 : host_permissions_strategy_(strategy) {} | |
| 487 | 521 |
| 488 // | 522 // |
| 489 // WebRequestCancelAction | 523 // WebRequestCancelAction |
| 490 // | 524 // |
| 491 | 525 |
| 492 WebRequestCancelAction::WebRequestCancelAction() {} | 526 WebRequestCancelAction::WebRequestCancelAction() |
| 527 : WebRequestAction(STRATEGY_NONE) {} | |
| 493 | 528 |
| 494 WebRequestCancelAction::~WebRequestCancelAction() {} | 529 WebRequestCancelAction::~WebRequestCancelAction() {} |
| 495 | 530 |
| 496 int WebRequestCancelAction::GetStages() const { | 531 int WebRequestCancelAction::GetStages() const { |
| 497 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | | 532 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | |
| 498 ON_AUTH_REQUIRED; | 533 ON_AUTH_REQUIRED; |
| 499 } | 534 } |
| 500 | 535 |
| 501 WebRequestAction::Type WebRequestCancelAction::GetType() const { | 536 WebRequestAction::Type WebRequestCancelAction::GetType() const { |
| 502 return WebRequestAction::ACTION_CANCEL_REQUEST; | 537 return WebRequestAction::ACTION_CANCEL_REQUEST; |
| 503 } | 538 } |
| 504 | 539 |
| 505 WebRequestAction::HostPermissionsStrategy | |
| 506 WebRequestCancelAction::GetHostPermissionsStrategy() const { | |
| 507 return WebRequestAction::STRATEGY_NONE; | |
| 508 } | |
| 509 | |
| 510 LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta( | 540 LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta( |
| 511 const WebRequestData& request_data, | 541 const WebRequestData& request_data, |
| 512 const std::string& extension_id, | 542 const std::string& extension_id, |
| 513 const base::Time& extension_install_time) const { | 543 const base::Time& extension_install_time) const { |
| 514 CHECK(request_data.stage & GetStages()); | 544 CHECK(request_data.stage & GetStages()); |
| 515 LinkedPtrEventResponseDelta result( | 545 LinkedPtrEventResponseDelta result( |
| 516 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 546 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 517 result->cancel = true; | 547 result->cancel = true; |
| 518 return result; | 548 return result; |
| 519 } | 549 } |
| 520 | 550 |
| 521 // | 551 // |
| 522 // WebRequestRedirectAction | 552 // WebRequestRedirectAction |
| 523 // | 553 // |
| 524 | 554 |
| 525 WebRequestRedirectAction::WebRequestRedirectAction(const GURL& redirect_url) | 555 WebRequestRedirectAction::WebRequestRedirectAction(const GURL& redirect_url) |
| 526 : redirect_url_(redirect_url) {} | 556 : WebRequestAction(STRATEGY_DEFAULT), redirect_url_(redirect_url) {} |
| 527 | 557 |
| 528 WebRequestRedirectAction::~WebRequestRedirectAction() {} | 558 WebRequestRedirectAction::~WebRequestRedirectAction() {} |
| 529 | 559 |
| 530 int WebRequestRedirectAction::GetStages() const { | 560 int WebRequestRedirectAction::GetStages() const { |
| 531 return ON_BEFORE_REQUEST; | 561 return ON_BEFORE_REQUEST; |
| 532 } | 562 } |
| 533 | 563 |
| 534 WebRequestAction::Type WebRequestRedirectAction::GetType() const { | 564 WebRequestAction::Type WebRequestRedirectAction::GetType() const { |
| 535 return WebRequestAction::ACTION_REDIRECT_REQUEST; | 565 return WebRequestAction::ACTION_REDIRECT_REQUEST; |
| 536 } | 566 } |
| 537 | 567 |
| 538 WebRequestAction::HostPermissionsStrategy | |
| 539 WebRequestRedirectAction::GetHostPermissionsStrategy() const { | |
| 540 return WebRequestAction::STRATEGY_ALLOW_SAME_DOMAIN; | |
| 541 } | |
| 542 | |
| 543 LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta( | 568 LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta( |
| 544 const WebRequestData& request_data, | 569 const WebRequestData& request_data, |
| 545 const std::string& extension_id, | 570 const std::string& extension_id, |
| 546 const base::Time& extension_install_time) const { | 571 const base::Time& extension_install_time) const { |
| 547 CHECK(request_data.stage & GetStages()); | 572 CHECK(request_data.stage & GetStages()); |
| 548 if (request_data.request->url() == redirect_url_) | 573 if (request_data.request->url() == redirect_url_) |
| 549 return LinkedPtrEventResponseDelta(NULL); | 574 return LinkedPtrEventResponseDelta(NULL); |
| 550 LinkedPtrEventResponseDelta result( | 575 LinkedPtrEventResponseDelta result( |
| 551 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 576 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 552 result->new_url = redirect_url_; | 577 result->new_url = redirect_url_; |
| 553 return result; | 578 return result; |
| 554 } | 579 } |
| 555 | 580 |
| 556 // | 581 // |
| 557 // WebRequestRedirectToTransparentImageAction | 582 // WebRequestRedirectToTransparentImageAction |
| 558 // | 583 // |
| 559 | 584 |
| 560 WebRequestRedirectToTransparentImageAction:: | 585 WebRequestRedirectToTransparentImageAction:: |
| 561 WebRequestRedirectToTransparentImageAction() {} | 586 WebRequestRedirectToTransparentImageAction() |
| 587 : WebRequestAction(STRATEGY_NONE) {} | |
| 562 | 588 |
| 563 WebRequestRedirectToTransparentImageAction:: | 589 WebRequestRedirectToTransparentImageAction:: |
| 564 ~WebRequestRedirectToTransparentImageAction() {} | 590 ~WebRequestRedirectToTransparentImageAction() {} |
| 565 | 591 |
| 566 int WebRequestRedirectToTransparentImageAction::GetStages() const { | 592 int WebRequestRedirectToTransparentImageAction::GetStages() const { |
| 567 return ON_BEFORE_REQUEST; | 593 return ON_BEFORE_REQUEST; |
| 568 } | 594 } |
| 569 | 595 |
| 570 WebRequestAction::Type | 596 WebRequestAction::Type |
| 571 WebRequestRedirectToTransparentImageAction::GetType() const { | 597 WebRequestRedirectToTransparentImageAction::GetType() const { |
| 572 return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE; | 598 return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE; |
| 573 } | 599 } |
| 574 | 600 |
| 575 WebRequestAction::HostPermissionsStrategy | |
| 576 WebRequestRedirectToTransparentImageAction::GetHostPermissionsStrategy() const { | |
| 577 return WebRequestAction::STRATEGY_NONE; | |
| 578 } | |
| 579 | |
| 580 LinkedPtrEventResponseDelta | 601 LinkedPtrEventResponseDelta |
| 581 WebRequestRedirectToTransparentImageAction::CreateDelta( | 602 WebRequestRedirectToTransparentImageAction::CreateDelta( |
| 582 const WebRequestData& request_data, | 603 const WebRequestData& request_data, |
| 583 const std::string& extension_id, | 604 const std::string& extension_id, |
| 584 const base::Time& extension_install_time) const { | 605 const base::Time& extension_install_time) const { |
| 585 CHECK(request_data.stage & GetStages()); | 606 CHECK(request_data.stage & GetStages()); |
| 586 LinkedPtrEventResponseDelta result( | 607 LinkedPtrEventResponseDelta result( |
| 587 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 608 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 588 result->new_url = GURL(kTransparentImageUrl); | 609 result->new_url = GURL(kTransparentImageUrl); |
| 589 return result; | 610 return result; |
| 590 } | 611 } |
| 591 | 612 |
| 592 // | 613 // |
| 593 // WebRequestRedirectToEmptyDocumentAction | 614 // WebRequestRedirectToEmptyDocumentAction |
| 594 // | 615 // |
| 595 | 616 |
| 596 WebRequestRedirectToEmptyDocumentAction:: | 617 WebRequestRedirectToEmptyDocumentAction:: |
| 597 WebRequestRedirectToEmptyDocumentAction() {} | 618 WebRequestRedirectToEmptyDocumentAction() |
| 619 : WebRequestAction(STRATEGY_NONE) {} | |
| 598 | 620 |
| 599 WebRequestRedirectToEmptyDocumentAction:: | 621 WebRequestRedirectToEmptyDocumentAction:: |
| 600 ~WebRequestRedirectToEmptyDocumentAction() {} | 622 ~WebRequestRedirectToEmptyDocumentAction() {} |
| 601 | 623 |
| 602 int WebRequestRedirectToEmptyDocumentAction::GetStages() const { | 624 int WebRequestRedirectToEmptyDocumentAction::GetStages() const { |
| 603 return ON_BEFORE_REQUEST; | 625 return ON_BEFORE_REQUEST; |
| 604 } | 626 } |
| 605 | 627 |
| 606 WebRequestAction::Type | 628 WebRequestAction::Type |
| 607 WebRequestRedirectToEmptyDocumentAction::GetType() const { | 629 WebRequestRedirectToEmptyDocumentAction::GetType() const { |
| 608 return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT; | 630 return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT; |
| 609 } | 631 } |
| 610 | 632 |
| 611 WebRequestAction::HostPermissionsStrategy | |
| 612 WebRequestRedirectToEmptyDocumentAction::GetHostPermissionsStrategy() const { | |
| 613 return WebRequestAction::STRATEGY_NONE; | |
| 614 } | |
| 615 | |
| 616 LinkedPtrEventResponseDelta | 633 LinkedPtrEventResponseDelta |
| 617 WebRequestRedirectToEmptyDocumentAction::CreateDelta( | 634 WebRequestRedirectToEmptyDocumentAction::CreateDelta( |
| 618 const WebRequestData& request_data, | 635 const WebRequestData& request_data, |
| 619 const std::string& extension_id, | 636 const std::string& extension_id, |
| 620 const base::Time& extension_install_time) const { | 637 const base::Time& extension_install_time) const { |
| 621 CHECK(request_data.stage & GetStages()); | 638 CHECK(request_data.stage & GetStages()); |
| 622 LinkedPtrEventResponseDelta result( | 639 LinkedPtrEventResponseDelta result( |
| 623 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 640 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 624 result->new_url = GURL(kEmptyDocumentUrl); | 641 result->new_url = GURL(kEmptyDocumentUrl); |
| 625 return result; | 642 return result; |
| 626 } | 643 } |
| 627 | 644 |
| 628 // | 645 // |
| 629 // WebRequestRedirectByRegExAction | 646 // WebRequestRedirectByRegExAction |
| 630 // | 647 // |
| 631 | 648 |
| 632 WebRequestRedirectByRegExAction::WebRequestRedirectByRegExAction( | 649 WebRequestRedirectByRegExAction::WebRequestRedirectByRegExAction( |
| 633 scoped_ptr<RE2> from_pattern, | 650 scoped_ptr<RE2> from_pattern, |
| 634 const std::string& to_pattern) | 651 const std::string& to_pattern) |
| 635 : from_pattern_(from_pattern.Pass()), | 652 : WebRequestAction(STRATEGY_DEFAULT), |
| 653 from_pattern_(from_pattern.Pass()), | |
| 636 to_pattern_(to_pattern.data(), to_pattern.size()) {} | 654 to_pattern_(to_pattern.data(), to_pattern.size()) {} |
| 637 | 655 |
| 638 WebRequestRedirectByRegExAction::~WebRequestRedirectByRegExAction() {} | 656 WebRequestRedirectByRegExAction::~WebRequestRedirectByRegExAction() {} |
| 639 | 657 |
| 640 // About the syntax of the two languages: | 658 // About the syntax of the two languages: |
| 641 // | 659 // |
| 642 // ICU (Perl) states: | 660 // ICU (Perl) states: |
| 643 // $n The text of capture group n will be substituted for $n. n must be >= 0 | 661 // $n The text of capture group n will be substituted for $n. n must be >= 0 |
| 644 // and not greater than the number of capture groups. A $ not followed by a | 662 // and not greater than the number of capture groups. A $ not followed by a |
| 645 // digit has no special meaning, and will appear in the substitution text | 663 // digit has no special meaning, and will appear in the substitution text |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 691 } | 709 } |
| 692 | 710 |
| 693 int WebRequestRedirectByRegExAction::GetStages() const { | 711 int WebRequestRedirectByRegExAction::GetStages() const { |
| 694 return ON_BEFORE_REQUEST; | 712 return ON_BEFORE_REQUEST; |
| 695 } | 713 } |
| 696 | 714 |
| 697 WebRequestAction::Type WebRequestRedirectByRegExAction::GetType() const { | 715 WebRequestAction::Type WebRequestRedirectByRegExAction::GetType() const { |
| 698 return WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT; | 716 return WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT; |
| 699 } | 717 } |
| 700 | 718 |
| 701 WebRequestAction::HostPermissionsStrategy | |
| 702 WebRequestRedirectByRegExAction::GetHostPermissionsStrategy() const { | |
| 703 return WebRequestAction::STRATEGY_ALLOW_SAME_DOMAIN; | |
| 704 } | |
| 705 | |
| 706 LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta( | 719 LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta( |
| 707 const WebRequestData& request_data, | 720 const WebRequestData& request_data, |
| 708 const std::string& extension_id, | 721 const std::string& extension_id, |
| 709 const base::Time& extension_install_time) const { | 722 const base::Time& extension_install_time) const { |
| 710 CHECK(request_data.stage & GetStages()); | 723 CHECK(request_data.stage & GetStages()); |
| 711 CHECK(from_pattern_.get()); | 724 CHECK(from_pattern_.get()); |
| 712 | 725 |
| 713 const std::string& old_url = request_data.request->url().spec(); | 726 const std::string& old_url = request_data.request->url().spec(); |
| 714 std::string new_url = old_url; | 727 std::string new_url = old_url; |
| 715 if (!RE2::Replace(&new_url, *from_pattern_, to_pattern_) || | 728 if (!RE2::Replace(&new_url, *from_pattern_, to_pattern_) || |
| 716 new_url == old_url) { | 729 new_url == old_url) { |
| 717 return LinkedPtrEventResponseDelta(NULL); | 730 return LinkedPtrEventResponseDelta(NULL); |
| 718 } | 731 } |
| 719 | 732 |
| 720 LinkedPtrEventResponseDelta result( | 733 LinkedPtrEventResponseDelta result( |
| 721 new extension_web_request_api_helpers::EventResponseDelta( | 734 new extension_web_request_api_helpers::EventResponseDelta( |
| 722 extension_id, extension_install_time)); | 735 extension_id, extension_install_time)); |
| 723 result->new_url = GURL(new_url); | 736 result->new_url = GURL(new_url); |
| 724 return result; | 737 return result; |
| 725 } | 738 } |
| 726 | 739 |
| 727 // | 740 // |
| 728 // WebRequestSetRequestHeaderAction | 741 // WebRequestSetRequestHeaderAction |
| 729 // | 742 // |
| 730 | 743 |
| 731 WebRequestSetRequestHeaderAction::WebRequestSetRequestHeaderAction( | 744 WebRequestSetRequestHeaderAction::WebRequestSetRequestHeaderAction( |
| 732 const std::string& name, | 745 const std::string& name, |
| 733 const std::string& value) | 746 const std::string& value) |
| 734 : name_(name), | 747 : WebRequestAction(STRATEGY_DEFAULT), name_(name), value_(value) {} |
| 735 value_(value) { | |
| 736 } | |
| 737 | 748 |
| 738 WebRequestSetRequestHeaderAction::~WebRequestSetRequestHeaderAction() {} | 749 WebRequestSetRequestHeaderAction::~WebRequestSetRequestHeaderAction() {} |
| 739 | 750 |
| 740 int WebRequestSetRequestHeaderAction::GetStages() const { | 751 int WebRequestSetRequestHeaderAction::GetStages() const { |
| 741 return ON_BEFORE_SEND_HEADERS; | 752 return ON_BEFORE_SEND_HEADERS; |
| 742 } | 753 } |
| 743 | 754 |
| 744 WebRequestAction::Type | 755 WebRequestAction::Type |
| 745 WebRequestSetRequestHeaderAction::GetType() const { | 756 WebRequestSetRequestHeaderAction::GetType() const { |
| 746 return WebRequestAction::ACTION_SET_REQUEST_HEADER; | 757 return WebRequestAction::ACTION_SET_REQUEST_HEADER; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 757 result->modified_request_headers.SetHeader(name_, value_); | 768 result->modified_request_headers.SetHeader(name_, value_); |
| 758 return result; | 769 return result; |
| 759 } | 770 } |
| 760 | 771 |
| 761 // | 772 // |
| 762 // WebRequestRemoveRequestHeaderAction | 773 // WebRequestRemoveRequestHeaderAction |
| 763 // | 774 // |
| 764 | 775 |
| 765 WebRequestRemoveRequestHeaderAction::WebRequestRemoveRequestHeaderAction( | 776 WebRequestRemoveRequestHeaderAction::WebRequestRemoveRequestHeaderAction( |
| 766 const std::string& name) | 777 const std::string& name) |
| 767 : name_(name) { | 778 : WebRequestAction(STRATEGY_DEFAULT), name_(name) {} |
| 768 } | |
| 769 | 779 |
| 770 WebRequestRemoveRequestHeaderAction::~WebRequestRemoveRequestHeaderAction() {} | 780 WebRequestRemoveRequestHeaderAction::~WebRequestRemoveRequestHeaderAction() {} |
| 771 | 781 |
| 772 int WebRequestRemoveRequestHeaderAction::GetStages() const { | 782 int WebRequestRemoveRequestHeaderAction::GetStages() const { |
| 773 return ON_BEFORE_SEND_HEADERS; | 783 return ON_BEFORE_SEND_HEADERS; |
| 774 } | 784 } |
| 775 | 785 |
| 776 WebRequestAction::Type | 786 WebRequestAction::Type |
| 777 WebRequestRemoveRequestHeaderAction::GetType() const { | 787 WebRequestRemoveRequestHeaderAction::GetType() const { |
| 778 return WebRequestAction::ACTION_REMOVE_REQUEST_HEADER; | 788 return WebRequestAction::ACTION_REMOVE_REQUEST_HEADER; |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 790 return result; | 800 return result; |
| 791 } | 801 } |
| 792 | 802 |
| 793 // | 803 // |
| 794 // WebRequestAddResponseHeaderAction | 804 // WebRequestAddResponseHeaderAction |
| 795 // | 805 // |
| 796 | 806 |
| 797 WebRequestAddResponseHeaderAction::WebRequestAddResponseHeaderAction( | 807 WebRequestAddResponseHeaderAction::WebRequestAddResponseHeaderAction( |
| 798 const std::string& name, | 808 const std::string& name, |
| 799 const std::string& value) | 809 const std::string& value) |
| 800 : name_(name), | 810 : WebRequestAction(STRATEGY_DEFAULT), name_(name), value_(value) {} |
| 801 value_(value) { | |
| 802 } | |
| 803 | 811 |
| 804 WebRequestAddResponseHeaderAction::~WebRequestAddResponseHeaderAction() {} | 812 WebRequestAddResponseHeaderAction::~WebRequestAddResponseHeaderAction() {} |
| 805 | 813 |
| 806 int WebRequestAddResponseHeaderAction::GetStages() const { | 814 int WebRequestAddResponseHeaderAction::GetStages() const { |
| 807 return ON_HEADERS_RECEIVED; | 815 return ON_HEADERS_RECEIVED; |
| 808 } | 816 } |
| 809 | 817 |
| 810 WebRequestAction::Type | 818 WebRequestAction::Type |
| 811 WebRequestAddResponseHeaderAction::GetType() const { | 819 WebRequestAddResponseHeaderAction::GetType() const { |
| 812 return WebRequestAction::ACTION_ADD_RESPONSE_HEADER; | 820 return WebRequestAction::ACTION_ADD_RESPONSE_HEADER; |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 834 } | 842 } |
| 835 | 843 |
| 836 // | 844 // |
| 837 // WebRequestRemoveResponseHeaderAction | 845 // WebRequestRemoveResponseHeaderAction |
| 838 // | 846 // |
| 839 | 847 |
| 840 WebRequestRemoveResponseHeaderAction::WebRequestRemoveResponseHeaderAction( | 848 WebRequestRemoveResponseHeaderAction::WebRequestRemoveResponseHeaderAction( |
| 841 const std::string& name, | 849 const std::string& name, |
| 842 const std::string& value, | 850 const std::string& value, |
| 843 bool has_value) | 851 bool has_value) |
| 844 : name_(name), | 852 : WebRequestAction(STRATEGY_DEFAULT), |
| 853 name_(name), | |
| 845 value_(value), | 854 value_(value), |
| 846 has_value_(has_value) { | 855 has_value_(has_value) {} |
| 847 } | |
| 848 | 856 |
| 849 WebRequestRemoveResponseHeaderAction::~WebRequestRemoveResponseHeaderAction() {} | 857 WebRequestRemoveResponseHeaderAction::~WebRequestRemoveResponseHeaderAction() {} |
| 850 | 858 |
| 851 int WebRequestRemoveResponseHeaderAction::GetStages() const { | 859 int WebRequestRemoveResponseHeaderAction::GetStages() const { |
| 852 return ON_HEADERS_RECEIVED; | 860 return ON_HEADERS_RECEIVED; |
| 853 } | 861 } |
| 854 | 862 |
| 855 WebRequestAction::Type | 863 WebRequestAction::Type |
| 856 WebRequestRemoveResponseHeaderAction::GetType() const { | 864 WebRequestRemoveResponseHeaderAction::GetType() const { |
| 857 return WebRequestAction::ACTION_REMOVE_RESPONSE_HEADER; | 865 return WebRequestAction::ACTION_REMOVE_RESPONSE_HEADER; |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 885 return result; | 893 return result; |
| 886 } | 894 } |
| 887 | 895 |
| 888 // | 896 // |
| 889 // WebRequestIgnoreRulesAction | 897 // WebRequestIgnoreRulesAction |
| 890 // | 898 // |
| 891 | 899 |
| 892 WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction( | 900 WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction( |
| 893 int minimum_priority, | 901 int minimum_priority, |
| 894 const std::string& ignore_tag) | 902 const std::string& ignore_tag) |
| 895 : minimum_priority_(minimum_priority), | 903 : WebRequestAction(STRATEGY_NONE), |
| 896 ignore_tag_(ignore_tag) { | 904 minimum_priority_(minimum_priority), |
| 897 } | 905 ignore_tag_(ignore_tag) {} |
| 898 | 906 |
| 899 WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {} | 907 WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {} |
| 900 | 908 |
| 901 int WebRequestIgnoreRulesAction::GetStages() const { | 909 int WebRequestIgnoreRulesAction::GetStages() const { |
| 902 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | | 910 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | |
| 903 ON_AUTH_REQUIRED; | 911 ON_AUTH_REQUIRED; |
| 904 } | 912 } |
| 905 | 913 |
| 906 WebRequestAction::Type WebRequestIgnoreRulesAction::GetType() const { | 914 WebRequestAction::Type WebRequestIgnoreRulesAction::GetType() const { |
| 907 return WebRequestAction::ACTION_IGNORE_RULES; | 915 return WebRequestAction::ACTION_IGNORE_RULES; |
| 908 } | 916 } |
| 909 | 917 |
| 910 int WebRequestIgnoreRulesAction::GetMinimumPriority() const { | 918 int WebRequestIgnoreRulesAction::GetMinimumPriority() const { |
| 911 return minimum_priority_; | 919 return minimum_priority_; |
| 912 } | 920 } |
| 913 | 921 |
| 914 WebRequestAction::HostPermissionsStrategy | |
| 915 WebRequestIgnoreRulesAction::GetHostPermissionsStrategy() const { | |
| 916 return WebRequestAction::STRATEGY_NONE; | |
| 917 } | |
| 918 | |
| 919 LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta( | 922 LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta( |
| 920 const WebRequestData& request_data, | 923 const WebRequestData& request_data, |
| 921 const std::string& extension_id, | 924 const std::string& extension_id, |
| 922 const base::Time& extension_install_time) const { | 925 const base::Time& extension_install_time) const { |
| 923 CHECK(request_data.stage & GetStages()); | 926 CHECK(request_data.stage & GetStages()); |
| 924 return LinkedPtrEventResponseDelta(NULL); | 927 return LinkedPtrEventResponseDelta(NULL); |
| 925 } | 928 } |
| 926 | 929 |
| 927 // | 930 // |
| 928 // WebRequestRequestCookieAction | 931 // WebRequestRequestCookieAction |
| 929 // | 932 // |
| 930 | 933 |
| 931 WebRequestRequestCookieAction::WebRequestRequestCookieAction( | 934 WebRequestRequestCookieAction::WebRequestRequestCookieAction( |
| 932 linked_ptr<RequestCookieModification> request_cookie_modification) | 935 linked_ptr<RequestCookieModification> request_cookie_modification) |
| 933 : request_cookie_modification_(request_cookie_modification) { | 936 : WebRequestAction(STRATEGY_DEFAULT), |
| 937 request_cookie_modification_(request_cookie_modification) { | |
| 934 CHECK(request_cookie_modification_.get()); | 938 CHECK(request_cookie_modification_.get()); |
| 935 } | 939 } |
| 936 | 940 |
| 937 WebRequestRequestCookieAction::~WebRequestRequestCookieAction() {} | 941 WebRequestRequestCookieAction::~WebRequestRequestCookieAction() {} |
| 938 | 942 |
| 939 int WebRequestRequestCookieAction::GetStages() const { | 943 int WebRequestRequestCookieAction::GetStages() const { |
| 940 return ON_BEFORE_SEND_HEADERS; | 944 return ON_BEFORE_SEND_HEADERS; |
| 941 } | 945 } |
| 942 | 946 |
| 943 WebRequestAction::Type WebRequestRequestCookieAction::GetType() const { | 947 WebRequestAction::Type WebRequestRequestCookieAction::GetType() const { |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 956 request_cookie_modification_); | 960 request_cookie_modification_); |
| 957 return result; | 961 return result; |
| 958 } | 962 } |
| 959 | 963 |
| 960 // | 964 // |
| 961 // WebRequestResponseCookieAction | 965 // WebRequestResponseCookieAction |
| 962 // | 966 // |
| 963 | 967 |
| 964 WebRequestResponseCookieAction::WebRequestResponseCookieAction( | 968 WebRequestResponseCookieAction::WebRequestResponseCookieAction( |
| 965 linked_ptr<ResponseCookieModification> response_cookie_modification) | 969 linked_ptr<ResponseCookieModification> response_cookie_modification) |
| 966 : response_cookie_modification_(response_cookie_modification) { | 970 : WebRequestAction(STRATEGY_DEFAULT), |
| 971 response_cookie_modification_(response_cookie_modification) { | |
| 967 CHECK(response_cookie_modification_.get()); | 972 CHECK(response_cookie_modification_.get()); |
| 968 } | 973 } |
| 969 | 974 |
| 970 WebRequestResponseCookieAction::~WebRequestResponseCookieAction() {} | 975 WebRequestResponseCookieAction::~WebRequestResponseCookieAction() {} |
| 971 | 976 |
| 972 int WebRequestResponseCookieAction::GetStages() const { | 977 int WebRequestResponseCookieAction::GetStages() const { |
| 973 return ON_HEADERS_RECEIVED; | 978 return ON_HEADERS_RECEIVED; |
| 974 } | 979 } |
| 975 | 980 |
| 976 WebRequestAction::Type WebRequestResponseCookieAction::GetType() const { | 981 WebRequestAction::Type WebRequestResponseCookieAction::GetType() const { |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 989 response_cookie_modification_); | 994 response_cookie_modification_); |
| 990 return result; | 995 return result; |
| 991 } | 996 } |
| 992 | 997 |
| 993 // | 998 // |
| 994 // WebRequestSendMessageToExtensionAction | 999 // WebRequestSendMessageToExtensionAction |
| 995 // | 1000 // |
| 996 | 1001 |
| 997 WebRequestSendMessageToExtensionAction::WebRequestSendMessageToExtensionAction( | 1002 WebRequestSendMessageToExtensionAction::WebRequestSendMessageToExtensionAction( |
| 998 const std::string& message) | 1003 const std::string& message) |
| 999 : message_(message) { | 1004 : WebRequestAction(STRATEGY_HOST), message_(message) {} |
| 1000 } | |
| 1001 | 1005 |
| 1002 WebRequestSendMessageToExtensionAction:: | 1006 WebRequestSendMessageToExtensionAction:: |
| 1003 ~WebRequestSendMessageToExtensionAction() {} | 1007 ~WebRequestSendMessageToExtensionAction() {} |
| 1004 | 1008 |
| 1005 int WebRequestSendMessageToExtensionAction::GetStages() const { | 1009 int WebRequestSendMessageToExtensionAction::GetStages() const { |
| 1006 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | | 1010 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | |
| 1007 ON_AUTH_REQUIRED; | 1011 ON_AUTH_REQUIRED; |
| 1008 } | 1012 } |
| 1009 | 1013 |
| 1010 WebRequestAction::Type WebRequestSendMessageToExtensionAction::GetType() const { | 1014 WebRequestAction::Type WebRequestSendMessageToExtensionAction::GetType() const { |
| 1011 return WebRequestAction::ACTION_SEND_MESSAGE_TO_EXTENSION; | 1015 return WebRequestAction::ACTION_SEND_MESSAGE_TO_EXTENSION; |
| 1012 } | 1016 } |
| 1013 | 1017 |
| 1014 LinkedPtrEventResponseDelta WebRequestSendMessageToExtensionAction::CreateDelta( | 1018 LinkedPtrEventResponseDelta WebRequestSendMessageToExtensionAction::CreateDelta( |
| 1015 const WebRequestData& request_data, | 1019 const WebRequestData& request_data, |
| 1016 const std::string& extension_id, | 1020 const std::string& extension_id, |
| 1017 const base::Time& extension_install_time) const { | 1021 const base::Time& extension_install_time) const { |
| 1018 CHECK(request_data.stage & GetStages()); | 1022 CHECK(request_data.stage & GetStages()); |
| 1019 LinkedPtrEventResponseDelta result( | 1023 LinkedPtrEventResponseDelta result( |
| 1020 new extension_web_request_api_helpers::EventResponseDelta( | 1024 new extension_web_request_api_helpers::EventResponseDelta( |
| 1021 extension_id, extension_install_time)); | 1025 extension_id, extension_install_time)); |
| 1022 result->messages_to_extension.insert(message_); | 1026 result->messages_to_extension.insert(message_); |
| 1023 return result; | 1027 return result; |
| 1024 } | 1028 } |
| 1025 | 1029 |
| 1026 } // namespace extensions | 1030 } // namespace extensions |
| OLD | NEW |