Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: shell/application_manager/network_fetcher.cc

Issue 1155283003: Change AuthenticatingURLLoader to be a URLLoaderInterceptor (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Address review + rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698