| 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 | 8 |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 | 374 |
| 375 base::LazyInstance<WebRequestActionFactory>::Leaky | 375 base::LazyInstance<WebRequestActionFactory>::Leaky |
| 376 g_web_request_action_factory = LAZY_INSTANCE_INITIALIZER; | 376 g_web_request_action_factory = LAZY_INSTANCE_INITIALIZER; |
| 377 | 377 |
| 378 } // namespace | 378 } // namespace |
| 379 | 379 |
| 380 // | 380 // |
| 381 // WebRequestAction | 381 // WebRequestAction |
| 382 // | 382 // |
| 383 | 383 |
| 384 WebRequestAction::WebRequestAction() {} | 384 WebRequestAction::WebRequestAction() |
| 385 : host_permissions_strategy_(STRATEGY_DEFAULT) {} |
| 386 WebRequestAction::WebRequestAction(HostPermissionsStrategy strategy) |
| 387 : host_permissions_strategy_(strategy) {} |
| 385 | 388 |
| 386 WebRequestAction::~WebRequestAction() {} | 389 WebRequestAction::~WebRequestAction() {} |
| 387 | 390 |
| 388 int WebRequestAction::GetMinimumPriority() const { | 391 int WebRequestAction::GetMinimumPriority() const { |
| 389 return std::numeric_limits<int>::min(); | 392 return std::numeric_limits<int>::min(); |
| 390 } | 393 } |
| 391 | 394 |
| 392 WebRequestAction::HostPermissionsStrategy | |
| 393 WebRequestAction::GetHostPermissionsStrategy() const { | |
| 394 return STRATEGY_DEFAULT; | |
| 395 } | |
| 396 | |
| 397 bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map, | 395 bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map, |
| 398 const std::string& extension_id, | 396 const std::string& extension_id, |
| 399 const net::URLRequest* request, | 397 const net::URLRequest* request, |
| 400 bool crosses_incognito) const { | 398 bool crosses_incognito) const { |
| 401 if (WebRequestPermissions::HideRequest(extension_info_map, request)) | 399 if (WebRequestPermissions::HideRequest(extension_info_map, request)) |
| 402 return false; | 400 return false; |
| 403 | 401 |
| 404 // In unit tests we don't have an extension_info_map object here and skip host | 402 // In unit tests we don't have an extension_info_map object here and skip host |
| 405 // permission checks. | 403 // permission checks. |
| 406 if (!extension_info_map) | 404 if (!extension_info_map) |
| 407 return true; | 405 return true; |
| 408 | 406 |
| 409 HostPermissionsStrategy strategy = GetHostPermissionsStrategy(); | 407 WebRequestPermissions::HostPermissionsCheck permission_check; |
| 410 if (strategy == STRATEGY_NONE || strategy == STRATEGY_DEFAULT) { | 408 switch (host_permissions_strategy()) { |
| 411 bool check_host_permissions = strategy != STRATEGY_NONE; | 409 case STRATEGY_NONE: |
| 412 return WebRequestPermissions::CanExtensionAccessURL( | 410 permission_check = WebRequestPermissions::DO_NOT_CHECK_HOST; |
| 413 extension_info_map, extension_id, request->url(), crosses_incognito, | 411 break; |
| 414 check_host_permissions); | 412 case STRATEGY_DEFAULT: |
| 413 permission_check = WebRequestPermissions::REQUIRE_ALL_URLS; |
| 414 break; |
| 415 case STRATEGY_HOST: |
| 416 permission_check = WebRequestPermissions::REQUIRE_HOST_PERMISSION; |
| 417 break; |
| 415 } | 418 } |
| 416 return true; | 419 return WebRequestPermissions::CanExtensionAccessURL( |
| 417 } | 420 extension_info_map, extension_id, request->url(), crosses_incognito, |
| 418 | 421 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 } | 422 } |
| 435 | 423 |
| 436 // static | 424 // static |
| 437 scoped_ptr<WebRequestAction> WebRequestAction::Create( | 425 scoped_ptr<WebRequestAction> WebRequestAction::Create( |
| 438 const base::Value& json_action, | 426 const base::Value& json_action, |
| 439 std::string* error, | 427 std::string* error, |
| 440 bool* bad_message) { | 428 bool* bad_message) { |
| 441 *error = ""; | 429 *error = ""; |
| 442 *bad_message = false; | 430 *bad_message = false; |
| 443 | 431 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 461 void WebRequestAction::Apply(const std::string& extension_id, | 449 void WebRequestAction::Apply(const std::string& extension_id, |
| 462 base::Time extension_install_time, | 450 base::Time extension_install_time, |
| 463 ApplyInfo* apply_info) const { | 451 ApplyInfo* apply_info) const { |
| 464 if (!HasPermission(apply_info->extension_info_map, extension_id, | 452 if (!HasPermission(apply_info->extension_info_map, extension_id, |
| 465 apply_info->request_data.request, | 453 apply_info->request_data.request, |
| 466 apply_info->crosses_incognito)) | 454 apply_info->crosses_incognito)) |
| 467 return; | 455 return; |
| 468 if (GetStages() & apply_info->request_data.stage) { | 456 if (GetStages() & apply_info->request_data.stage) { |
| 469 LinkedPtrEventResponseDelta delta = CreateDelta( | 457 LinkedPtrEventResponseDelta delta = CreateDelta( |
| 470 apply_info->request_data, extension_id, extension_install_time); | 458 apply_info->request_data, extension_id, extension_install_time); |
| 471 if (delta.get()) { | 459 if (delta.get()) |
| 472 if (DeltaHasPermission(apply_info->extension_info_map, extension_id, | 460 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) { | 461 if (GetType() == WebRequestAction::ACTION_IGNORE_RULES) { |
| 479 const WebRequestIgnoreRulesAction* ignore_action = | 462 const WebRequestIgnoreRulesAction* ignore_action = |
| 480 static_cast<const WebRequestIgnoreRulesAction*>(this); | 463 static_cast<const WebRequestIgnoreRulesAction*>(this); |
| 481 if (!ignore_action->ignore_tag().empty()) | 464 if (!ignore_action->ignore_tag().empty()) |
| 482 apply_info->ignored_tags->insert(ignore_action->ignore_tag()); | 465 apply_info->ignored_tags->insert(ignore_action->ignore_tag()); |
| 483 } | 466 } |
| 484 } | 467 } |
| 485 } | 468 } |
| 486 | 469 |
| 487 | 470 |
| 488 // | 471 // |
| 489 // WebRequestCancelAction | 472 // WebRequestCancelAction |
| 490 // | 473 // |
| 491 | 474 |
| 492 WebRequestCancelAction::WebRequestCancelAction() {} | 475 WebRequestCancelAction::WebRequestCancelAction() |
| 476 : WebRequestAction(STRATEGY_NONE) {} |
| 493 | 477 |
| 494 WebRequestCancelAction::~WebRequestCancelAction() {} | 478 WebRequestCancelAction::~WebRequestCancelAction() {} |
| 495 | 479 |
| 496 int WebRequestCancelAction::GetStages() const { | 480 int WebRequestCancelAction::GetStages() const { |
| 497 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | | 481 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | |
| 498 ON_AUTH_REQUIRED; | 482 ON_AUTH_REQUIRED; |
| 499 } | 483 } |
| 500 | 484 |
| 501 WebRequestAction::Type WebRequestCancelAction::GetType() const { | 485 WebRequestAction::Type WebRequestCancelAction::GetType() const { |
| 502 return WebRequestAction::ACTION_CANCEL_REQUEST; | 486 return WebRequestAction::ACTION_CANCEL_REQUEST; |
| 503 } | 487 } |
| 504 | 488 |
| 505 WebRequestAction::HostPermissionsStrategy | |
| 506 WebRequestCancelAction::GetHostPermissionsStrategy() const { | |
| 507 return WebRequestAction::STRATEGY_NONE; | |
| 508 } | |
| 509 | |
| 510 LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta( | 489 LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta( |
| 511 const WebRequestData& request_data, | 490 const WebRequestData& request_data, |
| 512 const std::string& extension_id, | 491 const std::string& extension_id, |
| 513 const base::Time& extension_install_time) const { | 492 const base::Time& extension_install_time) const { |
| 514 CHECK(request_data.stage & GetStages()); | 493 CHECK(request_data.stage & GetStages()); |
| 515 LinkedPtrEventResponseDelta result( | 494 LinkedPtrEventResponseDelta result( |
| 516 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 495 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 517 result->cancel = true; | 496 result->cancel = true; |
| 518 return result; | 497 return result; |
| 519 } | 498 } |
| 520 | 499 |
| 521 // | 500 // |
| 522 // WebRequestRedirectAction | 501 // WebRequestRedirectAction |
| 523 // | 502 // |
| 524 | 503 |
| 525 WebRequestRedirectAction::WebRequestRedirectAction(const GURL& redirect_url) | 504 WebRequestRedirectAction::WebRequestRedirectAction(const GURL& redirect_url) |
| 526 : redirect_url_(redirect_url) {} | 505 : redirect_url_(redirect_url) {} |
| 527 | 506 |
| 528 WebRequestRedirectAction::~WebRequestRedirectAction() {} | 507 WebRequestRedirectAction::~WebRequestRedirectAction() {} |
| 529 | 508 |
| 530 int WebRequestRedirectAction::GetStages() const { | 509 int WebRequestRedirectAction::GetStages() const { |
| 531 return ON_BEFORE_REQUEST; | 510 return ON_BEFORE_REQUEST; |
| 532 } | 511 } |
| 533 | 512 |
| 534 WebRequestAction::Type WebRequestRedirectAction::GetType() const { | 513 WebRequestAction::Type WebRequestRedirectAction::GetType() const { |
| 535 return WebRequestAction::ACTION_REDIRECT_REQUEST; | 514 return WebRequestAction::ACTION_REDIRECT_REQUEST; |
| 536 } | 515 } |
| 537 | 516 |
| 538 WebRequestAction::HostPermissionsStrategy | |
| 539 WebRequestRedirectAction::GetHostPermissionsStrategy() const { | |
| 540 return WebRequestAction::STRATEGY_ALLOW_SAME_DOMAIN; | |
| 541 } | |
| 542 | |
| 543 LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta( | 517 LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta( |
| 544 const WebRequestData& request_data, | 518 const WebRequestData& request_data, |
| 545 const std::string& extension_id, | 519 const std::string& extension_id, |
| 546 const base::Time& extension_install_time) const { | 520 const base::Time& extension_install_time) const { |
| 547 CHECK(request_data.stage & GetStages()); | 521 CHECK(request_data.stage & GetStages()); |
| 548 if (request_data.request->url() == redirect_url_) | 522 if (request_data.request->url() == redirect_url_) |
| 549 return LinkedPtrEventResponseDelta(NULL); | 523 return LinkedPtrEventResponseDelta(NULL); |
| 550 LinkedPtrEventResponseDelta result( | 524 LinkedPtrEventResponseDelta result( |
| 551 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 525 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 552 result->new_url = redirect_url_; | 526 result->new_url = redirect_url_; |
| 553 return result; | 527 return result; |
| 554 } | 528 } |
| 555 | 529 |
| 556 // | 530 // |
| 557 // WebRequestRedirectToTransparentImageAction | 531 // WebRequestRedirectToTransparentImageAction |
| 558 // | 532 // |
| 559 | 533 |
| 560 WebRequestRedirectToTransparentImageAction:: | 534 WebRequestRedirectToTransparentImageAction:: |
| 561 WebRequestRedirectToTransparentImageAction() {} | 535 WebRequestRedirectToTransparentImageAction() |
| 536 : WebRequestAction(STRATEGY_NONE) {} |
| 562 | 537 |
| 563 WebRequestRedirectToTransparentImageAction:: | 538 WebRequestRedirectToTransparentImageAction:: |
| 564 ~WebRequestRedirectToTransparentImageAction() {} | 539 ~WebRequestRedirectToTransparentImageAction() {} |
| 565 | 540 |
| 566 int WebRequestRedirectToTransparentImageAction::GetStages() const { | 541 int WebRequestRedirectToTransparentImageAction::GetStages() const { |
| 567 return ON_BEFORE_REQUEST; | 542 return ON_BEFORE_REQUEST; |
| 568 } | 543 } |
| 569 | 544 |
| 570 WebRequestAction::Type | 545 WebRequestAction::Type |
| 571 WebRequestRedirectToTransparentImageAction::GetType() const { | 546 WebRequestRedirectToTransparentImageAction::GetType() const { |
| 572 return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE; | 547 return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE; |
| 573 } | 548 } |
| 574 | 549 |
| 575 WebRequestAction::HostPermissionsStrategy | |
| 576 WebRequestRedirectToTransparentImageAction::GetHostPermissionsStrategy() const { | |
| 577 return WebRequestAction::STRATEGY_NONE; | |
| 578 } | |
| 579 | |
| 580 LinkedPtrEventResponseDelta | 550 LinkedPtrEventResponseDelta |
| 581 WebRequestRedirectToTransparentImageAction::CreateDelta( | 551 WebRequestRedirectToTransparentImageAction::CreateDelta( |
| 582 const WebRequestData& request_data, | 552 const WebRequestData& request_data, |
| 583 const std::string& extension_id, | 553 const std::string& extension_id, |
| 584 const base::Time& extension_install_time) const { | 554 const base::Time& extension_install_time) const { |
| 585 CHECK(request_data.stage & GetStages()); | 555 CHECK(request_data.stage & GetStages()); |
| 586 LinkedPtrEventResponseDelta result( | 556 LinkedPtrEventResponseDelta result( |
| 587 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 557 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 588 result->new_url = GURL(kTransparentImageUrl); | 558 result->new_url = GURL(kTransparentImageUrl); |
| 589 return result; | 559 return result; |
| 590 } | 560 } |
| 591 | 561 |
| 592 // | 562 // |
| 593 // WebRequestRedirectToEmptyDocumentAction | 563 // WebRequestRedirectToEmptyDocumentAction |
| 594 // | 564 // |
| 595 | 565 |
| 596 WebRequestRedirectToEmptyDocumentAction:: | 566 WebRequestRedirectToEmptyDocumentAction:: |
| 597 WebRequestRedirectToEmptyDocumentAction() {} | 567 WebRequestRedirectToEmptyDocumentAction() |
| 568 : WebRequestAction(STRATEGY_NONE) {} |
| 598 | 569 |
| 599 WebRequestRedirectToEmptyDocumentAction:: | 570 WebRequestRedirectToEmptyDocumentAction:: |
| 600 ~WebRequestRedirectToEmptyDocumentAction() {} | 571 ~WebRequestRedirectToEmptyDocumentAction() {} |
| 601 | 572 |
| 602 int WebRequestRedirectToEmptyDocumentAction::GetStages() const { | 573 int WebRequestRedirectToEmptyDocumentAction::GetStages() const { |
| 603 return ON_BEFORE_REQUEST; | 574 return ON_BEFORE_REQUEST; |
| 604 } | 575 } |
| 605 | 576 |
| 606 WebRequestAction::Type | 577 WebRequestAction::Type |
| 607 WebRequestRedirectToEmptyDocumentAction::GetType() const { | 578 WebRequestRedirectToEmptyDocumentAction::GetType() const { |
| 608 return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT; | 579 return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT; |
| 609 } | 580 } |
| 610 | 581 |
| 611 WebRequestAction::HostPermissionsStrategy | |
| 612 WebRequestRedirectToEmptyDocumentAction::GetHostPermissionsStrategy() const { | |
| 613 return WebRequestAction::STRATEGY_NONE; | |
| 614 } | |
| 615 | |
| 616 LinkedPtrEventResponseDelta | 582 LinkedPtrEventResponseDelta |
| 617 WebRequestRedirectToEmptyDocumentAction::CreateDelta( | 583 WebRequestRedirectToEmptyDocumentAction::CreateDelta( |
| 618 const WebRequestData& request_data, | 584 const WebRequestData& request_data, |
| 619 const std::string& extension_id, | 585 const std::string& extension_id, |
| 620 const base::Time& extension_install_time) const { | 586 const base::Time& extension_install_time) const { |
| 621 CHECK(request_data.stage & GetStages()); | 587 CHECK(request_data.stage & GetStages()); |
| 622 LinkedPtrEventResponseDelta result( | 588 LinkedPtrEventResponseDelta result( |
| 623 new helpers::EventResponseDelta(extension_id, extension_install_time)); | 589 new helpers::EventResponseDelta(extension_id, extension_install_time)); |
| 624 result->new_url = GURL(kEmptyDocumentUrl); | 590 result->new_url = GURL(kEmptyDocumentUrl); |
| 625 return result; | 591 return result; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 } | 657 } |
| 692 | 658 |
| 693 int WebRequestRedirectByRegExAction::GetStages() const { | 659 int WebRequestRedirectByRegExAction::GetStages() const { |
| 694 return ON_BEFORE_REQUEST; | 660 return ON_BEFORE_REQUEST; |
| 695 } | 661 } |
| 696 | 662 |
| 697 WebRequestAction::Type WebRequestRedirectByRegExAction::GetType() const { | 663 WebRequestAction::Type WebRequestRedirectByRegExAction::GetType() const { |
| 698 return WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT; | 664 return WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT; |
| 699 } | 665 } |
| 700 | 666 |
| 701 WebRequestAction::HostPermissionsStrategy | |
| 702 WebRequestRedirectByRegExAction::GetHostPermissionsStrategy() const { | |
| 703 return WebRequestAction::STRATEGY_ALLOW_SAME_DOMAIN; | |
| 704 } | |
| 705 | |
| 706 LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta( | 667 LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta( |
| 707 const WebRequestData& request_data, | 668 const WebRequestData& request_data, |
| 708 const std::string& extension_id, | 669 const std::string& extension_id, |
| 709 const base::Time& extension_install_time) const { | 670 const base::Time& extension_install_time) const { |
| 710 CHECK(request_data.stage & GetStages()); | 671 CHECK(request_data.stage & GetStages()); |
| 711 CHECK(from_pattern_.get()); | 672 CHECK(from_pattern_.get()); |
| 712 | 673 |
| 713 const std::string& old_url = request_data.request->url().spec(); | 674 const std::string& old_url = request_data.request->url().spec(); |
| 714 std::string new_url = old_url; | 675 std::string new_url = old_url; |
| 715 if (!RE2::Replace(&new_url, *from_pattern_, to_pattern_) || | 676 if (!RE2::Replace(&new_url, *from_pattern_, to_pattern_) || |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 885 return result; | 846 return result; |
| 886 } | 847 } |
| 887 | 848 |
| 888 // | 849 // |
| 889 // WebRequestIgnoreRulesAction | 850 // WebRequestIgnoreRulesAction |
| 890 // | 851 // |
| 891 | 852 |
| 892 WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction( | 853 WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction( |
| 893 int minimum_priority, | 854 int minimum_priority, |
| 894 const std::string& ignore_tag) | 855 const std::string& ignore_tag) |
| 895 : minimum_priority_(minimum_priority), | 856 : WebRequestAction(STRATEGY_NONE), |
| 896 ignore_tag_(ignore_tag) { | 857 minimum_priority_(minimum_priority), |
| 897 } | 858 ignore_tag_(ignore_tag) {} |
| 898 | 859 |
| 899 WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {} | 860 WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {} |
| 900 | 861 |
| 901 int WebRequestIgnoreRulesAction::GetStages() const { | 862 int WebRequestIgnoreRulesAction::GetStages() const { |
| 902 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | | 863 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | |
| 903 ON_AUTH_REQUIRED; | 864 ON_AUTH_REQUIRED; |
| 904 } | 865 } |
| 905 | 866 |
| 906 WebRequestAction::Type WebRequestIgnoreRulesAction::GetType() const { | 867 WebRequestAction::Type WebRequestIgnoreRulesAction::GetType() const { |
| 907 return WebRequestAction::ACTION_IGNORE_RULES; | 868 return WebRequestAction::ACTION_IGNORE_RULES; |
| 908 } | 869 } |
| 909 | 870 |
| 910 int WebRequestIgnoreRulesAction::GetMinimumPriority() const { | 871 int WebRequestIgnoreRulesAction::GetMinimumPriority() const { |
| 911 return minimum_priority_; | 872 return minimum_priority_; |
| 912 } | 873 } |
| 913 | 874 |
| 914 WebRequestAction::HostPermissionsStrategy | |
| 915 WebRequestIgnoreRulesAction::GetHostPermissionsStrategy() const { | |
| 916 return WebRequestAction::STRATEGY_NONE; | |
| 917 } | |
| 918 | |
| 919 LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta( | 875 LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta( |
| 920 const WebRequestData& request_data, | 876 const WebRequestData& request_data, |
| 921 const std::string& extension_id, | 877 const std::string& extension_id, |
| 922 const base::Time& extension_install_time) const { | 878 const base::Time& extension_install_time) const { |
| 923 CHECK(request_data.stage & GetStages()); | 879 CHECK(request_data.stage & GetStages()); |
| 924 return LinkedPtrEventResponseDelta(NULL); | 880 return LinkedPtrEventResponseDelta(NULL); |
| 925 } | 881 } |
| 926 | 882 |
| 927 // | 883 // |
| 928 // WebRequestRequestCookieAction | 884 // WebRequestRequestCookieAction |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 response_cookie_modification_); | 945 response_cookie_modification_); |
| 990 return result; | 946 return result; |
| 991 } | 947 } |
| 992 | 948 |
| 993 // | 949 // |
| 994 // WebRequestSendMessageToExtensionAction | 950 // WebRequestSendMessageToExtensionAction |
| 995 // | 951 // |
| 996 | 952 |
| 997 WebRequestSendMessageToExtensionAction::WebRequestSendMessageToExtensionAction( | 953 WebRequestSendMessageToExtensionAction::WebRequestSendMessageToExtensionAction( |
| 998 const std::string& message) | 954 const std::string& message) |
| 999 : message_(message) { | 955 : WebRequestAction(STRATEGY_HOST), message_(message) {} |
| 1000 } | |
| 1001 | 956 |
| 1002 WebRequestSendMessageToExtensionAction:: | 957 WebRequestSendMessageToExtensionAction:: |
| 1003 ~WebRequestSendMessageToExtensionAction() {} | 958 ~WebRequestSendMessageToExtensionAction() {} |
| 1004 | 959 |
| 1005 int WebRequestSendMessageToExtensionAction::GetStages() const { | 960 int WebRequestSendMessageToExtensionAction::GetStages() const { |
| 1006 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | | 961 return ON_BEFORE_REQUEST | ON_BEFORE_SEND_HEADERS | ON_HEADERS_RECEIVED | |
| 1007 ON_AUTH_REQUIRED; | 962 ON_AUTH_REQUIRED; |
| 1008 } | 963 } |
| 1009 | 964 |
| 1010 WebRequestAction::Type WebRequestSendMessageToExtensionAction::GetType() const { | 965 WebRequestAction::Type WebRequestSendMessageToExtensionAction::GetType() const { |
| 1011 return WebRequestAction::ACTION_SEND_MESSAGE_TO_EXTENSION; | 966 return WebRequestAction::ACTION_SEND_MESSAGE_TO_EXTENSION; |
| 1012 } | 967 } |
| 1013 | 968 |
| 1014 LinkedPtrEventResponseDelta WebRequestSendMessageToExtensionAction::CreateDelta( | 969 LinkedPtrEventResponseDelta WebRequestSendMessageToExtensionAction::CreateDelta( |
| 1015 const WebRequestData& request_data, | 970 const WebRequestData& request_data, |
| 1016 const std::string& extension_id, | 971 const std::string& extension_id, |
| 1017 const base::Time& extension_install_time) const { | 972 const base::Time& extension_install_time) const { |
| 1018 CHECK(request_data.stage & GetStages()); | 973 CHECK(request_data.stage & GetStages()); |
| 1019 LinkedPtrEventResponseDelta result( | 974 LinkedPtrEventResponseDelta result( |
| 1020 new extension_web_request_api_helpers::EventResponseDelta( | 975 new extension_web_request_api_helpers::EventResponseDelta( |
| 1021 extension_id, extension_install_time)); | 976 extension_id, extension_install_time)); |
| 1022 result->messages_to_extension.insert(message_); | 977 result->messages_to_extension.insert(message_); |
| 1023 return result; | 978 return result; |
| 1024 } | 979 } |
| 1025 | 980 |
| 1026 } // namespace extensions | 981 } // namespace extensions |
| OLD | NEW |