| 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 "extensions/browser/api/web_request/web_request_api.h" | 5 #include "extensions/browser/api/web_request/web_request_api.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 int extra_info_spec) { | 569 int extra_info_spec) { |
| 570 std::unique_ptr<WebRequestEventDetails> event_details( | 570 std::unique_ptr<WebRequestEventDetails> event_details( |
| 571 new WebRequestEventDetails(request, extra_info_spec)); | 571 new WebRequestEventDetails(request, extra_info_spec)); |
| 572 | 572 |
| 573 return event_details; | 573 return event_details; |
| 574 } | 574 } |
| 575 | 575 |
| 576 int ExtensionWebRequestEventRouter::OnBeforeRequest( | 576 int ExtensionWebRequestEventRouter::OnBeforeRequest( |
| 577 void* browser_context, | 577 void* browser_context, |
| 578 const InfoMap* extension_info_map, | 578 const InfoMap* extension_info_map, |
| 579 ExtensionNavigationUIData* navigation_ui_data, | |
| 580 net::URLRequest* request, | 579 net::URLRequest* request, |
| 581 const net::CompletionCallback& callback, | 580 const net::CompletionCallback& callback, |
| 582 GURL* new_url) { | 581 GURL* new_url) { |
| 582 ExtensionNavigationUIData* navigation_ui_data = |
| 583 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 583 if (ShouldHideEvent(browser_context, extension_info_map, request, | 584 if (ShouldHideEvent(browser_context, extension_info_map, request, |
| 584 navigation_ui_data)) { | 585 navigation_ui_data)) { |
| 585 return net::OK; | 586 return net::OK; |
| 586 } | 587 } |
| 587 | 588 |
| 588 if (IsPageLoad(request)) | 589 if (IsPageLoad(request)) |
| 589 NotifyPageLoad(); | 590 NotifyPageLoad(); |
| 590 | 591 |
| 591 request_time_tracker_->LogRequestStartTime(request->identifier(), | 592 request_time_tracker_->LogRequestStartTime(request->identifier(), |
| 592 base::Time::Now(), | 593 base::Time::Now(), |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 // to modify the request and we can respond synchronously. | 633 // to modify the request and we can respond synchronously. |
| 633 return ExecuteDeltas(browser_context, request->identifier(), | 634 return ExecuteDeltas(browser_context, request->identifier(), |
| 634 navigation_ui_data, false /* call_callback*/); | 635 navigation_ui_data, false /* call_callback*/); |
| 635 } | 636 } |
| 636 return net::ERR_IO_PENDING; | 637 return net::ERR_IO_PENDING; |
| 637 } | 638 } |
| 638 | 639 |
| 639 int ExtensionWebRequestEventRouter::OnBeforeSendHeaders( | 640 int ExtensionWebRequestEventRouter::OnBeforeSendHeaders( |
| 640 void* browser_context, | 641 void* browser_context, |
| 641 const InfoMap* extension_info_map, | 642 const InfoMap* extension_info_map, |
| 642 ExtensionNavigationUIData* navigation_ui_data, | |
| 643 net::URLRequest* request, | 643 net::URLRequest* request, |
| 644 const net::CompletionCallback& callback, | 644 const net::CompletionCallback& callback, |
| 645 net::HttpRequestHeaders* headers) { | 645 net::HttpRequestHeaders* headers) { |
| 646 ExtensionNavigationUIData* navigation_ui_data = |
| 647 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 646 if (ShouldHideEvent(browser_context, extension_info_map, request, | 648 if (ShouldHideEvent(browser_context, extension_info_map, request, |
| 647 navigation_ui_data)) { | 649 navigation_ui_data)) { |
| 648 return net::OK; | 650 return net::OK; |
| 649 } | 651 } |
| 650 | 652 |
| 651 bool initialize_blocked_requests = false; | 653 bool initialize_blocked_requests = false; |
| 652 | 654 |
| 653 initialize_blocked_requests |= ProcessDeclarativeRules( | 655 initialize_blocked_requests |= ProcessDeclarativeRules( |
| 654 browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent, | 656 browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent, |
| 655 request, navigation_ui_data, ON_BEFORE_SEND_HEADERS, NULL); | 657 request, navigation_ui_data, ON_BEFORE_SEND_HEADERS, NULL); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 685 // to modify the request and we can respond synchronously. | 687 // to modify the request and we can respond synchronously. |
| 686 return ExecuteDeltas(browser_context, request->identifier(), | 688 return ExecuteDeltas(browser_context, request->identifier(), |
| 687 navigation_ui_data, false /* call_callback*/); | 689 navigation_ui_data, false /* call_callback*/); |
| 688 } | 690 } |
| 689 return net::ERR_IO_PENDING; | 691 return net::ERR_IO_PENDING; |
| 690 } | 692 } |
| 691 | 693 |
| 692 void ExtensionWebRequestEventRouter::OnSendHeaders( | 694 void ExtensionWebRequestEventRouter::OnSendHeaders( |
| 693 void* browser_context, | 695 void* browser_context, |
| 694 const InfoMap* extension_info_map, | 696 const InfoMap* extension_info_map, |
| 695 ExtensionNavigationUIData* navigation_ui_data, | |
| 696 net::URLRequest* request, | 697 net::URLRequest* request, |
| 697 const net::HttpRequestHeaders& headers) { | 698 const net::HttpRequestHeaders& headers) { |
| 699 ExtensionNavigationUIData* navigation_ui_data = |
| 700 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 698 if (ShouldHideEvent(browser_context, extension_info_map, request, | 701 if (ShouldHideEvent(browser_context, extension_info_map, request, |
| 699 navigation_ui_data)) | 702 navigation_ui_data)) |
| 700 return; | 703 return; |
| 701 | 704 |
| 702 if (GetAndSetSignaled(request->identifier(), kOnSendHeaders)) | 705 if (GetAndSetSignaled(request->identifier(), kOnSendHeaders)) |
| 703 return; | 706 return; |
| 704 | 707 |
| 705 ClearSignaled(request->identifier(), kOnBeforeRedirect); | 708 ClearSignaled(request->identifier(), kOnBeforeRedirect); |
| 706 | 709 |
| 707 int extra_info_spec = 0; | 710 int extra_info_spec = 0; |
| 708 RawListeners listeners = GetMatchingListeners( | 711 RawListeners listeners = GetMatchingListeners( |
| 709 browser_context, extension_info_map, navigation_ui_data, | 712 browser_context, extension_info_map, navigation_ui_data, |
| 710 keys::kOnSendHeadersEvent, request, &extra_info_spec); | 713 keys::kOnSendHeadersEvent, request, &extra_info_spec); |
| 711 if (listeners.empty()) | 714 if (listeners.empty()) |
| 712 return; | 715 return; |
| 713 | 716 |
| 714 std::unique_ptr<WebRequestEventDetails> event_details( | 717 std::unique_ptr<WebRequestEventDetails> event_details( |
| 715 CreateEventDetails(request, extra_info_spec)); | 718 CreateEventDetails(request, extra_info_spec)); |
| 716 event_details->SetRequestHeaders(headers); | 719 event_details->SetRequestHeaders(headers); |
| 717 | 720 |
| 718 DispatchEvent(browser_context, request, listeners, navigation_ui_data, | 721 DispatchEvent(browser_context, request, listeners, navigation_ui_data, |
| 719 std::move(event_details)); | 722 std::move(event_details)); |
| 720 } | 723 } |
| 721 | 724 |
| 722 int ExtensionWebRequestEventRouter::OnHeadersReceived( | 725 int ExtensionWebRequestEventRouter::OnHeadersReceived( |
| 723 void* browser_context, | 726 void* browser_context, |
| 724 const InfoMap* extension_info_map, | 727 const InfoMap* extension_info_map, |
| 725 ExtensionNavigationUIData* navigation_ui_data, | |
| 726 net::URLRequest* request, | 728 net::URLRequest* request, |
| 727 const net::CompletionCallback& callback, | 729 const net::CompletionCallback& callback, |
| 728 const net::HttpResponseHeaders* original_response_headers, | 730 const net::HttpResponseHeaders* original_response_headers, |
| 729 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 731 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
| 730 GURL* allowed_unsafe_redirect_url) { | 732 GURL* allowed_unsafe_redirect_url) { |
| 733 ExtensionNavigationUIData* navigation_ui_data = |
| 734 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 731 if (ShouldHideEvent(browser_context, extension_info_map, request, | 735 if (ShouldHideEvent(browser_context, extension_info_map, request, |
| 732 navigation_ui_data)) { | 736 navigation_ui_data)) { |
| 733 return net::OK; | 737 return net::OK; |
| 734 } | 738 } |
| 735 | 739 |
| 736 bool initialize_blocked_requests = false; | 740 bool initialize_blocked_requests = false; |
| 737 | 741 |
| 738 initialize_blocked_requests |= ProcessDeclarativeRules( | 742 initialize_blocked_requests |= ProcessDeclarativeRules( |
| 739 browser_context, extension_info_map, keys::kOnHeadersReceivedEvent, | 743 browser_context, extension_info_map, keys::kOnHeadersReceivedEvent, |
| 740 request, navigation_ui_data, ON_HEADERS_RECEIVED, | 744 request, navigation_ui_data, ON_HEADERS_RECEIVED, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 return ExecuteDeltas(browser_context, request->identifier(), | 779 return ExecuteDeltas(browser_context, request->identifier(), |
| 776 navigation_ui_data, false /* call_callback*/); | 780 navigation_ui_data, false /* call_callback*/); |
| 777 } | 781 } |
| 778 return net::ERR_IO_PENDING; | 782 return net::ERR_IO_PENDING; |
| 779 } | 783 } |
| 780 | 784 |
| 781 net::NetworkDelegate::AuthRequiredResponse | 785 net::NetworkDelegate::AuthRequiredResponse |
| 782 ExtensionWebRequestEventRouter::OnAuthRequired( | 786 ExtensionWebRequestEventRouter::OnAuthRequired( |
| 783 void* browser_context, | 787 void* browser_context, |
| 784 const InfoMap* extension_info_map, | 788 const InfoMap* extension_info_map, |
| 785 ExtensionNavigationUIData* navigation_ui_data, | |
| 786 net::URLRequest* request, | 789 net::URLRequest* request, |
| 787 const net::AuthChallengeInfo& auth_info, | 790 const net::AuthChallengeInfo& auth_info, |
| 788 const net::NetworkDelegate::AuthCallback& callback, | 791 const net::NetworkDelegate::AuthCallback& callback, |
| 789 net::AuthCredentials* credentials) { | 792 net::AuthCredentials* credentials) { |
| 793 ExtensionNavigationUIData* navigation_ui_data = |
| 794 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 790 // No browser_context means that this is for authentication challenges in the | 795 // No browser_context means that this is for authentication challenges in the |
| 791 // system context. Skip in that case. Also skip sensitive requests. | 796 // system context. Skip in that case. Also skip sensitive requests. |
| 792 if (!browser_context || | 797 if (!browser_context || |
| 793 WebRequestPermissions::HideRequest(extension_info_map, request, | 798 WebRequestPermissions::HideRequest(extension_info_map, request, |
| 794 navigation_ui_data)) { | 799 navigation_ui_data)) { |
| 795 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 800 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
| 796 } | 801 } |
| 797 | 802 |
| 798 int extra_info_spec = 0; | 803 int extra_info_spec = 0; |
| 799 RawListeners listeners = GetMatchingListeners( | 804 RawListeners listeners = GetMatchingListeners( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 817 blocked_request.auth_credentials = credentials; | 822 blocked_request.auth_credentials = credentials; |
| 818 blocked_request.net_log = &request->net_log(); | 823 blocked_request.net_log = &request->net_log(); |
| 819 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING; | 824 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING; |
| 820 } | 825 } |
| 821 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 826 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
| 822 } | 827 } |
| 823 | 828 |
| 824 void ExtensionWebRequestEventRouter::OnBeforeRedirect( | 829 void ExtensionWebRequestEventRouter::OnBeforeRedirect( |
| 825 void* browser_context, | 830 void* browser_context, |
| 826 const InfoMap* extension_info_map, | 831 const InfoMap* extension_info_map, |
| 827 ExtensionNavigationUIData* navigation_ui_data, | |
| 828 net::URLRequest* request, | 832 net::URLRequest* request, |
| 829 const GURL& new_location) { | 833 const GURL& new_location) { |
| 834 ExtensionNavigationUIData* navigation_ui_data = |
| 835 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 830 if (ShouldHideEvent(browser_context, extension_info_map, request, | 836 if (ShouldHideEvent(browser_context, extension_info_map, request, |
| 831 navigation_ui_data)) { | 837 navigation_ui_data)) { |
| 832 return; | 838 return; |
| 833 } | 839 } |
| 834 | 840 |
| 835 if (GetAndSetSignaled(request->identifier(), kOnBeforeRedirect)) | 841 if (GetAndSetSignaled(request->identifier(), kOnBeforeRedirect)) |
| 836 return; | 842 return; |
| 837 | 843 |
| 838 ClearSignaled(request->identifier(), kOnBeforeRequest); | 844 ClearSignaled(request->identifier(), kOnBeforeRequest); |
| 839 ClearSignaled(request->identifier(), kOnBeforeSendHeaders); | 845 ClearSignaled(request->identifier(), kOnBeforeSendHeaders); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 853 event_details->SetResponseSource(request); | 859 event_details->SetResponseSource(request); |
| 854 event_details->SetString(keys::kRedirectUrlKey, new_location.spec()); | 860 event_details->SetString(keys::kRedirectUrlKey, new_location.spec()); |
| 855 | 861 |
| 856 DispatchEvent(browser_context, request, listeners, navigation_ui_data, | 862 DispatchEvent(browser_context, request, listeners, navigation_ui_data, |
| 857 std::move(event_details)); | 863 std::move(event_details)); |
| 858 } | 864 } |
| 859 | 865 |
| 860 void ExtensionWebRequestEventRouter::OnResponseStarted( | 866 void ExtensionWebRequestEventRouter::OnResponseStarted( |
| 861 void* browser_context, | 867 void* browser_context, |
| 862 const InfoMap* extension_info_map, | 868 const InfoMap* extension_info_map, |
| 863 ExtensionNavigationUIData* navigation_ui_data, | |
| 864 net::URLRequest* request, | 869 net::URLRequest* request, |
| 865 int net_error) { | 870 int net_error) { |
| 866 DCHECK_NE(net::ERR_IO_PENDING, net_error); | 871 DCHECK_NE(net::ERR_IO_PENDING, net_error); |
| 867 | 872 |
| 873 ExtensionNavigationUIData* navigation_ui_data = |
| 874 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 868 if (ShouldHideEvent(browser_context, extension_info_map, request, | 875 if (ShouldHideEvent(browser_context, extension_info_map, request, |
| 869 navigation_ui_data)) { | 876 navigation_ui_data)) { |
| 870 return; | 877 return; |
| 871 } | 878 } |
| 872 | 879 |
| 873 // OnResponseStarted is even triggered, when the request was cancelled. | 880 // OnResponseStarted is even triggered, when the request was cancelled. |
| 874 if (net_error != net::OK) | 881 if (net_error != net::OK) |
| 875 return; | 882 return; |
| 876 | 883 |
| 877 int extra_info_spec = 0; | 884 int extra_info_spec = 0; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 888 | 895 |
| 889 DispatchEvent(browser_context, request, listeners, navigation_ui_data, | 896 DispatchEvent(browser_context, request, listeners, navigation_ui_data, |
| 890 std::move(event_details)); | 897 std::move(event_details)); |
| 891 } | 898 } |
| 892 | 899 |
| 893 // Deprecated. | 900 // Deprecated. |
| 894 // TODO(maksims): Remove this. | 901 // TODO(maksims): Remove this. |
| 895 void ExtensionWebRequestEventRouter::OnResponseStarted( | 902 void ExtensionWebRequestEventRouter::OnResponseStarted( |
| 896 void* browser_context, | 903 void* browser_context, |
| 897 const InfoMap* extension_info_map, | 904 const InfoMap* extension_info_map, |
| 898 ExtensionNavigationUIData* navigation_ui_data, | |
| 899 net::URLRequest* request) { | 905 net::URLRequest* request) { |
| 900 OnResponseStarted(browser_context, extension_info_map, navigation_ui_data, | 906 OnResponseStarted(browser_context, extension_info_map, request, |
| 901 request, request->status().error()); | 907 request->status().error()); |
| 902 } | 908 } |
| 903 | 909 |
| 904 void ExtensionWebRequestEventRouter::OnCompleted( | 910 void ExtensionWebRequestEventRouter::OnCompleted( |
| 905 void* browser_context, | 911 void* browser_context, |
| 906 const InfoMap* extension_info_map, | 912 const InfoMap* extension_info_map, |
| 907 ExtensionNavigationUIData* navigation_ui_data, | |
| 908 net::URLRequest* request, | 913 net::URLRequest* request, |
| 909 int net_error) { | 914 int net_error) { |
| 915 ExtensionNavigationUIData* navigation_ui_data = |
| 916 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 910 // We hide events from the system context as well as sensitive requests. | 917 // We hide events from the system context as well as sensitive requests. |
| 911 // However, if the request first became sensitive after redirecting we have | 918 // However, if the request first became sensitive after redirecting we have |
| 912 // already signaled it and thus we have to signal the end of it. This is | 919 // already signaled it and thus we have to signal the end of it. This is |
| 913 // risk-free because the handler cannot modify the request now. | 920 // risk-free because the handler cannot modify the request now. |
| 914 if (!browser_context || | 921 if (!browser_context || |
| 915 (WebRequestPermissions::HideRequest(extension_info_map, request, | 922 (WebRequestPermissions::HideRequest(extension_info_map, request, |
| 916 navigation_ui_data) && | 923 navigation_ui_data) && |
| 917 !WasSignaled(*request))) { | 924 !WasSignaled(*request))) { |
| 918 return; | 925 return; |
| 919 } | 926 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 941 | 948 |
| 942 DispatchEvent(browser_context, request, listeners, navigation_ui_data, | 949 DispatchEvent(browser_context, request, listeners, navigation_ui_data, |
| 943 std::move(event_details)); | 950 std::move(event_details)); |
| 944 } | 951 } |
| 945 | 952 |
| 946 // Deprecated. | 953 // Deprecated. |
| 947 // TODO(maksims): Remove this. | 954 // TODO(maksims): Remove this. |
| 948 void ExtensionWebRequestEventRouter::OnCompleted( | 955 void ExtensionWebRequestEventRouter::OnCompleted( |
| 949 void* browser_context, | 956 void* browser_context, |
| 950 const InfoMap* extension_info_map, | 957 const InfoMap* extension_info_map, |
| 951 ExtensionNavigationUIData* navigation_ui_data, | |
| 952 net::URLRequest* request) { | 958 net::URLRequest* request) { |
| 953 OnCompleted(browser_context, extension_info_map, navigation_ui_data, request, | 959 OnCompleted(browser_context, extension_info_map, request, |
| 954 request->status().error()); | 960 request->status().error()); |
| 955 } | 961 } |
| 956 | 962 |
| 957 void ExtensionWebRequestEventRouter::OnErrorOccurred( | 963 void ExtensionWebRequestEventRouter::OnErrorOccurred( |
| 958 void* browser_context, | 964 void* browser_context, |
| 959 const InfoMap* extension_info_map, | 965 const InfoMap* extension_info_map, |
| 960 ExtensionNavigationUIData* navigation_ui_data, | |
| 961 net::URLRequest* request, | 966 net::URLRequest* request, |
| 962 bool started, | 967 bool started, |
| 963 int net_error) { | 968 int net_error) { |
| 969 ExtensionNavigationUIData* navigation_ui_data = |
| 970 ExtensionsBrowserClient::Get()->GetExtensionNavigationUIData(request); |
| 964 // We hide events from the system context as well as sensitive requests. | 971 // We hide events from the system context as well as sensitive requests. |
| 965 // However, if the request first became sensitive after redirecting we have | 972 // However, if the request first became sensitive after redirecting we have |
| 966 // already signaled it and thus we have to signal the end of it. This is | 973 // already signaled it and thus we have to signal the end of it. This is |
| 967 // risk-free because the handler cannot modify the request now. | 974 // risk-free because the handler cannot modify the request now. |
| 968 if (!browser_context || | 975 if (!browser_context || |
| 969 (WebRequestPermissions::HideRequest(extension_info_map, request, | 976 (WebRequestPermissions::HideRequest(extension_info_map, request, |
| 970 navigation_ui_data) && | 977 navigation_ui_data) && |
| 971 !WasSignaled(*request))) { | 978 !WasSignaled(*request))) { |
| 972 return; | 979 return; |
| 973 } | 980 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 997 event_details->SetBoolean(keys::kFromCache, request->was_cached()); | 1004 event_details->SetBoolean(keys::kFromCache, request->was_cached()); |
| 998 event_details->SetString(keys::kErrorKey, net::ErrorToString(net_error)); | 1005 event_details->SetString(keys::kErrorKey, net::ErrorToString(net_error)); |
| 999 | 1006 |
| 1000 DispatchEvent(browser_context, request, listeners, navigation_ui_data, | 1007 DispatchEvent(browser_context, request, listeners, navigation_ui_data, |
| 1001 std::move(event_details)); | 1008 std::move(event_details)); |
| 1002 } | 1009 } |
| 1003 | 1010 |
| 1004 void ExtensionWebRequestEventRouter::OnErrorOccurred( | 1011 void ExtensionWebRequestEventRouter::OnErrorOccurred( |
| 1005 void* browser_context, | 1012 void* browser_context, |
| 1006 const InfoMap* extension_info_map, | 1013 const InfoMap* extension_info_map, |
| 1007 ExtensionNavigationUIData* navigation_ui_data, | |
| 1008 net::URLRequest* request, | 1014 net::URLRequest* request, |
| 1009 bool started) { | 1015 bool started) { |
| 1010 OnErrorOccurred(browser_context, extension_info_map, navigation_ui_data, | 1016 OnErrorOccurred(browser_context, extension_info_map, request, started, |
| 1011 request, started, request->status().error()); | 1017 request->status().error()); |
| 1012 } | 1018 } |
| 1013 | 1019 |
| 1014 void ExtensionWebRequestEventRouter::OnURLRequestDestroyed( | 1020 void ExtensionWebRequestEventRouter::OnURLRequestDestroyed( |
| 1015 void* browser_context, | 1021 void* browser_context, |
| 1016 const net::URLRequest* request) { | 1022 const net::URLRequest* request) { |
| 1017 ClearPendingCallbacks(request); | 1023 ClearPendingCallbacks(request); |
| 1018 | 1024 |
| 1019 signaled_requests_.erase(request->identifier()); | 1025 signaled_requests_.erase(request->identifier()); |
| 1020 | 1026 |
| 1021 request_time_tracker_->LogRequestEndTime(request->identifier(), | 1027 request_time_tracker_->LogRequestEndTime(request->identifier(), |
| (...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2354 // Since EventListeners are segmented by browser_context, check that | 2360 // Since EventListeners are segmented by browser_context, check that |
| 2355 // last, as it is exceedingly unlikely to be different. | 2361 // last, as it is exceedingly unlikely to be different. |
| 2356 return extension_id == that.extension_id && | 2362 return extension_id == that.extension_id && |
| 2357 sub_event_name == that.sub_event_name && | 2363 sub_event_name == that.sub_event_name && |
| 2358 web_view_instance_id == that.web_view_instance_id && | 2364 web_view_instance_id == that.web_view_instance_id && |
| 2359 embedder_process_id == that.embedder_process_id && | 2365 embedder_process_id == that.embedder_process_id && |
| 2360 browser_context == that.browser_context; | 2366 browser_context == that.browser_context; |
| 2361 } | 2367 } |
| 2362 | 2368 |
| 2363 } // namespace extensions | 2369 } // namespace extensions |
| OLD | NEW |