blob: a63b16e49a7e02b4a6bdb7b777bb1fc96748935c [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
[email protected]597a1ab2014-06-26 08:12:2744void NetworkDelegate::NotifyBeforeSendProxyHeaders(
45 URLRequest* request,
46 const ProxyInfo& proxy_info,
47 HttpRequestHeaders* headers) {
48 DCHECK(CalledOnValidThread());
49 DCHECK(headers);
50 OnBeforeSendProxyHeaders(request, proxy_info, headers);
51}
52
ryansturm2343cb62016-06-15 01:09:0053void NetworkDelegate::NotifyStartTransaction(
54 URLRequest* request,
55 const HttpRequestHeaders& headers) {
ssid6d6b40102016-04-05 18:59:5656 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
ryansturm2343cb62016-06-15 01:09:0057 "NetworkDelegate::NotifyStartTransaction");
[email protected]82b42302011-04-20 16:28:1658 DCHECK(CalledOnValidThread());
ryansturm2343cb62016-06-15 01:09:0059 OnStartTransaction(request, headers);
[email protected]82b42302011-04-20 16:28:1660}
61
[email protected]ea8141e2011-10-05 13:12:5162int NetworkDelegate::NotifyHeadersReceived(
63 URLRequest* request,
[email protected]084262c2011-12-01 21:12:4764 const CompletionCallback& callback,
[email protected]507af8f2012-10-20 00:42:3265 const HttpResponseHeaders* original_response_headers,
[email protected]5f714132014-03-26 10:41:1666 scoped_refptr<HttpResponseHeaders>* override_response_headers,
67 GURL* allowed_unsafe_redirect_url) {
ssid6d6b40102016-04-05 18:59:5668 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
69 "NetworkDelegate::NotifyHeadersReceived");
[email protected]ea8141e2011-10-05 13:12:5170 DCHECK(CalledOnValidThread());
71 DCHECK(original_response_headers);
[email protected]084262c2011-12-01 21:12:4772 DCHECK(!callback.is_null());
[email protected]5f714132014-03-26 10:41:1673 return OnHeadersReceived(request,
74 callback,
75 original_response_headers,
76 override_response_headers,
77 allowed_unsafe_redirect_url);
[email protected]ea8141e2011-10-05 13:12:5178}
79
[email protected]0651b812011-02-24 00:22:5080void NetworkDelegate::NotifyResponseStarted(URLRequest* request) {
81 DCHECK(CalledOnValidThread());
82 DCHECK(request);
83 OnResponseStarted(request);
84}
85
sclittlea133de02015-11-10 23:54:2186void NetworkDelegate::NotifyNetworkBytesReceived(URLRequest* request,
sclittlece72c482015-08-24 20:20:5987 int64_t bytes_received) {
ssid6d6b40102016-04-05 18:59:5688 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
89 "NetworkDelegate::NotifyNetworkBytesReceived");
[email protected]8523ba52011-05-22 19:00:5890 DCHECK(CalledOnValidThread());
sclittlece72c482015-08-24 20:20:5991 DCHECK_GT(bytes_received, 0);
92 OnNetworkBytesReceived(request, bytes_received);
[email protected]8523ba52011-05-22 19:00:5893}
94
sclittlea133de02015-11-10 23:54:2195void NetworkDelegate::NotifyNetworkBytesSent(URLRequest* request,
sclittle28d558b2015-09-28 21:40:5296 int64_t bytes_sent) {
97 DCHECK(CalledOnValidThread());
98 DCHECK_GT(bytes_sent, 0);
99 OnNetworkBytesSent(request, bytes_sent);
100}
101
[email protected]31b2e5f2011-04-20 16:58:32102void NetworkDelegate::NotifyBeforeRedirect(URLRequest* request,
103 const GURL& new_location) {
104 DCHECK(CalledOnValidThread());
105 DCHECK(request);
106 OnBeforeRedirect(request, new_location);
107}
108
[email protected]9045b8822012-01-13 20:35:35109void NetworkDelegate::NotifyCompleted(URLRequest* request, bool started) {
ssid6d6b40102016-04-05 18:59:56110 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
111 "NetworkDelegate::NotifyCompleted");
[email protected]0651b812011-02-24 00:22:50112 DCHECK(CalledOnValidThread());
113 DCHECK(request);
pkasting941842c2015-04-11 01:51:30114 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
vadimt844c15572014-11-04 22:55:57115 tracked_objects::ScopedTracker tracking_profile(
pkasting941842c2015-04-11 01:51:30116 FROM_HERE_WITH_EXPLICIT_FUNCTION("475753 NetworkDelegate::OnCompleted"));
[email protected]9045b8822012-01-13 20:35:35117 OnCompleted(request, started);
[email protected]0651b812011-02-24 00:22:50118}
119
[email protected]4875ba12011-03-30 22:31:51120void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) {
ssid6d6b40102016-04-05 18:59:56121 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
122 "NetworkDelegate::NotifyURLRequestDestroyed");
[email protected]5aa20132011-04-27 23:11:34123 DCHECK(CalledOnValidThread());
[email protected]4875ba12011-03-30 22:31:51124 DCHECK(request);
[email protected]5aa20132011-04-27 23:11:34125 OnURLRequestDestroyed(request);
126}
127
[email protected]82a37672011-05-03 12:02:41128void NetworkDelegate::NotifyPACScriptError(int line_number,
[email protected]42cba2fb2013-03-29 19:58:57129 const base::string16& error) {
[email protected]82a37672011-05-03 12:02:41130 DCHECK(CalledOnValidThread());
131 OnPACScriptError(line_number, error);
132}
133
[email protected]c2911d72011-10-03 22:16:36134NetworkDelegate::AuthRequiredResponse NetworkDelegate::NotifyAuthRequired(
135 URLRequest* request,
136 const AuthChallengeInfo& auth_info,
137 const AuthCallback& callback,
138 AuthCredentials* credentials) {
[email protected]7efc582d2011-08-03 20:46:35139 DCHECK(CalledOnValidThread());
[email protected]c2911d72011-10-03 22:16:36140 return OnAuthRequired(request, auth_info, callback, credentials);
[email protected]7efc582d2011-08-03 20:46:35141}
142
[email protected]4c219e22012-05-05 19:41:04143bool NetworkDelegate::CanGetCookies(const URLRequest& request,
144 const CookieList& cookie_list) {
[email protected]9c8ae8c2012-03-09 13:13:35145 DCHECK(CalledOnValidThread());
ttuttle859dc7a2015-04-23 19:42:29146 DCHECK(!(request.load_flags() & LOAD_DO_NOT_SEND_COOKIES));
[email protected]4c219e22012-05-05 19:41:04147 return OnCanGetCookies(request, cookie_list);
[email protected]9c8ae8c2012-03-09 13:13:35148}
149
[email protected]f33e6872013-05-07 07:00:37150bool NetworkDelegate::CanSetCookie(const URLRequest& request,
151 const std::string& cookie_line,
152 CookieOptions* options) {
[email protected]9c8ae8c2012-03-09 13:13:35153 DCHECK(CalledOnValidThread());
ttuttle859dc7a2015-04-23 19:42:29154 DCHECK(!(request.load_flags() & LOAD_DO_NOT_SAVE_COOKIES));
[email protected]4c219e22012-05-05 19:41:04155 return OnCanSetCookie(request, cookie_line, options);
156}
157
158bool NetworkDelegate::CanAccessFile(const URLRequest& request,
[email protected]a3ef4832013-02-02 05:12:33159 const base::FilePath& path) const {
[email protected]4c219e22012-05-05 19:41:04160 DCHECK(CalledOnValidThread());
161 return OnCanAccessFile(request, path);
[email protected]9c8ae8c2012-03-09 13:13:35162}
163
[email protected]e6d017652013-05-17 18:01:40164bool NetworkDelegate::CanEnablePrivacyMode(
165 const GURL& url,
166 const GURL& first_party_for_cookies) const {
ssid6d6b40102016-04-05 18:59:56167 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
168 "NetworkDelegate::CanEnablePrivacyMode");
[email protected]e6d017652013-05-17 18:01:40169 DCHECK(CalledOnValidThread());
170 return OnCanEnablePrivacyMode(url, first_party_for_cookies);
171}
172
estark7625d812015-10-12 20:10:41173bool NetworkDelegate::AreExperimentalCookieFeaturesEnabled() const {
174 return OnAreExperimentalCookieFeaturesEnabled();
mkwst0513c9d2015-04-01 05:53:15175}
176
jww79aceda2015-12-07 01:56:34177bool NetworkDelegate::AreStrictSecureCookiesEnabled() const {
178 return OnAreStrictSecureCookiesEnabled();
179}
180
jochen0e3b3a62014-09-16 18:31:23181bool NetworkDelegate::CancelURLRequestWithPolicyViolatingReferrerHeader(
182 const URLRequest& request,
183 const GURL& target_url,
184 const GURL& referrer_url) const {
185 DCHECK(CalledOnValidThread());
186 return OnCancelURLRequestWithPolicyViolatingReferrerHeader(
187 request, target_url, referrer_url);
188}
189
[email protected]0651b812011-02-24 00:22:50190} // namespace net