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

Side by Side Diff: extensions/browser/api/web_request/web_request_api.cc

Issue 1902873002: Convert //extensions/browser/api from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 "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 <utility> 11 #include <utility>
11 #include <vector> 12 #include <vector>
12 13
13 #include "base/bind.h" 14 #include "base/bind.h"
14 #include "base/bind_helpers.h" 15 #include "base/bind_helpers.h"
15 #include "base/json/json_writer.h" 16 #include "base/json/json_writer.h"
16 #include "base/lazy_instance.h" 17 #include "base/lazy_instance.h"
17 #include "base/macros.h" 18 #include "base/macros.h"
18 #include "base/memory/scoped_ptr.h"
19 #include "base/metrics/histogram.h" 19 #include "base/metrics/histogram.h"
20 #include "base/strings/string_number_conversions.h" 20 #include "base/strings/string_number_conversions.h"
21 #include "base/strings/string_util.h" 21 #include "base/strings/string_util.h"
22 #include "base/strings/utf_string_conversions.h" 22 #include "base/strings/utf_string_conversions.h"
23 #include "base/time/time.h" 23 #include "base/time/time.h"
24 #include "base/values.h" 24 #include "base/values.h"
25 #include "content/public/browser/browser_thread.h" 25 #include "content/public/browser/browser_thread.h"
26 #include "content/public/browser/resource_request_info.h" 26 #include "content/public/browser/resource_request_info.h"
27 #include "content/public/browser/user_metrics.h" 27 #include "content/public/browser/user_metrics.h"
28 #include "content/public/common/child_process_host.h" 28 #include "content/public/common/child_process_host.h"
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 // |extension_id| identifies the extension that sends and receives the event. 227 // |extension_id| identifies the extension that sends and receives the event.
228 // |is_web_view_guest| indicates whether the action is for a <webview>. 228 // |is_web_view_guest| indicates whether the action is for a <webview>.
229 // |web_view_info| is a struct containing information about the <webview> 229 // |web_view_info| is a struct containing information about the <webview>
230 // embedder. 230 // embedder.
231 // |event_details| is passed to the event listener. 231 // |event_details| is passed to the event listener.
232 void SendOnMessageEventOnUI( 232 void SendOnMessageEventOnUI(
233 void* browser_context_id, 233 void* browser_context_id,
234 const std::string& extension_id, 234 const std::string& extension_id,
235 bool is_web_view_guest, 235 bool is_web_view_guest,
236 const WebViewRendererState::WebViewInfo& web_view_info, 236 const WebViewRendererState::WebViewInfo& web_view_info,
237 scoped_ptr<WebRequestEventDetails> event_details) { 237 std::unique_ptr<WebRequestEventDetails> event_details) {
238 DCHECK_CURRENTLY_ON(BrowserThread::UI); 238 DCHECK_CURRENTLY_ON(BrowserThread::UI);
239 239
240 content::BrowserContext* browser_context = 240 content::BrowserContext* browser_context =
241 reinterpret_cast<content::BrowserContext*>(browser_context_id); 241 reinterpret_cast<content::BrowserContext*>(browser_context_id);
242 if (!ExtensionsBrowserClient::Get()->IsValidContext(browser_context)) 242 if (!ExtensionsBrowserClient::Get()->IsValidContext(browser_context))
243 return; 243 return;
244 244
245 scoped_ptr<base::ListValue> event_args(new base::ListValue); 245 std::unique_ptr<base::ListValue> event_args(new base::ListValue);
246 event_details->DetermineFrameIdOnUI(); 246 event_details->DetermineFrameIdOnUI();
247 event_args->Append(event_details->GetAndClearDict()); 247 event_args->Append(event_details->GetAndClearDict());
248 248
249 EventRouter* event_router = EventRouter::Get(browser_context); 249 EventRouter* event_router = EventRouter::Get(browser_context);
250 250
251 EventFilteringInfo event_filtering_info; 251 EventFilteringInfo event_filtering_info;
252 252
253 events::HistogramValue histogram_value = events::UNKNOWN; 253 events::HistogramValue histogram_value = events::UNKNOWN;
254 std::string event_name; 254 std::string event_name;
255 // The instance ID uniquely identifies a <webview> instance within an embedder 255 // The instance ID uniquely identifies a <webview> instance within an embedder
256 // process. We use a filter here so that only event listeners for a particular 256 // process. We use a filter here so that only event listeners for a particular
257 // <webview> will fire. 257 // <webview> will fire.
258 if (is_web_view_guest) { 258 if (is_web_view_guest) {
259 event_filtering_info.SetInstanceID(web_view_info.instance_id); 259 event_filtering_info.SetInstanceID(web_view_info.instance_id);
260 histogram_value = events::WEB_VIEW_INTERNAL_ON_MESSAGE; 260 histogram_value = events::WEB_VIEW_INTERNAL_ON_MESSAGE;
261 event_name = webview::kEventMessage; 261 event_name = webview::kEventMessage;
262 } else { 262 } else {
263 histogram_value = events::DECLARATIVE_WEB_REQUEST_ON_MESSAGE; 263 histogram_value = events::DECLARATIVE_WEB_REQUEST_ON_MESSAGE;
264 event_name = declarative_keys::kOnMessage; 264 event_name = declarative_keys::kOnMessage;
265 } 265 }
266 266
267 scoped_ptr<Event> event(new Event( 267 std::unique_ptr<Event> event(new Event(
268 histogram_value, event_name, std::move(event_args), browser_context, 268 histogram_value, event_name, std::move(event_args), browser_context,
269 GURL(), EventRouter::USER_GESTURE_UNKNOWN, event_filtering_info)); 269 GURL(), EventRouter::USER_GESTURE_UNKNOWN, event_filtering_info));
270 event_router->DispatchEventToExtension(extension_id, std::move(event)); 270 event_router->DispatchEventToExtension(extension_id, std::move(event));
271 } 271 }
272 272
273 void RemoveEventListenerOnIOThread( 273 void RemoveEventListenerOnIOThread(
274 void* browser_context, 274 void* browser_context,
275 const std::string& extension_id, 275 const std::string& extension_id,
276 const std::string& sub_event_name, 276 const std::string& sub_event_name,
277 int embedder_process_id, 277 int embedder_process_id,
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 void* browser_context, 587 void* browser_context,
588 int rules_registry_id, 588 int rules_registry_id,
589 scoped_refptr<WebRequestRulesRegistry> rules_registry) { 589 scoped_refptr<WebRequestRulesRegistry> rules_registry) {
590 RulesRegistryKey key(browser_context, rules_registry_id); 590 RulesRegistryKey key(browser_context, rules_registry_id);
591 if (rules_registry.get()) 591 if (rules_registry.get())
592 rules_registries_[key] = rules_registry; 592 rules_registries_[key] = rules_registry;
593 else 593 else
594 rules_registries_.erase(key); 594 rules_registries_.erase(key);
595 } 595 }
596 596
597 scoped_ptr<WebRequestEventDetails> 597 std::unique_ptr<WebRequestEventDetails>
598 ExtensionWebRequestEventRouter::CreateEventDetails( 598 ExtensionWebRequestEventRouter::CreateEventDetails(
599 const net::URLRequest* request, 599 const net::URLRequest* request,
600 int extra_info_spec) { 600 int extra_info_spec) {
601 scoped_ptr<WebRequestEventDetails> event_details( 601 std::unique_ptr<WebRequestEventDetails> event_details(
602 new WebRequestEventDetails(request, extra_info_spec)); 602 new WebRequestEventDetails(request, extra_info_spec));
603 603
604 int render_frame_id = -1; 604 int render_frame_id = -1;
605 int render_process_id = -1; 605 int render_process_id = -1;
606 int tab_id = -1; 606 int tab_id = -1;
607 ExtensionApiFrameIdMap::FrameData frame_data; 607 ExtensionApiFrameIdMap::FrameData frame_data;
608 if (content::ResourceRequestInfo::GetRenderFrameForRequest( 608 if (content::ResourceRequestInfo::GetRenderFrameForRequest(
609 request, &render_process_id, &render_frame_id) && 609 request, &render_process_id, &render_frame_id) &&
610 ExtensionApiFrameIdMap::Get()->GetCachedFrameDataOnIO( 610 ExtensionApiFrameIdMap::Get()->GetCachedFrameDataOnIO(
611 render_process_id, render_frame_id, &frame_data)) { 611 render_process_id, render_frame_id, &frame_data)) {
(...skipping 27 matching lines...) Expand all
639 ProcessDeclarativeRules(browser_context, extension_info_map, 639 ProcessDeclarativeRules(browser_context, extension_info_map,
640 web_request::OnBeforeRequest::kEventName, request, 640 web_request::OnBeforeRequest::kEventName, request,
641 ON_BEFORE_REQUEST, NULL); 641 ON_BEFORE_REQUEST, NULL);
642 642
643 int extra_info_spec = 0; 643 int extra_info_spec = 0;
644 EventListeners listeners = GetMatchingListeners( 644 EventListeners listeners = GetMatchingListeners(
645 browser_context, extension_info_map, 645 browser_context, extension_info_map,
646 web_request::OnBeforeRequest::kEventName, request, &extra_info_spec); 646 web_request::OnBeforeRequest::kEventName, request, &extra_info_spec);
647 if (!listeners.empty() && 647 if (!listeners.empty() &&
648 !GetAndSetSignaled(request->identifier(), kOnBeforeRequest)) { 648 !GetAndSetSignaled(request->identifier(), kOnBeforeRequest)) {
649 scoped_ptr<WebRequestEventDetails> event_details( 649 std::unique_ptr<WebRequestEventDetails> event_details(
650 CreateEventDetails(request, extra_info_spec)); 650 CreateEventDetails(request, extra_info_spec));
651 event_details->SetRequestBody(request); 651 event_details->SetRequestBody(request);
652 652
653 initialize_blocked_requests |= DispatchEvent( 653 initialize_blocked_requests |= DispatchEvent(
654 browser_context, request, listeners, std::move(event_details)); 654 browser_context, request, listeners, std::move(event_details));
655 } 655 }
656 656
657 if (!initialize_blocked_requests) 657 if (!initialize_blocked_requests)
658 return net::OK; // Nobody saw a reason for modifying the request. 658 return net::OK; // Nobody saw a reason for modifying the request.
659 659
(...skipping 28 matching lines...) Expand all
688 initialize_blocked_requests |= ProcessDeclarativeRules( 688 initialize_blocked_requests |= ProcessDeclarativeRules(
689 browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent, 689 browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent,
690 request, ON_BEFORE_SEND_HEADERS, NULL); 690 request, ON_BEFORE_SEND_HEADERS, NULL);
691 691
692 int extra_info_spec = 0; 692 int extra_info_spec = 0;
693 EventListeners listeners = GetMatchingListeners( 693 EventListeners listeners = GetMatchingListeners(
694 browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent, 694 browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent,
695 request, &extra_info_spec); 695 request, &extra_info_spec);
696 if (!listeners.empty() && 696 if (!listeners.empty() &&
697 !GetAndSetSignaled(request->identifier(), kOnBeforeSendHeaders)) { 697 !GetAndSetSignaled(request->identifier(), kOnBeforeSendHeaders)) {
698 scoped_ptr<WebRequestEventDetails> event_details( 698 std::unique_ptr<WebRequestEventDetails> event_details(
699 CreateEventDetails(request, extra_info_spec)); 699 CreateEventDetails(request, extra_info_spec));
700 event_details->SetRequestHeaders(*headers); 700 event_details->SetRequestHeaders(*headers);
701 701
702 initialize_blocked_requests |= DispatchEvent( 702 initialize_blocked_requests |= DispatchEvent(
703 browser_context, request, listeners, std::move(event_details)); 703 browser_context, request, listeners, std::move(event_details));
704 } 704 }
705 705
706 if (!initialize_blocked_requests) 706 if (!initialize_blocked_requests)
707 return net::OK; // Nobody saw a reason for modifying the request. 707 return net::OK; // Nobody saw a reason for modifying the request.
708 708
(...skipping 27 matching lines...) Expand all
736 736
737 ClearSignaled(request->identifier(), kOnBeforeRedirect); 737 ClearSignaled(request->identifier(), kOnBeforeRedirect);
738 738
739 int extra_info_spec = 0; 739 int extra_info_spec = 0;
740 EventListeners listeners = GetMatchingListeners( 740 EventListeners listeners = GetMatchingListeners(
741 browser_context, extension_info_map, keys::kOnSendHeadersEvent, request, 741 browser_context, extension_info_map, keys::kOnSendHeadersEvent, request,
742 &extra_info_spec); 742 &extra_info_spec);
743 if (listeners.empty()) 743 if (listeners.empty())
744 return; 744 return;
745 745
746 scoped_ptr<WebRequestEventDetails> event_details( 746 std::unique_ptr<WebRequestEventDetails> event_details(
747 CreateEventDetails(request, extra_info_spec)); 747 CreateEventDetails(request, extra_info_spec));
748 event_details->SetRequestHeaders(headers); 748 event_details->SetRequestHeaders(headers);
749 749
750 DispatchEvent(browser_context, request, listeners, std::move(event_details)); 750 DispatchEvent(browser_context, request, listeners, std::move(event_details));
751 } 751 }
752 752
753 int ExtensionWebRequestEventRouter::OnHeadersReceived( 753 int ExtensionWebRequestEventRouter::OnHeadersReceived(
754 void* browser_context, 754 void* browser_context,
755 const InfoMap* extension_info_map, 755 const InfoMap* extension_info_map,
756 net::URLRequest* request, 756 net::URLRequest* request,
(...skipping 10 matching lines...) Expand all
767 browser_context, extension_info_map, keys::kOnHeadersReceivedEvent, 767 browser_context, extension_info_map, keys::kOnHeadersReceivedEvent,
768 request, ON_HEADERS_RECEIVED, original_response_headers); 768 request, ON_HEADERS_RECEIVED, original_response_headers);
769 769
770 int extra_info_spec = 0; 770 int extra_info_spec = 0;
771 EventListeners listeners = GetMatchingListeners( 771 EventListeners listeners = GetMatchingListeners(
772 browser_context, extension_info_map, keys::kOnHeadersReceivedEvent, 772 browser_context, extension_info_map, keys::kOnHeadersReceivedEvent,
773 request, &extra_info_spec); 773 request, &extra_info_spec);
774 774
775 if (!listeners.empty() && 775 if (!listeners.empty() &&
776 !GetAndSetSignaled(request->identifier(), kOnHeadersReceived)) { 776 !GetAndSetSignaled(request->identifier(), kOnHeadersReceived)) {
777 scoped_ptr<WebRequestEventDetails> event_details( 777 std::unique_ptr<WebRequestEventDetails> event_details(
778 CreateEventDetails(request, extra_info_spec)); 778 CreateEventDetails(request, extra_info_spec));
779 event_details->SetResponseHeaders(request, original_response_headers); 779 event_details->SetResponseHeaders(request, original_response_headers);
780 780
781 initialize_blocked_requests |= DispatchEvent( 781 initialize_blocked_requests |= DispatchEvent(
782 browser_context, request, listeners, std::move(event_details)); 782 browser_context, request, listeners, std::move(event_details));
783 } 783 }
784 784
785 if (!initialize_blocked_requests) 785 if (!initialize_blocked_requests)
786 return net::OK; // Nobody saw a reason for modifying the request. 786 return net::OK; // Nobody saw a reason for modifying the request.
787 787
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; 819 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION;
820 } 820 }
821 821
822 int extra_info_spec = 0; 822 int extra_info_spec = 0;
823 EventListeners listeners = GetMatchingListeners( 823 EventListeners listeners = GetMatchingListeners(
824 browser_context, extension_info_map, keys::kOnAuthRequiredEvent, request, 824 browser_context, extension_info_map, keys::kOnAuthRequiredEvent, request,
825 &extra_info_spec); 825 &extra_info_spec);
826 if (listeners.empty()) 826 if (listeners.empty())
827 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; 827 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION;
828 828
829 scoped_ptr<WebRequestEventDetails> event_details( 829 std::unique_ptr<WebRequestEventDetails> event_details(
830 CreateEventDetails(request, extra_info_spec)); 830 CreateEventDetails(request, extra_info_spec));
831 event_details->SetResponseHeaders(request, request->response_headers()); 831 event_details->SetResponseHeaders(request, request->response_headers());
832 event_details->SetAuthInfo(auth_info); 832 event_details->SetAuthInfo(auth_info);
833 833
834 if (DispatchEvent(browser_context, request, listeners, 834 if (DispatchEvent(browser_context, request, listeners,
835 std::move(event_details))) { 835 std::move(event_details))) {
836 BlockedRequest& blocked_request = blocked_requests_[request->identifier()]; 836 BlockedRequest& blocked_request = blocked_requests_[request->identifier()];
837 blocked_request.event = kOnAuthRequired; 837 blocked_request.event = kOnAuthRequired;
838 blocked_request.is_incognito |= IsIncognitoBrowserContext(browser_context); 838 blocked_request.is_incognito |= IsIncognitoBrowserContext(browser_context);
839 blocked_request.request = request; 839 blocked_request.request = request;
(...skipping 21 matching lines...) Expand all
861 ClearSignaled(request->identifier(), kOnSendHeaders); 861 ClearSignaled(request->identifier(), kOnSendHeaders);
862 ClearSignaled(request->identifier(), kOnHeadersReceived); 862 ClearSignaled(request->identifier(), kOnHeadersReceived);
863 863
864 int extra_info_spec = 0; 864 int extra_info_spec = 0;
865 EventListeners listeners = GetMatchingListeners( 865 EventListeners listeners = GetMatchingListeners(
866 browser_context, extension_info_map, keys::kOnBeforeRedirectEvent, 866 browser_context, extension_info_map, keys::kOnBeforeRedirectEvent,
867 request, &extra_info_spec); 867 request, &extra_info_spec);
868 if (listeners.empty()) 868 if (listeners.empty())
869 return; 869 return;
870 870
871 scoped_ptr<WebRequestEventDetails> event_details( 871 std::unique_ptr<WebRequestEventDetails> event_details(
872 CreateEventDetails(request, extra_info_spec)); 872 CreateEventDetails(request, extra_info_spec));
873 event_details->SetResponseHeaders(request, request->response_headers()); 873 event_details->SetResponseHeaders(request, request->response_headers());
874 event_details->SetResponseSource(request); 874 event_details->SetResponseSource(request);
875 event_details->SetString(keys::kRedirectUrlKey, new_location.spec()); 875 event_details->SetString(keys::kRedirectUrlKey, new_location.spec());
876 876
877 DispatchEvent(browser_context, request, listeners, std::move(event_details)); 877 DispatchEvent(browser_context, request, listeners, std::move(event_details));
878 } 878 }
879 879
880 void ExtensionWebRequestEventRouter::OnResponseStarted( 880 void ExtensionWebRequestEventRouter::OnResponseStarted(
881 void* browser_context, 881 void* browser_context,
882 const InfoMap* extension_info_map, 882 const InfoMap* extension_info_map,
883 net::URLRequest* request) { 883 net::URLRequest* request) {
884 if (ShouldHideEvent(browser_context, extension_info_map, request)) 884 if (ShouldHideEvent(browser_context, extension_info_map, request))
885 return; 885 return;
886 886
887 // OnResponseStarted is even triggered, when the request was cancelled. 887 // OnResponseStarted is even triggered, when the request was cancelled.
888 if (request->status().status() != net::URLRequestStatus::SUCCESS) 888 if (request->status().status() != net::URLRequestStatus::SUCCESS)
889 return; 889 return;
890 890
891 int extra_info_spec = 0; 891 int extra_info_spec = 0;
892 EventListeners listeners = GetMatchingListeners( 892 EventListeners listeners = GetMatchingListeners(
893 browser_context, extension_info_map, keys::kOnResponseStartedEvent, 893 browser_context, extension_info_map, keys::kOnResponseStartedEvent,
894 request, &extra_info_spec); 894 request, &extra_info_spec);
895 if (listeners.empty()) 895 if (listeners.empty())
896 return; 896 return;
897 897
898 scoped_ptr<WebRequestEventDetails> event_details( 898 std::unique_ptr<WebRequestEventDetails> event_details(
899 CreateEventDetails(request, extra_info_spec)); 899 CreateEventDetails(request, extra_info_spec));
900 event_details->SetResponseHeaders(request, request->response_headers()); 900 event_details->SetResponseHeaders(request, request->response_headers());
901 event_details->SetResponseSource(request); 901 event_details->SetResponseSource(request);
902 902
903 DispatchEvent(browser_context, request, listeners, std::move(event_details)); 903 DispatchEvent(browser_context, request, listeners, std::move(event_details));
904 } 904 }
905 905
906 void ExtensionWebRequestEventRouter::OnCompleted( 906 void ExtensionWebRequestEventRouter::OnCompleted(
907 void* browser_context, 907 void* browser_context,
908 const InfoMap* extension_info_map, 908 const InfoMap* extension_info_map,
(...skipping 17 matching lines...) Expand all
926 926
927 ClearPendingCallbacks(request); 927 ClearPendingCallbacks(request);
928 928
929 int extra_info_spec = 0; 929 int extra_info_spec = 0;
930 EventListeners listeners = 930 EventListeners listeners =
931 GetMatchingListeners(browser_context, extension_info_map, 931 GetMatchingListeners(browser_context, extension_info_map,
932 keys::kOnCompletedEvent, request, &extra_info_spec); 932 keys::kOnCompletedEvent, request, &extra_info_spec);
933 if (listeners.empty()) 933 if (listeners.empty())
934 return; 934 return;
935 935
936 scoped_ptr<WebRequestEventDetails> event_details( 936 std::unique_ptr<WebRequestEventDetails> event_details(
937 CreateEventDetails(request, extra_info_spec)); 937 CreateEventDetails(request, extra_info_spec));
938 event_details->SetResponseHeaders(request, request->response_headers()); 938 event_details->SetResponseHeaders(request, request->response_headers());
939 event_details->SetResponseSource(request); 939 event_details->SetResponseSource(request);
940 940
941 DispatchEvent(browser_context, request, listeners, std::move(event_details)); 941 DispatchEvent(browser_context, request, listeners, std::move(event_details));
942 } 942 }
943 943
944 void ExtensionWebRequestEventRouter::OnErrorOccurred( 944 void ExtensionWebRequestEventRouter::OnErrorOccurred(
945 void* browser_context, 945 void* browser_context,
946 const InfoMap* extension_info_map, 946 const InfoMap* extension_info_map,
(...skipping 19 matching lines...) Expand all
966 966
967 ClearPendingCallbacks(request); 967 ClearPendingCallbacks(request);
968 968
969 int extra_info_spec = 0; 969 int extra_info_spec = 0;
970 EventListeners listeners = GetMatchingListeners( 970 EventListeners listeners = GetMatchingListeners(
971 browser_context, extension_info_map, 971 browser_context, extension_info_map,
972 web_request::OnErrorOccurred::kEventName, request, &extra_info_spec); 972 web_request::OnErrorOccurred::kEventName, request, &extra_info_spec);
973 if (listeners.empty()) 973 if (listeners.empty())
974 return; 974 return;
975 975
976 scoped_ptr<WebRequestEventDetails> event_details( 976 std::unique_ptr<WebRequestEventDetails> event_details(
977 CreateEventDetails(request, extra_info_spec)); 977 CreateEventDetails(request, extra_info_spec));
978 if (started) 978 if (started)
979 event_details->SetResponseSource(request); 979 event_details->SetResponseSource(request);
980 else 980 else
981 event_details->SetBoolean(keys::kFromCache, request->was_cached()); 981 event_details->SetBoolean(keys::kFromCache, request->was_cached());
982 event_details->SetString(keys::kErrorKey, 982 event_details->SetString(keys::kErrorKey,
983 net::ErrorToString(request->status().error())); 983 net::ErrorToString(request->status().error()));
984 984
985 DispatchEvent(browser_context, request, listeners, std::move(event_details)); 985 DispatchEvent(browser_context, request, listeners, std::move(event_details));
986 } 986 }
(...skipping 11 matching lines...) Expand all
998 998
999 void ExtensionWebRequestEventRouter::ClearPendingCallbacks( 999 void ExtensionWebRequestEventRouter::ClearPendingCallbacks(
1000 const net::URLRequest* request) { 1000 const net::URLRequest* request) {
1001 blocked_requests_.erase(request->identifier()); 1001 blocked_requests_.erase(request->identifier());
1002 } 1002 }
1003 1003
1004 bool ExtensionWebRequestEventRouter::DispatchEvent( 1004 bool ExtensionWebRequestEventRouter::DispatchEvent(
1005 void* browser_context, 1005 void* browser_context,
1006 net::URLRequest* request, 1006 net::URLRequest* request,
1007 const std::vector<const EventListener*>& listeners, 1007 const std::vector<const EventListener*>& listeners,
1008 scoped_ptr<WebRequestEventDetails> event_details) { 1008 std::unique_ptr<WebRequestEventDetails> event_details) {
1009 // TODO(mpcomplete): Consider consolidating common (extension_id,json_args) 1009 // TODO(mpcomplete): Consider consolidating common (extension_id,json_args)
1010 // pairs into a single message sent to a list of sub_event_names. 1010 // pairs into a single message sent to a list of sub_event_names.
1011 int num_handlers_blocking = 0; 1011 int num_handlers_blocking = 0;
1012 1012
1013 scoped_ptr<std::vector<EventListener>> listeners_to_dispatch( 1013 std::unique_ptr<std::vector<EventListener>> listeners_to_dispatch(
1014 new std::vector<EventListener>()); 1014 new std::vector<EventListener>());
1015 listeners_to_dispatch->reserve(listeners.size()); 1015 listeners_to_dispatch->reserve(listeners.size());
1016 for (const EventListener* listener : listeners) { 1016 for (const EventListener* listener : listeners) {
1017 listeners_to_dispatch->push_back(*listener); 1017 listeners_to_dispatch->push_back(*listener);
1018 if (listener->extra_info_spec & 1018 if (listener->extra_info_spec &
1019 (ExtraInfoSpec::BLOCKING | ExtraInfoSpec::ASYNC_BLOCKING)) { 1019 (ExtraInfoSpec::BLOCKING | ExtraInfoSpec::ASYNC_BLOCKING)) {
1020 listener->blocked_requests.insert(request->identifier()); 1020 listener->blocked_requests.insert(request->identifier());
1021 // If this is the first delegate blocking the request, go ahead and log 1021 // If this is the first delegate blocking the request, go ahead and log
1022 // it. 1022 // it.
1023 if (num_handlers_blocking == 0) { 1023 if (num_handlers_blocking == 0) {
(...skipping 19 matching lines...) Expand all
1043 blocked_request.num_handlers_blocking += num_handlers_blocking; 1043 blocked_request.num_handlers_blocking += num_handlers_blocking;
1044 blocked_request.blocking_time = base::Time::Now(); 1044 blocked_request.blocking_time = base::Time::Now();
1045 return true; 1045 return true;
1046 } 1046 }
1047 1047
1048 return false; 1048 return false;
1049 } 1049 }
1050 1050
1051 void ExtensionWebRequestEventRouter::DispatchEventToListeners( 1051 void ExtensionWebRequestEventRouter::DispatchEventToListeners(
1052 void* browser_context, 1052 void* browser_context,
1053 scoped_ptr<std::vector<EventListener>> listeners, 1053 std::unique_ptr<std::vector<EventListener>> listeners,
1054 scoped_ptr<WebRequestEventDetails> event_details) { 1054 std::unique_ptr<WebRequestEventDetails> event_details) {
1055 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1055 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1056 DCHECK(listeners.get()); 1056 DCHECK(listeners.get());
1057 DCHECK_GT(listeners->size(), 0UL); 1057 DCHECK_GT(listeners->size(), 0UL);
1058 DCHECK(event_details.get()); 1058 DCHECK(event_details.get());
1059 1059
1060 std::string event_name = 1060 std::string event_name =
1061 EventRouter::GetBaseEventName((*listeners)[0].sub_event_name); 1061 EventRouter::GetBaseEventName((*listeners)[0].sub_event_name);
1062 DCHECK(IsWebRequestEvent(event_name)); 1062 DCHECK(IsWebRequestEvent(event_name));
1063 1063
1064 const std::set<EventListener>& event_listeners = 1064 const std::set<EventListener>& event_listeners =
(...skipping 12 matching lines...) Expand all
1077 continue; 1077 continue;
1078 listener = cross_event_listeners->find(target); 1078 listener = cross_event_listeners->find(target);
1079 if (listener == cross_event_listeners->end()) 1079 if (listener == cross_event_listeners->end())
1080 continue; 1080 continue;
1081 } 1081 }
1082 1082
1083 if (!listener->ipc_sender.get()) 1083 if (!listener->ipc_sender.get())
1084 continue; 1084 continue;
1085 1085
1086 // Filter out the optional keys that this listener didn't request. 1086 // Filter out the optional keys that this listener didn't request.
1087 scoped_ptr<base::ListValue> args_filtered(new base::ListValue); 1087 std::unique_ptr<base::ListValue> args_filtered(new base::ListValue);
1088 args_filtered->Append( 1088 args_filtered->Append(
1089 event_details->GetFilteredDict(listener->extra_info_spec)); 1089 event_details->GetFilteredDict(listener->extra_info_spec));
1090 1090
1091 EventRouter::DispatchEventToSender( 1091 EventRouter::DispatchEventToSender(
1092 listener->ipc_sender.get(), browser_context, listener->extension_id, 1092 listener->ipc_sender.get(), browser_context, listener->extension_id,
1093 listener->histogram_value, listener->sub_event_name, 1093 listener->histogram_value, listener->sub_event_name,
1094 std::move(args_filtered), EventRouter::USER_GESTURE_UNKNOWN, 1094 std::move(args_filtered), EventRouter::USER_GESTURE_UNKNOWN,
1095 EventFilteringInfo()); 1095 EventFilteringInfo());
1096 } 1096 }
1097 } 1097 }
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 return helpers::CalculateOnAuthRequiredDelta( 1485 return helpers::CalculateOnAuthRequiredDelta(
1486 response->extension_id, response->extension_install_time, 1486 response->extension_id, response->extension_install_time,
1487 response->cancel, &response->auth_credentials); 1487 response->cancel, &response->auth_credentials);
1488 default: 1488 default:
1489 NOTREACHED(); 1489 NOTREACHED();
1490 return nullptr; 1490 return nullptr;
1491 } 1491 }
1492 } 1492 }
1493 1493
1494 base::Value* SerializeResponseHeaders(const helpers::ResponseHeaders& headers) { 1494 base::Value* SerializeResponseHeaders(const helpers::ResponseHeaders& headers) {
1495 scoped_ptr<base::ListValue> serialized_headers(new base::ListValue()); 1495 std::unique_ptr<base::ListValue> serialized_headers(new base::ListValue());
1496 for (const auto& it : headers) { 1496 for (const auto& it : headers) {
1497 serialized_headers->Append( 1497 serialized_headers->Append(
1498 helpers::CreateHeaderDictionary(it.first, it.second)); 1498 helpers::CreateHeaderDictionary(it.first, it.second));
1499 } 1499 }
1500 return serialized_headers.release(); 1500 return serialized_headers.release();
1501 } 1501 }
1502 1502
1503 // Convert a RequestCookieModifications/ResponseCookieModifications object to a 1503 // Convert a RequestCookieModifications/ResponseCookieModifications object to a
1504 // base::ListValue which summarizes the changes made. This is templated since 1504 // base::ListValue which summarizes the changes made. This is templated since
1505 // the two types (request/response) are different but contain essentially the 1505 // the two types (request/response) are different but contain essentially the
1506 // same fields. 1506 // same fields.
1507 template <typename CookieType> 1507 template <typename CookieType>
1508 base::ListValue* SummarizeCookieModifications( 1508 base::ListValue* SummarizeCookieModifications(
1509 const std::vector<linked_ptr<CookieType>>& modifications) { 1509 const std::vector<linked_ptr<CookieType>>& modifications) {
1510 scoped_ptr<base::ListValue> cookie_modifications(new base::ListValue()); 1510 std::unique_ptr<base::ListValue> cookie_modifications(new base::ListValue());
1511 for (const auto& it : modifications) { 1511 for (const auto& it : modifications) {
1512 scoped_ptr<base::DictionaryValue> summary(new base::DictionaryValue()); 1512 std::unique_ptr<base::DictionaryValue> summary(new base::DictionaryValue());
1513 const CookieType& mod = *(it.get()); 1513 const CookieType& mod = *(it.get());
1514 switch (mod.type) { 1514 switch (mod.type) {
1515 case helpers::ADD: 1515 case helpers::ADD:
1516 summary->SetString(activity_log::kCookieModificationTypeKey, 1516 summary->SetString(activity_log::kCookieModificationTypeKey,
1517 activity_log::kCookieModificationAdd); 1517 activity_log::kCookieModificationAdd);
1518 break; 1518 break;
1519 case helpers::EDIT: 1519 case helpers::EDIT:
1520 summary->SetString(activity_log::kCookieModificationTypeKey, 1520 summary->SetString(activity_log::kCookieModificationTypeKey,
1521 activity_log::kCookieModificationEdit); 1521 activity_log::kCookieModificationEdit);
1522 break; 1522 break;
(...skipping 22 matching lines...) Expand all
1545 *mod.modification->name); 1545 *mod.modification->name);
1546 } 1546 }
1547 } 1547 }
1548 cookie_modifications->Append(summary.release()); 1548 cookie_modifications->Append(summary.release());
1549 } 1549 }
1550 return cookie_modifications.release(); 1550 return cookie_modifications.release();
1551 } 1551 }
1552 1552
1553 // Converts an EventResponseDelta object to a dictionary value suitable for the 1553 // Converts an EventResponseDelta object to a dictionary value suitable for the
1554 // activity log. 1554 // activity log.
1555 scoped_ptr<base::DictionaryValue> SummarizeResponseDelta( 1555 std::unique_ptr<base::DictionaryValue> SummarizeResponseDelta(
1556 const std::string& event_name, 1556 const std::string& event_name,
1557 const helpers::EventResponseDelta& delta) { 1557 const helpers::EventResponseDelta& delta) {
1558 scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue()); 1558 std::unique_ptr<base::DictionaryValue> details(new base::DictionaryValue());
1559 if (delta.cancel) 1559 if (delta.cancel)
1560 details->SetBoolean(activity_log::kCancelKey, true); 1560 details->SetBoolean(activity_log::kCancelKey, true);
1561 if (!delta.new_url.is_empty()) 1561 if (!delta.new_url.is_empty())
1562 details->SetString(activity_log::kNewUrlKey, delta.new_url.spec()); 1562 details->SetString(activity_log::kNewUrlKey, delta.new_url.spec());
1563 1563
1564 scoped_ptr<base::ListValue> modified_headers(new base::ListValue()); 1564 std::unique_ptr<base::ListValue> modified_headers(new base::ListValue());
1565 net::HttpRequestHeaders::Iterator iter(delta.modified_request_headers); 1565 net::HttpRequestHeaders::Iterator iter(delta.modified_request_headers);
1566 while (iter.GetNext()) { 1566 while (iter.GetNext()) {
1567 modified_headers->Append( 1567 modified_headers->Append(
1568 helpers::CreateHeaderDictionary(iter.name(), iter.value())); 1568 helpers::CreateHeaderDictionary(iter.name(), iter.value()));
1569 } 1569 }
1570 if (!modified_headers->empty()) { 1570 if (!modified_headers->empty()) {
1571 details->Set(activity_log::kModifiedRequestHeadersKey, 1571 details->Set(activity_log::kModifiedRequestHeadersKey,
1572 modified_headers.release()); 1572 modified_headers.release());
1573 } 1573 }
1574 1574
1575 scoped_ptr<base::ListValue> deleted_headers(new base::ListValue()); 1575 std::unique_ptr<base::ListValue> deleted_headers(new base::ListValue());
1576 deleted_headers->AppendStrings(delta.deleted_request_headers); 1576 deleted_headers->AppendStrings(delta.deleted_request_headers);
1577 if (!deleted_headers->empty()) { 1577 if (!deleted_headers->empty()) {
1578 details->Set(activity_log::kDeletedRequestHeadersKey, 1578 details->Set(activity_log::kDeletedRequestHeadersKey,
1579 deleted_headers.release()); 1579 deleted_headers.release());
1580 } 1580 }
1581 1581
1582 if (!delta.added_response_headers.empty()) { 1582 if (!delta.added_response_headers.empty()) {
1583 details->Set(activity_log::kAddedRequestHeadersKey, 1583 details->Set(activity_log::kAddedRequestHeadersKey,
1584 SerializeResponseHeaders(delta.added_response_headers)); 1584 SerializeResponseHeaders(delta.added_response_headers));
1585 } 1585 }
(...skipping 17 matching lines...) Expand all
1603 } 1603 }
1604 1604
1605 } // namespace 1605 } // namespace
1606 1606
1607 void ExtensionWebRequestEventRouter::LogExtensionActivity( 1607 void ExtensionWebRequestEventRouter::LogExtensionActivity(
1608 void* browser_context_id, 1608 void* browser_context_id,
1609 bool is_incognito, 1609 bool is_incognito,
1610 const std::string& extension_id, 1610 const std::string& extension_id,
1611 const GURL& url, 1611 const GURL& url,
1612 const std::string& api_call, 1612 const std::string& api_call,
1613 scoped_ptr<base::DictionaryValue> details) { 1613 std::unique_ptr<base::DictionaryValue> details) {
1614 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { 1614 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
1615 BrowserThread::PostTask( 1615 BrowserThread::PostTask(
1616 BrowserThread::UI, 1616 BrowserThread::UI,
1617 FROM_HERE, 1617 FROM_HERE,
1618 base::Bind(&ExtensionWebRequestEventRouter::LogExtensionActivity, 1618 base::Bind(&ExtensionWebRequestEventRouter::LogExtensionActivity,
1619 base::Unretained(this), 1619 base::Unretained(this),
1620 browser_context_id, 1620 browser_context_id,
1621 is_incognito, 1621 is_incognito,
1622 extension_id, 1622 extension_id,
1623 url, 1623 url,
1624 api_call, 1624 api_call,
1625 base::Passed(&details))); 1625 base::Passed(&details)));
1626 } else { 1626 } else {
1627 if (web_request_event_router_delegate_) { 1627 if (web_request_event_router_delegate_) {
1628 web_request_event_router_delegate_->LogExtensionActivity( 1628 web_request_event_router_delegate_->LogExtensionActivity(
1629 reinterpret_cast<content::BrowserContext*>(browser_context_id), 1629 reinterpret_cast<content::BrowserContext*>(browser_context_id),
1630 is_incognito, extension_id, url, api_call, std::move(details)); 1630 is_incognito, extension_id, url, api_call, std::move(details));
1631 } 1631 }
1632 } 1632 }
1633 } 1633 }
1634 1634
1635 void ExtensionWebRequestEventRouter::DecrementBlockCount( 1635 void ExtensionWebRequestEventRouter::DecrementBlockCount(
1636 void* browser_context, 1636 void* browser_context,
1637 const std::string& extension_id, 1637 const std::string& extension_id,
1638 const std::string& event_name, 1638 const std::string& event_name,
1639 uint64_t request_id, 1639 uint64_t request_id,
1640 EventResponse* response) { 1640 EventResponse* response) {
1641 scoped_ptr<EventResponse> response_scoped(response); 1641 std::unique_ptr<EventResponse> response_scoped(response);
1642 1642
1643 // It's possible that this request was deleted, or cancelled by a previous 1643 // It's possible that this request was deleted, or cancelled by a previous
1644 // event handler. If so, ignore this response. 1644 // event handler. If so, ignore this response.
1645 auto it = blocked_requests_.find(request_id); 1645 auto it = blocked_requests_.find(request_id);
1646 if (it == blocked_requests_.end()) 1646 if (it == blocked_requests_.end())
1647 return; 1647 return;
1648 1648
1649 BlockedRequest& blocked_request = it->second; 1649 BlockedRequest& blocked_request = it->second;
1650 int num_handlers_blocking = --blocked_request.num_handlers_blocking; 1650 int num_handlers_blocking = --blocked_request.num_handlers_blocking;
1651 CHECK_GE(num_handlers_blocking, 0); 1651 CHECK_GE(num_handlers_blocking, 0);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1697 } 1697 }
1698 } 1698 }
1699 1699
1700 void ExtensionWebRequestEventRouter::SendMessages( 1700 void ExtensionWebRequestEventRouter::SendMessages(
1701 void* browser_context, 1701 void* browser_context,
1702 const BlockedRequest& blocked_request) { 1702 const BlockedRequest& blocked_request) {
1703 const helpers::EventResponseDeltas& deltas = blocked_request.response_deltas; 1703 const helpers::EventResponseDeltas& deltas = blocked_request.response_deltas;
1704 for (const auto& delta : deltas) { 1704 for (const auto& delta : deltas) {
1705 const std::set<std::string>& messages = delta->messages_to_extension; 1705 const std::set<std::string>& messages = delta->messages_to_extension;
1706 for (const std::string& message : messages) { 1706 for (const std::string& message : messages) {
1707 scoped_ptr<WebRequestEventDetails> event_details( 1707 std::unique_ptr<WebRequestEventDetails> event_details(
1708 CreateEventDetails(blocked_request.request, /* extra_info_spec */ 0)); 1708 CreateEventDetails(blocked_request.request, /* extra_info_spec */ 0));
1709 WebViewRendererState::WebViewInfo web_view_info; 1709 WebViewRendererState::WebViewInfo web_view_info;
1710 bool is_web_view_guest = GetWebViewInfo(blocked_request.request, 1710 bool is_web_view_guest = GetWebViewInfo(blocked_request.request,
1711 &web_view_info); 1711 &web_view_info);
1712 event_details->SetString(keys::kMessageKey, message); 1712 event_details->SetString(keys::kMessageKey, message);
1713 event_details->SetString(keys::kStageKey, 1713 event_details->SetString(keys::kStageKey,
1714 GetRequestStageAsString(blocked_request.event)); 1714 GetRequestStageAsString(blocked_request.event));
1715 1715
1716 BrowserThread::PostTask( 1716 BrowserThread::PostTask(
1717 BrowserThread::UI, FROM_HERE, 1717 BrowserThread::UI, FROM_HERE,
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
2113 profile_id(), extension_id_safe())); 2113 profile_id(), extension_id_safe()));
2114 } 2114 }
2115 2115
2116 return true; 2116 return true;
2117 } 2117 }
2118 2118
2119 void WebRequestInternalEventHandledFunction::RespondWithError( 2119 void WebRequestInternalEventHandledFunction::RespondWithError(
2120 const std::string& event_name, 2120 const std::string& event_name,
2121 const std::string& sub_event_name, 2121 const std::string& sub_event_name,
2122 uint64_t request_id, 2122 uint64_t request_id,
2123 scoped_ptr<ExtensionWebRequestEventRouter::EventResponse> response, 2123 std::unique_ptr<ExtensionWebRequestEventRouter::EventResponse> response,
2124 const std::string& error) { 2124 const std::string& error) {
2125 error_ = error; 2125 error_ = error;
2126 ExtensionWebRequestEventRouter::GetInstance()->OnEventHandled( 2126 ExtensionWebRequestEventRouter::GetInstance()->OnEventHandled(
2127 profile_id(), 2127 profile_id(),
2128 extension_id_safe(), 2128 extension_id_safe(),
2129 event_name, 2129 event_name,
2130 sub_event_name, 2130 sub_event_name,
2131 request_id, 2131 request_id,
2132 response.release()); 2132 response.release());
2133 } 2133 }
2134 2134
2135 bool WebRequestInternalEventHandledFunction::RunSync() { 2135 bool WebRequestInternalEventHandledFunction::RunSync() {
2136 std::string event_name; 2136 std::string event_name;
2137 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name)); 2137 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name));
2138 2138
2139 std::string sub_event_name; 2139 std::string sub_event_name;
2140 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &sub_event_name)); 2140 EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &sub_event_name));
2141 2141
2142 std::string request_id_str; 2142 std::string request_id_str;
2143 EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &request_id_str)); 2143 EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &request_id_str));
2144 uint64_t request_id; 2144 uint64_t request_id;
2145 EXTENSION_FUNCTION_VALIDATE(base::StringToUint64(request_id_str, 2145 EXTENSION_FUNCTION_VALIDATE(base::StringToUint64(request_id_str,
2146 &request_id)); 2146 &request_id));
2147 2147
2148 scoped_ptr<ExtensionWebRequestEventRouter::EventResponse> response; 2148 std::unique_ptr<ExtensionWebRequestEventRouter::EventResponse> response;
2149 if (HasOptionalArgument(3)) { 2149 if (HasOptionalArgument(3)) {
2150 base::DictionaryValue* value = NULL; 2150 base::DictionaryValue* value = NULL;
2151 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(3, &value)); 2151 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(3, &value));
2152 2152
2153 if (!value->empty()) { 2153 if (!value->empty()) {
2154 base::Time install_time = 2154 base::Time install_time =
2155 extension_info_map()->GetInstallTime(extension_id_safe()); 2155 extension_info_map()->GetInstallTime(extension_id_safe());
2156 response.reset(new ExtensionWebRequestEventRouter::EventResponse( 2156 response.reset(new ExtensionWebRequestEventRouter::EventResponse(
2157 extension_id_safe(), install_time)); 2157 extension_id_safe(), install_time));
2158 } 2158 }
(...skipping 30 matching lines...) Expand all
2189 if (has_request_headers || has_response_headers) { 2189 if (has_request_headers || has_response_headers) {
2190 if (has_request_headers && has_response_headers) { 2190 if (has_request_headers && has_response_headers) {
2191 // Allow only one of the keys, not both. 2191 // Allow only one of the keys, not both.
2192 RespondWithError(event_name, sub_event_name, request_id, 2192 RespondWithError(event_name, sub_event_name, request_id,
2193 std::move(response), 2193 std::move(response),
2194 keys::kInvalidHeaderKeyCombination); 2194 keys::kInvalidHeaderKeyCombination);
2195 return false; 2195 return false;
2196 } 2196 }
2197 2197
2198 base::ListValue* headers_value = NULL; 2198 base::ListValue* headers_value = NULL;
2199 scoped_ptr<net::HttpRequestHeaders> request_headers; 2199 std::unique_ptr<net::HttpRequestHeaders> request_headers;
2200 scoped_ptr<helpers::ResponseHeaders> response_headers; 2200 std::unique_ptr<helpers::ResponseHeaders> response_headers;
2201 if (has_request_headers) { 2201 if (has_request_headers) {
2202 request_headers.reset(new net::HttpRequestHeaders()); 2202 request_headers.reset(new net::HttpRequestHeaders());
2203 EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kRequestHeadersKey, 2203 EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kRequestHeadersKey,
2204 &headers_value)); 2204 &headers_value));
2205 } else { 2205 } else {
2206 response_headers.reset(new helpers::ResponseHeaders()); 2206 response_headers.reset(new helpers::ResponseHeaders());
2207 EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kResponseHeadersKey, 2207 EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kResponseHeadersKey,
2208 &headers_value)); 2208 &headers_value));
2209 } 2209 }
2210 2210
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2295 // Continue gracefully. 2295 // Continue gracefully.
2296 RunSync(); 2296 RunSync();
2297 } 2297 }
2298 2298
2299 bool WebRequestHandlerBehaviorChangedFunction::RunSync() { 2299 bool WebRequestHandlerBehaviorChangedFunction::RunSync() {
2300 helpers::ClearCacheOnNavigation(); 2300 helpers::ClearCacheOnNavigation();
2301 return true; 2301 return true;
2302 } 2302 }
2303 2303
2304 } // namespace extensions 2304 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/web_request/web_request_api.h ('k') | extensions/browser/api/web_request/web_request_api_helpers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698