| 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/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/files/file.h" | 9 #include "base/files/file.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 #else | 32 #else |
| 33 #error "Unsupported." | 33 #error "Unsupported." |
| 34 #endif | 34 #endif |
| 35 }; | 35 }; |
| 36 | 36 |
| 37 NetworkFetcher::NetworkFetcher( | 37 NetworkFetcher::NetworkFetcher( |
| 38 bool disable_cache, | 38 bool disable_cache, |
| 39 bool predictable_app_filenames, | 39 bool predictable_app_filenames, |
| 40 const GURL& url, | 40 const GURL& url, |
| 41 mojo::URLResponseDiskCache* url_response_disk_cache, | 41 mojo::URLResponseDiskCache* url_response_disk_cache, |
| 42 mojo::AuthenticatingURLLoaderFactory* url_loader_factory, | 42 mojo::NetworkService* network_service, |
| 43 const FetchCallback& loader_callback) | 43 const FetchCallback& loader_callback) |
| 44 : Fetcher(loader_callback), | 44 : Fetcher(loader_callback), |
| 45 disable_cache_(disable_cache), | 45 disable_cache_(disable_cache), |
| 46 predictable_app_filenames_(predictable_app_filenames), | 46 predictable_app_filenames_(predictable_app_filenames), |
| 47 url_(url), | 47 url_(url), |
| 48 url_response_disk_cache_(url_response_disk_cache), | 48 url_response_disk_cache_(url_response_disk_cache), |
| 49 weak_ptr_factory_(this) { | 49 weak_ptr_factory_(this) { |
| 50 StartNetworkRequest(url, url_loader_factory); | 50 StartNetworkRequest(url, network_service); |
| 51 } | 51 } |
| 52 | 52 |
| 53 NetworkFetcher::~NetworkFetcher() { | 53 NetworkFetcher::~NetworkFetcher() { |
| 54 } | 54 } |
| 55 | 55 |
| 56 const GURL& NetworkFetcher::GetURL() const { | 56 const GURL& NetworkFetcher::GetURL() const { |
| 57 return url_; | 57 return url_; |
| 58 } | 58 } |
| 59 | 59 |
| 60 GURL NetworkFetcher::GetRedirectURL() const { | 60 GURL NetworkFetcher::GetRedirectURL() const { |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 magic == kMojoMagic; | 210 magic == kMojoMagic; |
| 211 } | 211 } |
| 212 | 212 |
| 213 bool NetworkFetcher::PeekFirstLine(std::string* line) { | 213 bool NetworkFetcher::PeekFirstLine(std::string* line) { |
| 214 return BlockingPeekLine(response_->body.get(), line, kMaxShebangLength, | 214 return BlockingPeekLine(response_->body.get(), line, kMaxShebangLength, |
| 215 kPeekTimeout); | 215 kPeekTimeout); |
| 216 } | 216 } |
| 217 | 217 |
| 218 void NetworkFetcher::StartNetworkRequest( | 218 void NetworkFetcher::StartNetworkRequest( |
| 219 const GURL& url, | 219 const GURL& url, |
| 220 mojo::AuthenticatingURLLoaderFactory* url_loader_factory) { | 220 mojo::NetworkService* network_service) { |
| 221 TRACE_EVENT_ASYNC_BEGIN1("mojo_shell", "NetworkFetcher::NetworkRequest", this, | 221 TRACE_EVENT_ASYNC_BEGIN1("mojo_shell", "NetworkFetcher::NetworkRequest", this, |
| 222 "url", url.spec()); | 222 "url", url.spec()); |
| 223 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 223 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 224 request->url = mojo::String::From(url); | 224 request->url = mojo::String::From(url); |
| 225 request->auto_follow_redirects = false; | 225 request->auto_follow_redirects = false; |
| 226 request->bypass_cache = disable_cache_; | 226 request->bypass_cache = disable_cache_; |
| 227 auto header = mojo::HttpHeader::New(); | 227 auto header = mojo::HttpHeader::New(); |
| 228 header->name = "X-Architecture"; | 228 header->name = "X-Architecture"; |
| 229 header->value = kArchitecture; | 229 header->value = kArchitecture; |
| 230 mojo::Array<mojo::HttpHeaderPtr> headers; | 230 mojo::Array<mojo::HttpHeaderPtr> headers; |
| 231 headers.push_back(header.Pass()); | 231 headers.push_back(header.Pass()); |
| 232 request->headers = headers.Pass(); | 232 request->headers = headers.Pass(); |
| 233 | 233 |
| 234 url_loader_factory->CreateAuthenticatingURLLoader(GetProxy(&url_loader_)); | 234 network_service->CreateURLLoader(GetProxy(&url_loader_)); |
| 235 url_loader_->Start(request.Pass(), | 235 url_loader_->Start(request.Pass(), |
| 236 base::Bind(&NetworkFetcher::OnLoadComplete, | 236 base::Bind(&NetworkFetcher::OnLoadComplete, |
| 237 weak_ptr_factory_.GetWeakPtr())); | 237 weak_ptr_factory_.GetWeakPtr())); |
| 238 } | 238 } |
| 239 | 239 |
| 240 void NetworkFetcher::OnLoadComplete(mojo::URLResponsePtr response) { | 240 void NetworkFetcher::OnLoadComplete(mojo::URLResponsePtr response) { |
| 241 TRACE_EVENT_ASYNC_END0("mojo_shell", "NetworkFetcher::NetworkRequest", this); | 241 TRACE_EVENT_ASYNC_END0("mojo_shell", "NetworkFetcher::NetworkRequest", this); |
| 242 scoped_ptr<Fetcher> owner(this); | 242 scoped_ptr<Fetcher> owner(this); |
| 243 if (response->error) { | 243 if (response->error) { |
| 244 LOG(ERROR) << "Error (" << response->error->code << ": " | 244 LOG(ERROR) << "Error (" << response->error->code << ": " |
| 245 << response->error->description << ") while fetching " | 245 << response->error->description << ") while fetching " |
| 246 << response->url; | 246 << response->url; |
| 247 loader_callback_.Run(nullptr); | 247 loader_callback_.Run(nullptr); |
| 248 return; | 248 return; |
| 249 } | 249 } |
| 250 | 250 |
| 251 if (response->status_code >= 400 && response->status_code < 600) { | 251 if (response->status_code >= 400 && response->status_code < 600) { |
| 252 LOG(ERROR) << "Error (" << response->status_code << ": " | 252 LOG(ERROR) << "Error (" << response->status_code << ": " |
| 253 << response->status_line << "): " | 253 << response->status_line << "): " |
| 254 << "while fetching " << response->url; | 254 << "while fetching " << response->url; |
| 255 loader_callback_.Run(nullptr); | 255 loader_callback_.Run(nullptr); |
| 256 return; | 256 return; |
| 257 } | 257 } |
| 258 | 258 |
| 259 response_ = response.Pass(); | 259 response_ = response.Pass(); |
| 260 loader_callback_.Run(owner.Pass()); | 260 loader_callback_.Run(owner.Pass()); |
| 261 } | 261 } |
| 262 | 262 |
| 263 } // namespace shell | 263 } // namespace shell |
| OLD | NEW |