OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "shell/application_manager/network_fetcher.h" | 5 #include "shell/application_manager/network_fetcher.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file.h" | 8 #include "base/files/file.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/process/process.h" | 12 #include "base/process/process.h" |
13 #include "base/stl_util.h" | 13 #include "base/stl_util.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
16 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
17 #include "base/trace_event/trace_event.h" | |
17 #include "crypto/secure_hash.h" | 18 #include "crypto/secure_hash.h" |
18 #include "crypto/sha2.h" | 19 #include "crypto/sha2.h" |
19 #include "mojo/common/common_type_converters.h" | 20 #include "mojo/common/common_type_converters.h" |
20 #include "mojo/common/data_pipe_utils.h" | 21 #include "mojo/common/data_pipe_utils.h" |
21 #include "mojo/services/network/public/interfaces/network_service.mojom.h" | 22 #include "mojo/services/network/public/interfaces/network_service.mojom.h" |
22 #include "shell/application_manager/data_pipe_peek.h" | 23 #include "shell/application_manager/data_pipe_peek.h" |
23 | 24 |
24 namespace mojo { | 25 namespace mojo { |
25 namespace shell { | 26 namespace shell { |
26 | 27 |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
175 magic == kMojoMagic; | 176 magic == kMojoMagic; |
176 } | 177 } |
177 | 178 |
178 bool NetworkFetcher::PeekFirstLine(std::string* line) { | 179 bool NetworkFetcher::PeekFirstLine(std::string* line) { |
179 return BlockingPeekLine(response_->body.get(), line, kMaxShebangLength, | 180 return BlockingPeekLine(response_->body.get(), line, kMaxShebangLength, |
180 kPeekTimeout); | 181 kPeekTimeout); |
181 } | 182 } |
182 | 183 |
183 void NetworkFetcher::StartNetworkRequest(const GURL& url, | 184 void NetworkFetcher::StartNetworkRequest(const GURL& url, |
184 NetworkService* network_service) { | 185 NetworkService* network_service) { |
186 TRACE_EVENT_ASYNC_BEGIN0("mojo_shell", "NetworkFetcher::NetworkRequest", | |
viettrungluu
2015/03/24 20:04:34
Maybe also record the url here?
jamesr
2015/03/27 20:42:21
Done.
| |
187 this); | |
185 URLRequestPtr request(URLRequest::New()); | 188 URLRequestPtr request(URLRequest::New()); |
186 request->url = String::From(url); | 189 request->url = String::From(url); |
187 request->auto_follow_redirects = false; | 190 request->auto_follow_redirects = false; |
188 request->bypass_cache = disable_cache_; | 191 request->bypass_cache = disable_cache_; |
189 | 192 |
190 network_service->CreateURLLoader(GetProxy(&url_loader_)); | 193 network_service->CreateURLLoader(GetProxy(&url_loader_)); |
191 url_loader_->Start(request.Pass(), | 194 url_loader_->Start(request.Pass(), |
192 base::Bind(&NetworkFetcher::OnLoadComplete, | 195 base::Bind(&NetworkFetcher::OnLoadComplete, |
193 weak_ptr_factory_.GetWeakPtr())); | 196 weak_ptr_factory_.GetWeakPtr())); |
194 } | 197 } |
195 | 198 |
196 void NetworkFetcher::OnLoadComplete(URLResponsePtr response) { | 199 void NetworkFetcher::OnLoadComplete(URLResponsePtr response) { |
200 TRACE_EVENT_ASYNC_END0("mojo_shell", "NetworkFetcher::NetworkRequest", this); | |
197 if (response->error) { | 201 if (response->error) { |
198 LOG(ERROR) << "Error (" << response->error->code << ": " | 202 LOG(ERROR) << "Error (" << response->error->code << ": " |
199 << response->error->description << ") while fetching " | 203 << response->error->description << ") while fetching " |
200 << response->url; | 204 << response->url; |
201 loader_callback_.Run(make_scoped_ptr<Fetcher>(NULL)); | 205 loader_callback_.Run(make_scoped_ptr<Fetcher>(NULL)); |
202 return; | 206 return; |
203 } | 207 } |
204 | 208 |
205 if (response->status_code >= 400 && response->status_code < 600) { | 209 if (response->status_code >= 400 && response->status_code < 600) { |
206 LOG(ERROR) << "Error (" << response->status_code << ": " | 210 LOG(ERROR) << "Error (" << response->status_code << ": " |
207 << response->status_line << "): " | 211 << response->status_line << "): " |
208 << "while fetching " << response->url; | 212 << "while fetching " << response->url; |
209 loader_callback_.Run(make_scoped_ptr<Fetcher>(NULL)); | 213 loader_callback_.Run(make_scoped_ptr<Fetcher>(NULL)); |
210 return; | 214 return; |
211 } | 215 } |
212 | 216 |
213 response_ = response.Pass(); | 217 response_ = response.Pass(); |
214 loader_callback_.Run(make_scoped_ptr(this)); | 218 loader_callback_.Run(make_scoped_ptr(this)); |
215 } | 219 } |
216 | 220 |
217 } // namespace shell | 221 } // namespace shell |
218 } // namespace mojo | 222 } // namespace mojo |
OLD | NEW |