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

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

Issue 2449913002: Support WebSocket in WebRequest API. (Closed)
Patch Set: Refactor tests; add test; update documentation. Created 3 years, 10 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 <memory>
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 if (!value.HasKey("urls")) 484 if (!value.HasKey("urls"))
485 return false; 485 return false;
486 486
487 for (base::DictionaryValue::Iterator it(value); !it.IsAtEnd(); it.Advance()) { 487 for (base::DictionaryValue::Iterator it(value); !it.IsAtEnd(); it.Advance()) {
488 if (it.key() == "urls") { 488 if (it.key() == "urls") {
489 const base::ListValue* urls_value = NULL; 489 const base::ListValue* urls_value = NULL;
490 if (!it.value().GetAsList(&urls_value)) 490 if (!it.value().GetAsList(&urls_value))
491 return false; 491 return false;
492 for (size_t i = 0; i < urls_value->GetSize(); ++i) { 492 for (size_t i = 0; i < urls_value->GetSize(); ++i) {
493 std::string url; 493 std::string url;
494 URLPattern pattern( 494 URLPattern pattern(URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS |
495 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | 495 URLPattern::SCHEME_FTP | URLPattern::SCHEME_FILE |
496 URLPattern::SCHEME_FTP | URLPattern::SCHEME_FILE | 496 URLPattern::SCHEME_EXTENSION |
497 URLPattern::SCHEME_EXTENSION); 497 URLPattern::SCHEME_WS | URLPattern::SCHEME_WSS);
498 if (!urls_value->GetString(i, &url) || 498 if (!urls_value->GetString(i, &url) ||
499 pattern.Parse(url) != URLPattern::PARSE_SUCCESS) { 499 pattern.Parse(url) != URLPattern::PARSE_SUCCESS) {
500 *error = ErrorUtils::FormatErrorMessage( 500 *error = ErrorUtils::FormatErrorMessage(
501 keys::kInvalidRequestFilterUrl, url); 501 keys::kInvalidRequestFilterUrl, url);
502 return false; 502 return false;
503 } 503 }
504 urls.AddPattern(pattern); 504 urls.AddPattern(pattern);
505 } 505 }
506 } else if (it.key() == "types") { 506 } else if (it.key() == "types") {
507 const base::ListValue* types_value = NULL; 507 const base::ListValue* types_value = NULL;
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 if (!browser_context || 933 if (!browser_context ||
934 (WebRequestPermissions::HideRequest(extension_info_map, request, 934 (WebRequestPermissions::HideRequest(extension_info_map, request,
935 navigation_ui_data) && 935 navigation_ui_data) &&
936 !WasSignaled(*request))) { 936 !WasSignaled(*request))) {
937 return; 937 return;
938 } 938 }
939 939
940 request_time_tracker_->LogRequestEndTime(request->identifier(), 940 request_time_tracker_->LogRequestEndTime(request->identifier(),
941 base::Time::Now()); 941 base::Time::Now());
942 942
943 DCHECK_EQ(net::OK, net_error); 943 DCHECK(net_error == net::OK || net_error == net::ERR_WS_UPGRADE);
944 944
945 DCHECK(!GetAndSetSignaled(request->identifier(), kOnCompleted)); 945 DCHECK(!GetAndSetSignaled(request->identifier(), kOnCompleted));
946 946
947 ClearPendingCallbacks(request); 947 ClearPendingCallbacks(request);
948 948
949 int extra_info_spec = 0; 949 int extra_info_spec = 0;
950 RawListeners listeners = GetMatchingListeners( 950 RawListeners listeners = GetMatchingListeners(
951 browser_context, extension_info_map, navigation_ui_data, 951 browser_context, extension_info_map, navigation_ui_data,
952 keys::kOnCompletedEvent, request, &extra_info_spec); 952 keys::kOnCompletedEvent, request, &extra_info_spec);
953 if (listeners.empty()) 953 if (listeners.empty())
(...skipping 17 matching lines...) Expand all
971 OnCompleted(browser_context, extension_info_map, request, 971 OnCompleted(browser_context, extension_info_map, request,
972 request->status().error()); 972 request->status().error());
973 } 973 }
974 974
975 void ExtensionWebRequestEventRouter::OnErrorOccurred( 975 void ExtensionWebRequestEventRouter::OnErrorOccurred(
976 void* browser_context, 976 void* browser_context,
977 const InfoMap* extension_info_map, 977 const InfoMap* extension_info_map,
978 net::URLRequest* request, 978 net::URLRequest* request,
979 bool started, 979 bool started,
980 int net_error) { 980 int net_error) {
981 if (net_error == net::ERR_WS_UPGRADE) {
982 OnCompleted(browser_context, extension_info_map, request, net_error);
Devlin 2017/02/14 01:21:38 Document why we do this?
pkalinnikov 2017/02/14 13:49:51 Done.
983 return;
984 }
985
981 ExtensionsBrowserClient* client = ExtensionsBrowserClient::Get(); 986 ExtensionsBrowserClient* client = ExtensionsBrowserClient::Get();
982 if (!client) { 987 if (!client) {
983 // |client| could be NULL during shutdown. 988 // |client| could be NULL during shutdown.
984 return; 989 return;
985 } 990 }
986 ExtensionNavigationUIData* navigation_ui_data = 991 ExtensionNavigationUIData* navigation_ui_data =
987 client->GetExtensionNavigationUIData(request); 992 client->GetExtensionNavigationUIData(request);
988 // We hide events from the system context as well as sensitive requests. 993 // We hide events from the system context as well as sensitive requests.
989 // However, if the request first became sensitive after redirecting we have 994 // However, if the request first became sensitive after redirecting we have
990 // already signaled it and thus we have to signal the end of it. This is 995 // already signaled it and thus we have to signal the end of it. This is
(...skipping 1399 matching lines...) Expand 10 before | Expand all | Expand 10 after
2390 // Since EventListeners are segmented by browser_context, check that 2395 // Since EventListeners are segmented by browser_context, check that
2391 // last, as it is exceedingly unlikely to be different. 2396 // last, as it is exceedingly unlikely to be different.
2392 return extension_id == that.extension_id && 2397 return extension_id == that.extension_id &&
2393 sub_event_name == that.sub_event_name && 2398 sub_event_name == that.sub_event_name &&
2394 web_view_instance_id == that.web_view_instance_id && 2399 web_view_instance_id == that.web_view_instance_id &&
2395 embedder_process_id == that.embedder_process_id && 2400 embedder_process_id == that.embedder_process_id &&
2396 browser_context == that.browser_context; 2401 browser_context == that.browser_context;
2397 } 2402 }
2398 2403
2399 } // namespace extensions 2404 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698