Chromium Code Reviews| 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 |