blob: a2ca52b3769a287c9f120e454882a7e30739f3bb [file] [log] [blame]
[email protected]9045b8822012-01-13 20:35:351// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]0651b812011-02-24 00:22:502// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/base/network_delegate.h"
6
7#include "base/logging.h"
vadimt844c15572014-11-04 22:55:578#include "base/profiler/scoped_tracker.h"
ssid6d6b40102016-04-05 18:59:569#include "base/trace_event/trace_event.h"
[email protected]9c8ae8c2012-03-09 13:13:3510#include "net/base/load_flags.h"
[email protected]c6c6e5652013-10-29 02:40:3011#include "net/base/net_errors.h"
[email protected]597a1ab2014-06-26 08:12:2712#include "net/proxy/proxy_info.h"
[email protected]9c8ae8c2012-03-09 13:13:3513#include "net/url_request/url_request.h"
[email protected]0651b812011-02-24 00:22:5014
15namespace net {
16
[email protected]084262c2011-12-01 21:12:4717int NetworkDelegate::NotifyBeforeURLRequest(
18 URLRequest* request, const CompletionCallback& callback,
19 GURL* new_url) {
ssid6d6b40102016-04-05 18:59:5620 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
21 "NetworkDelegate::NotifyBeforeURLRequest");
[email protected]0651b812011-02-24 00:22:5022 DCHECK(CalledOnValidThread());
23 DCHECK(request);
[email protected]084262c2011-12-01 21:12:4724 DCHECK(!callback.is_null());
pkasting941842c2015-04-11 01:51:3025 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
vadimt844c15572014-11-04 22:55:5726 tracked_objects::ScopedTracker tracking_profile(
27 FROM_HERE_WITH_EXPLICIT_FUNCTION(
pkasting941842c2015-04-11 01:51:3028 "475753 NetworkDelegate::OnBeforeURLRequest"));
[email protected]4c76d7c2011-04-15 19:14:1229 return OnBeforeURLRequest(request, callback, new_url);
[email protected]0651b812011-02-24 00:22:5030}
31
ryansturm2343cb62016-06-15 01:09:0032int NetworkDelegate::NotifyBeforeStartTransaction(
33 URLRequest* request,
34 const CompletionCallback& callback,
[email protected]084262c2011-12-01 21:12:4735 HttpRequestHeaders* headers) {
ssid6d6b40102016-04-05 18:59:5636 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
ryansturm2343cb62016-06-15 01:09:0037 "NetworkDelegate::NotifyBeforeStartTransation");
[email protected]0651b812011-02-24 00:22:5038 DCHECK(CalledOnValidThread());
39 DCHECK(headers);
[email protected]084262c2011-12-01 21:12:4740 DCHECK(!callback.is_null());
ryansturm2343cb62016-06-15 01:09:0041 return OnBeforeStartTransaction(request, callback, headers);
[email protected]0651b812011-02-24 00:22:5042}
43
ryansturm49a8cb12016-06-15 16:51:0944void NetworkDelegate::NotifyBeforeSendHeaders(
[email protected]597a1ab2014-06-26 08:12:2745 URLRequest* request,
46 const ProxyInfo& proxy_info,
ryansturm49a8cb12016-06-15 16:51:0947 const ProxyRetryInfoMap& proxy_retry_info,
[email protected]597a1ab2014-06-26 08:12:2748 HttpRequestHeaders* headers) {
49 DCHECK(CalledOnValidThread());
50 DCHECK(headers);
ryansturm49a8cb12016-06-15 16:51:0951 OnBeforeSendHeaders(request, proxy_info, proxy_retry_info, headers);
[email protected]597a1ab2014-06-26 08:12:2752}
53
ryansturm2343cb62016-06-15 01:09:0054void NetworkDelegate::NotifyStartTransaction(
55 URLRequest* request,
56 const HttpRequestHeaders& headers) {
ssid6d6b40102016-04-05 18:59:5657 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
ryansturm2343cb62016-06-15 01:09:0058 "NetworkDelegate::NotifyStartTransaction");
[email protected]82b42302011-04-20 16:28:1659 DCHECK(CalledOnValidThread());
ryansturm2343cb62016-06-15 01:09:0060 OnStartTransaction(request, headers);
[email protected]82b42302011-04-20 16:28:1661}
62
[email protected]ea8141e2011-10-05 13:12:5163int NetworkDelegate::NotifyHeadersReceived(
64 URLRequest* request,
[email protected]084262c2011-12-01 21:12:4765 const CompletionCallback& callback,
[email protected]507af8f2012-10-20 00:42:3266 const HttpResponseHeaders* original_response_headers,
[email protected]5f714132014-03-26 10:41:1667 scoped_refptr<HttpResponseHeaders>* override_response_headers,
68 GURL* allowed_unsafe_redirect_url) {
ssid6d6b40102016-04-05 18:59:5669 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
70 "NetworkDelegate::NotifyHeadersReceived");
[email protected]ea8141e2011-10-05 13:12:5171 DCHECK(CalledOnValidThread());
72 DCHECK(original_response_headers);
[email protected]084262c2011-12-01 21:12:4773 DCHECK(!callback.is_null());
[email protected]5f714132014-03-26 10:41:1674 return OnHeadersReceived(request,
75 callback,
76 original_response_headers,
77 override_response_headers,
78 allowed_unsafe_redirect_url);
[email protected]ea8141e2011-10-05 13:12:5179}
80
[email protected]0651b812011-02-24 00:22:5081void NetworkDelegate::NotifyResponseStarted(URLRequest* request) {
82 DCHECK(CalledOnValidThread());
83 DCHECK(request);
84 OnResponseStarted(request);
85}
86
sclittlea133de02015-11-10 23:54:2187void NetworkDelegate::NotifyNetworkBytesReceived(URLRequest* request,
sclittlece72c482015-08-24 20:20:5988 int64_t bytes_received) {
ssid6d6b40102016-04-05 18:59:5689 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
90 "NetworkDelegate::NotifyNetworkBytesReceived");
[email protected]8523ba52011-05-22 19:00:5891 DCHECK(CalledOnValidThread());
sclittlece72c482015-08-24 20:20:5992 DCHECK_GT(bytes_received, 0);
93 OnNetworkBytesReceived(request, bytes_received);
[email protected]8523ba52011-05-22 19:00:5894}
95
sclittlea133de02015-11-10 23:54:2196void NetworkDelegate::NotifyNetworkBytesSent(URLRequest* request,
sclittle28d558b2015-09-28 21:40:5297 int64_t bytes_sent) {
98 DCHECK(CalledOnValidThread());
99 DCHECK_GT(bytes_sent, 0);
100 OnNetworkBytesSent(request, bytes_sent);
101}
102
[email protected]31b2e5f2011-04-20 16:58:32103void NetworkDelegate::NotifyBeforeRedirect(URLRequest* request,
104 const GURL& new_location) {
105 DCHECK(CalledOnValidThread());
106 DCHECK(request);
107 OnBeforeRedirect(request, new_location);
108}
109
[email protected]9045b8822012-01-13 20:35:35110void NetworkDelegate::NotifyCompleted(URLRequest* request, bool started) {
ssid6d6b40102016-04-05 18:59:56111 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
112 "NetworkDelegate::NotifyCompleted");
[email protected]0651b812011-02-24 00:22:50113 DCHECK(CalledOnValidThread());
114 DCHECK(request);
pkasting941842c2015-04-11 01:51:30115 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
vadimt844c15572014-11-04 22:55:57116 tracked_objects::ScopedTracker tracking_profile(
pkasting941842c2015-04-11 01:51:30117 FROM_HERE_WITH_EXPLICIT_FUNCTION("475753 NetworkDelegate::OnCompleted"));
[email protected]9045b8822012-01-13 20:35:35118 OnCompleted(request, started);
[email protected]0651b812011-02-24 00:22:50119}
120
[email protected]4875ba12011-03-30 22:31:51121void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) {
ssid6d6b40102016-04-05 18:59:56122 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
123 "NetworkDelegate::NotifyURLRequestDestroyed");
[email protected]5aa20132011-04-27 23:11:34124 DCHECK(CalledOnValidThread());
[email protected]4875ba12011-03-30 22:31:51125 DCHECK(request);
[email protected]5aa20132011-04-27 23:11:34126 OnURLRequestDestroyed(request);
127}
128
[email protected]82a37672011-05-03 12:02:41129void NetworkDelegate::NotifyPACScriptError(int line_number,
[email protected]42cba2fb2013-03-29 19:58:57130 const base::string16& error) {
[email protected]82a37672011-05-03 12:02:41131 DCHECK(CalledOnValidThread());
132 OnPACScriptError(line_number, error);
133}
134
[email protected]c2911d72011-10-03 22:16:36135NetworkDelegate::AuthRequiredResponse NetworkDelegate::NotifyAuthRequired(
136 URLRequest* request,
137 const AuthChallengeInfo& auth_info,
138 const AuthCallback& callback,
139 AuthCredentials* credentials) {
[email protected]7efc582d2011-08-03 20:46:35140 DCHECK(CalledOnValidThread());
[email protected]c2911d72011-10-03 22:16:36141 return OnAuthRequired(request, auth_info, callback, credentials);
[email protected]7efc582d2011-08-03 20:46:35142}
143
[email protected]4c219e22012-05-05 19:41:04144bool NetworkDelegate::CanGetCookies(const URLRequest& request,
145 const CookieList& cookie_list) {
[email protected]9c8ae8c2012-03-09 13:13:35146 DCHECK(CalledOnValidThread());
ttuttle859dc7a2015-04-23 19:42:29147 DCHECK(!(request.load_flags() & LOAD_DO_NOT_SEND_COOKIES));
[email protected]4c219e22012-05-05 19:41:04148 return OnCanGetCookies(request, cookie_list);
[email protected]9c8ae8c2012-03-09 13:13:35149}
150
[email protected]f33e6872013-05-07 07:00:37151bool NetworkDelegate::CanSetCookie(const URLRequest& request,
152 const std::string& cookie_line,
153 CookieOptions* options) {
[email protected]9c8ae8c2012-03-09 13:13:35154 DCHECK(CalledOnValidThread());
ttuttle859dc7a2015-04-23 19:42:29155 DCHECK(!(request.load_flags() & LOAD_DO_NOT_SAVE_COOKIES));
[email protected]4c219e22012-05-05 19:41:04156 return OnCanSetCookie(request, cookie_line, options);
157}
158
159bool NetworkDelegate::CanAccessFile(const URLRequest& request,
[email protected]a3ef4832013-02-02 05:12:33160 const base::FilePath& path) const {
[email protected]4c219e22012-05-05 19:41:04161 DCHECK(CalledOnValidThread());
162 return OnCanAccessFile(request, path);
[email protected]9c8ae8c2012-03-09 13:13:35163}
164
[email protected]e6d017652013-05-17 18:01:40165bool NetworkDelegate::CanEnablePrivacyMode(
166 const GURL& url,
167 const GURL& first_party_for_cookies) const {
ssid6d6b40102016-04-05 18:59:56168 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
169 "NetworkDelegate::CanEnablePrivacyMode");
[email protected]e6d017652013-05-17 18:01:40170 DCHECK(CalledOnValidThread());
171 return OnCanEnablePrivacyMode(url, first_party_for_cookies);
172}
173
estark7625d812015-10-12 20:10:41174bool NetworkDelegate::AreExperimentalCookieFeaturesEnabled() const {
175 return OnAreExperimentalCookieFeaturesEnabled();
mkwst0513c9d2015-04-01 05:53:15176}
177
jww79aceda2015-12-07 01:56:34178bool NetworkDelegate::AreStrictSecureCookiesEnabled() const {
179 return OnAreStrictSecureCookiesEnabled();
180}
181
jochen0e3b3a62014-09-16 18:31:23182bool NetworkDelegate::CancelURLRequestWithPolicyViolatingReferrerHeader(
183 const URLRequest& request,
184 const GURL& target_url,
185 const GURL& referrer_url) const {
186 DCHECK(CalledOnValidThread());
187 return OnCancelURLRequestWithPolicyViolatingReferrerHeader(
188 request, target_url, referrer_url);
189}
190
[email protected]0651b812011-02-24 00:22:50191} // namespace net