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 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |