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

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

Issue 1121783003: Move navigations with POST or referrer to the shell. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 5 years, 7 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
« no previous file with comments | « mojo/shell/network_fetcher.h ('k') | mojo/shell/shell_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "mojo/shell/network_fetcher.h" 5 #include "mojo/shell/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 12 matching lines...) Expand all
23 #include "mojo/common/data_pipe_utils.h" 23 #include "mojo/common/data_pipe_utils.h"
24 #include "mojo/common/url_type_converters.h" 24 #include "mojo/common/url_type_converters.h"
25 #include "mojo/services/network/public/interfaces/network_service.mojom.h" 25 #include "mojo/services/network/public/interfaces/network_service.mojom.h"
26 #include "mojo/shell/data_pipe_peek.h" 26 #include "mojo/shell/data_pipe_peek.h"
27 #include "mojo/shell/switches.h" 27 #include "mojo/shell/switches.h"
28 28
29 namespace mojo { 29 namespace mojo {
30 namespace shell { 30 namespace shell {
31 31
32 NetworkFetcher::NetworkFetcher(bool disable_cache, 32 NetworkFetcher::NetworkFetcher(bool disable_cache,
33 const GURL& url, 33 mojo::URLRequestPtr request,
34 NetworkService* network_service, 34 NetworkService* network_service,
35 const FetchCallback& loader_callback) 35 const FetchCallback& loader_callback)
36 : Fetcher(loader_callback), 36 : Fetcher(loader_callback),
37 disable_cache_(false), 37 disable_cache_(false),
38 url_(url), 38 url_(request->url.To<GURL>()),
39 weak_ptr_factory_(this) { 39 weak_ptr_factory_(this) {
40 StartNetworkRequest(url, network_service); 40 StartNetworkRequest(request.Pass(), network_service);
41 } 41 }
42 42
43 NetworkFetcher::~NetworkFetcher() { 43 NetworkFetcher::~NetworkFetcher() {
44 } 44 }
45 45
46 const GURL& NetworkFetcher::GetURL() const { 46 const GURL& NetworkFetcher::GetURL() const {
47 return url_; 47 return url_;
48 } 48 }
49 49
50 GURL NetworkFetcher::GetRedirectURL() const { 50 GURL NetworkFetcher::GetRedirectURL() const {
51 if (!response_) 51 if (!response_)
52 return GURL::EmptyGURL(); 52 return GURL::EmptyGURL();
53 53
54 if (response_->redirect_url.is_null()) 54 if (response_->redirect_url.is_null())
55 return GURL::EmptyGURL(); 55 return GURL::EmptyGURL();
56 56
57 return GURL(response_->redirect_url); 57 return GURL(response_->redirect_url);
58 } 58 }
59 59
60 GURL NetworkFetcher::GetRedirectReferer() const {
61 if (!response_)
62 return GURL::EmptyGURL();
63
64 if (response_->redirect_referrer.is_null())
65 return GURL::EmptyGURL();
66
67 return GURL(response_->redirect_referrer);
68 }
60 URLResponsePtr NetworkFetcher::AsURLResponse(base::TaskRunner* task_runner, 69 URLResponsePtr NetworkFetcher::AsURLResponse(base::TaskRunner* task_runner,
61 uint32_t skip) { 70 uint32_t skip) {
62 if (skip != 0) { 71 if (skip != 0) {
63 MojoResult result = ReadDataRaw( 72 MojoResult result = ReadDataRaw(
64 response_->body.get(), nullptr, &skip, 73 response_->body.get(), nullptr, &skip,
65 MOJO_READ_DATA_FLAG_ALL_OR_NONE | MOJO_READ_DATA_FLAG_DISCARD); 74 MOJO_READ_DATA_FLAG_ALL_OR_NONE | MOJO_READ_DATA_FLAG_DISCARD);
66 DCHECK_EQ(result, MOJO_RESULT_OK); 75 DCHECK_EQ(result, MOJO_RESULT_OK);
67 } 76 }
68 return response_.Pass(); 77 return response_.Pass();
69 } 78 }
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 return BlockingPeekNBytes(response_->body.get(), &magic, strlen(kMojoMagic), 211 return BlockingPeekNBytes(response_->body.get(), &magic, strlen(kMojoMagic),
203 kPeekTimeout) && 212 kPeekTimeout) &&
204 magic == kMojoMagic; 213 magic == kMojoMagic;
205 } 214 }
206 215
207 bool NetworkFetcher::PeekFirstLine(std::string* line) { 216 bool NetworkFetcher::PeekFirstLine(std::string* line) {
208 return BlockingPeekLine(response_->body.get(), line, kMaxShebangLength, 217 return BlockingPeekLine(response_->body.get(), line, kMaxShebangLength,
209 kPeekTimeout); 218 kPeekTimeout);
210 } 219 }
211 220
212 void NetworkFetcher::StartNetworkRequest(const GURL& url, 221 void NetworkFetcher::StartNetworkRequest(mojo::URLRequestPtr request,
213 NetworkService* network_service) { 222 NetworkService* network_service) {
214 TRACE_EVENT_ASYNC_BEGIN1("mojo_shell", "NetworkFetcher::NetworkRequest", this, 223 TRACE_EVENT_ASYNC_BEGIN1("mojo_shell", "NetworkFetcher::NetworkRequest", this,
215 "url", url.spec()); 224 "url", request->url.To<std::string>());
216 URLRequestPtr request(URLRequest::New());
217 request->url = String::From(url);
218 request->auto_follow_redirects = false; 225 request->auto_follow_redirects = false;
219 request->bypass_cache = disable_cache_; 226 request->bypass_cache = disable_cache_;
220 227
221 network_service->CreateURLLoader(GetProxy(&url_loader_)); 228 network_service->CreateURLLoader(GetProxy(&url_loader_));
222 url_loader_->Start(request.Pass(), 229 url_loader_->Start(request.Pass(),
223 base::Bind(&NetworkFetcher::OnLoadComplete, 230 base::Bind(&NetworkFetcher::OnLoadComplete,
224 weak_ptr_factory_.GetWeakPtr())); 231 weak_ptr_factory_.GetWeakPtr()));
225 } 232 }
226 233
227 void NetworkFetcher::OnLoadComplete(URLResponsePtr response) { 234 void NetworkFetcher::OnLoadComplete(URLResponsePtr response) {
(...skipping 14 matching lines...) Expand all
242 loader_callback_.Run(nullptr); 249 loader_callback_.Run(nullptr);
243 return; 250 return;
244 } 251 }
245 252
246 response_ = response.Pass(); 253 response_ = response.Pass();
247 loader_callback_.Run(owner.Pass()); 254 loader_callback_.Run(owner.Pass());
248 } 255 }
249 256
250 } // namespace shell 257 } // namespace shell
251 } // namespace mojo 258 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/shell/network_fetcher.h ('k') | mojo/shell/shell_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698