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

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

Issue 14358004: Almost all actions in Declarative Web Request require all_urls host permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Without error messages yet Created 7 years, 8 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"
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698