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 "net/proxy/proxy_script_fetcher_impl.h" | 5 #include "net/proxy/proxy_script_fetcher_impl.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/profiler/scoped_tracker.h" | |
10 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
11 #include "net/base/data_url.h" | 12 #include "net/base/data_url.h" |
12 #include "net/base/io_buffer.h" | 13 #include "net/base/io_buffer.h" |
13 #include "net/base/load_flags.h" | 14 #include "net/base/load_flags.h" |
14 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
15 #include "net/base/net_string_util.h" | 16 #include "net/base/net_string_util.h" |
16 #include "net/base/request_priority.h" | 17 #include "net/base/request_priority.h" |
17 #include "net/cert/cert_status_flags.h" | 18 #include "net/cert/cert_status_flags.h" |
18 #include "net/http/http_response_headers.h" | 19 #include "net/http/http_response_headers.h" |
19 #include "net/url_request/url_request_context.h" | 20 #include "net/url_request/url_request_context.h" |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
107 // Use |result_code_| as the request's error if we have already set it to | 108 // Use |result_code_| as the request's error if we have already set it to |
108 // something specific. | 109 // something specific. |
109 if (result_code_ == OK && !request->status().is_success()) | 110 if (result_code_ == OK && !request->status().is_success()) |
110 result_code_ = request->status().error(); | 111 result_code_ = request->status().error(); |
111 | 112 |
112 FetchCompleted(); | 113 FetchCompleted(); |
113 } | 114 } |
114 | 115 |
115 int ProxyScriptFetcherImpl::Fetch( | 116 int ProxyScriptFetcherImpl::Fetch( |
116 const GURL& url, base::string16* text, const CompletionCallback& callback) { | 117 const GURL& url, base::string16* text, const CompletionCallback& callback) { |
118 // TODO(eroman): Remove ScopedTracker below once crbug.com/455942 is fixed. | |
119 tracked_objects::ScopedTracker tracking_profile1( | |
120 FROM_HERE_WITH_EXPLICIT_FUNCTION( | |
121 "455942 ProxyScriptFetcherImpl::Fetch (Other)")); | |
122 | |
117 // It is invalid to call Fetch() while a request is already in progress. | 123 // It is invalid to call Fetch() while a request is already in progress. |
118 DCHECK(!cur_request_.get()); | 124 DCHECK(!cur_request_.get()); |
119 DCHECK(!callback.is_null()); | 125 DCHECK(!callback.is_null()); |
120 DCHECK(text); | 126 DCHECK(text); |
121 | 127 |
122 // Handle base-64 encoded data-urls that contain custom PAC scripts. | 128 // Handle base-64 encoded data-urls that contain custom PAC scripts. |
123 if (url.SchemeIs("data")) { | 129 if (url.SchemeIs("data")) { |
130 // TODO(eroman): Remove ScopedTracker below once crbug.com/455942 is fixed. | |
131 tracked_objects::ScopedTracker tracking_profile2( | |
132 FROM_HERE_WITH_EXPLICIT_FUNCTION( | |
133 "455942 ProxyScriptFetcherImpl::Fetch (data url)")); | |
124 std::string mime_type; | 134 std::string mime_type; |
125 std::string charset; | 135 std::string charset; |
126 std::string data; | 136 std::string data; |
127 if (!DataURL::Parse(url, &mime_type, &charset, &data)) | 137 if (!DataURL::Parse(url, &mime_type, &charset, &data)) |
128 return ERR_FAILED; | 138 return ERR_FAILED; |
129 | 139 |
130 ConvertResponseToUTF16(charset, data, text); | 140 ConvertResponseToUTF16(charset, data, text); |
131 return OK; | 141 return OK; |
132 } | 142 } |
133 | 143 |
(...skipping 14 matching lines...) Expand all Loading... | |
148 LOAD_DISABLE_CERT_REVOCATION_CHECKING); | 158 LOAD_DISABLE_CERT_REVOCATION_CHECKING); |
149 | 159 |
150 // Save the caller's info for notification on completion. | 160 // Save the caller's info for notification on completion. |
151 callback_ = callback; | 161 callback_ = callback; |
152 result_text_ = text; | 162 result_text_ = text; |
153 | 163 |
154 bytes_read_so_far_.clear(); | 164 bytes_read_so_far_.clear(); |
155 | 165 |
156 // Post a task to timeout this request if it takes too long. | 166 // Post a task to timeout this request if it takes too long. |
157 cur_request_id_ = ++next_id_; | 167 cur_request_id_ = ++next_id_; |
168 | |
169 // TODO(eroman): Remove ScopedTracker below once crbug.com/455942 is fixed. | |
170 tracked_objects::ScopedTracker tracking_profile3( | |
171 FROM_HERE_WITH_EXPLICIT_FUNCTION( | |
172 "455942 ProxyScriptFetcherImpl::Fetch (PostDelayedTask)")); | |
173 | |
158 base::MessageLoop::current()->PostDelayedTask( | 174 base::MessageLoop::current()->PostDelayedTask( |
159 FROM_HERE, | 175 FROM_HERE, |
160 base::Bind(&ProxyScriptFetcherImpl::OnTimeout, | 176 base::Bind(&ProxyScriptFetcherImpl::OnTimeout, |
161 weak_factory_.GetWeakPtr(), | 177 weak_factory_.GetWeakPtr(), |
162 cur_request_id_), | 178 cur_request_id_), |
163 max_duration_); | 179 max_duration_); |
164 | 180 |
165 // Start the request. | 181 // Start the request. |
166 cur_request_->Start(); | 182 cur_request_->Start(); |
mmenke
2015/04/23 21:32:51
Hrm...Some poor soul is also stuck looking into ja
eroman
2015/04/23 22:50:46
Heh, I wonder who that poor soul might be...
I gue
| |
167 return ERR_IO_PENDING; | 183 return ERR_IO_PENDING; |
168 } | 184 } |
169 | 185 |
170 void ProxyScriptFetcherImpl::Cancel() { | 186 void ProxyScriptFetcherImpl::Cancel() { |
171 // ResetCurRequestState will free the URLRequest, which will cause | 187 // ResetCurRequestState will free the URLRequest, which will cause |
172 // cancellation. | 188 // cancellation. |
173 ResetCurRequestState(); | 189 ResetCurRequestState(); |
174 } | 190 } |
175 | 191 |
176 URLRequestContext* ProxyScriptFetcherImpl::GetRequestContext() const { | 192 URLRequestContext* ProxyScriptFetcherImpl::GetRequestContext() const { |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
311 // is still applicable. | 327 // is still applicable. |
312 if (cur_request_id_ != id) | 328 if (cur_request_id_ != id) |
313 return; | 329 return; |
314 | 330 |
315 DCHECK(cur_request_.get()); | 331 DCHECK(cur_request_.get()); |
316 result_code_ = ERR_TIMED_OUT; | 332 result_code_ = ERR_TIMED_OUT; |
317 cur_request_->Cancel(); | 333 cur_request_->Cancel(); |
318 } | 334 } |
319 | 335 |
320 } // namespace net | 336 } // namespace net |
OLD | NEW |