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

Side by Side Diff: headless/public/util/generic_url_request_job.cc

Issue 2888053002: Rename TaskRunner::RunsTasksOnCurrentThread() in //extensions, //headless, //mojo (Closed)
Patch Set: Created 3 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "headless/public/util/generic_url_request_job.h" 5 #include "headless/public/util/generic_url_request_job.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 #include <algorithm> 8 #include <algorithm>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 30 matching lines...) Expand all
41 url_fetcher_(std::move(url_fetcher)), 41 url_fetcher_(std::move(url_fetcher)),
42 origin_task_runner_(base::ThreadTaskRunnerHandle::Get()), 42 origin_task_runner_(base::ThreadTaskRunnerHandle::Get()),
43 delegate_(delegate), 43 delegate_(delegate),
44 headless_browser_context_(headless_browser_context), 44 headless_browser_context_(headless_browser_context),
45 request_resource_info_( 45 request_resource_info_(
46 content::ResourceRequestInfo::ForRequest(request_)), 46 content::ResourceRequestInfo::ForRequest(request_)),
47 request_id_(next_request_id_++), 47 request_id_(next_request_id_++),
48 weak_factory_(this) {} 48 weak_factory_(this) {}
49 49
50 GenericURLRequestJob::~GenericURLRequestJob() { 50 GenericURLRequestJob::~GenericURLRequestJob() {
51 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 51 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
52 } 52 }
53 53
54 void GenericURLRequestJob::SetExtraRequestHeaders( 54 void GenericURLRequestJob::SetExtraRequestHeaders(
55 const net::HttpRequestHeaders& headers) { 55 const net::HttpRequestHeaders& headers) {
56 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 56 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
57 extra_request_headers_ = headers; 57 extra_request_headers_ = headers;
58 } 58 }
59 59
60 void GenericURLRequestJob::Start() { 60 void GenericURLRequestJob::Start() {
61 PrepareCookies(request_->url(), request_->method(), 61 PrepareCookies(request_->url(), request_->method(),
62 url::Origin(request_->first_party_for_cookies()), 62 url::Origin(request_->first_party_for_cookies()),
63 base::Bind(&Delegate::OnPendingRequest, 63 base::Bind(&Delegate::OnPendingRequest,
64 base::Unretained(delegate_), this)); 64 base::Unretained(delegate_), this));
65 } 65 }
66 66
67 void GenericURLRequestJob::PrepareCookies(const GURL& rewritten_url, 67 void GenericURLRequestJob::PrepareCookies(const GURL& rewritten_url,
68 const std::string& method, 68 const std::string& method,
69 const url::Origin& site_for_cookies, 69 const url::Origin& site_for_cookies,
70 const base::Closure& done_callback) { 70 const base::Closure& done_callback) {
71 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 71 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
72 net::CookieStore* cookie_store = request_->context()->cookie_store(); 72 net::CookieStore* cookie_store = request_->context()->cookie_store();
73 net::CookieOptions options; 73 net::CookieOptions options;
74 options.set_include_httponly(); 74 options.set_include_httponly();
75 75
76 // See net::URLRequestHttpJob::AddCookieHeaderAndStart(). 76 // See net::URLRequestHttpJob::AddCookieHeaderAndStart().
77 url::Origin requested_origin(rewritten_url); 77 url::Origin requested_origin(rewritten_url);
78 if (net::registry_controlled_domains::SameDomainOrHost( 78 if (net::registry_controlled_domains::SameDomainOrHost(
79 requested_origin, site_for_cookies, 79 requested_origin, site_for_cookies,
80 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)) { 80 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)) {
81 if (net::registry_controlled_domains::SameDomainOrHost( 81 if (net::registry_controlled_domains::SameDomainOrHost(
(...skipping 12 matching lines...) Expand all
94 base::Bind(&GenericURLRequestJob::OnCookiesAvailable, 94 base::Bind(&GenericURLRequestJob::OnCookiesAvailable,
95 weak_factory_.GetWeakPtr(), rewritten_url, method, 95 weak_factory_.GetWeakPtr(), rewritten_url, method,
96 done_callback)); 96 done_callback));
97 } 97 }
98 98
99 void GenericURLRequestJob::OnCookiesAvailable( 99 void GenericURLRequestJob::OnCookiesAvailable(
100 const GURL& rewritten_url, 100 const GURL& rewritten_url,
101 const std::string& method, 101 const std::string& method,
102 const base::Closure& done_callback, 102 const base::Closure& done_callback,
103 const net::CookieList& cookie_list) { 103 const net::CookieList& cookie_list) {
104 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 104 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
105 // TODO(alexclarke): Set user agent. 105 // TODO(alexclarke): Set user agent.
106 // Pass cookies, the referrer and any extra headers into the fetch request. 106 // Pass cookies, the referrer and any extra headers into the fetch request.
107 std::string cookie = net::CookieStore::BuildCookieLine(cookie_list); 107 std::string cookie = net::CookieStore::BuildCookieLine(cookie_list);
108 if (!cookie.empty()) 108 if (!cookie.empty())
109 extra_request_headers_.SetHeader(net::HttpRequestHeaders::kCookie, cookie); 109 extra_request_headers_.SetHeader(net::HttpRequestHeaders::kCookie, cookie);
110 110
111 if (!request_->referrer().empty()) { 111 if (!request_->referrer().empty()) {
112 extra_request_headers_.SetHeader(net::HttpRequestHeaders::kReferer, 112 extra_request_headers_.SetHeader(net::HttpRequestHeaders::kReferer,
113 request_->referrer()); 113 request_->referrer());
114 } 114 }
115 115
116 done_callback.Run(); 116 done_callback.Run();
117 } 117 }
118 118
119 void GenericURLRequestJob::OnFetchStartError(net::Error error) { 119 void GenericURLRequestJob::OnFetchStartError(net::Error error) {
120 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 120 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
121 DispatchStartError(error); 121 DispatchStartError(error);
122 delegate_->OnResourceLoadFailed(this, error); 122 delegate_->OnResourceLoadFailed(this, error);
123 } 123 }
124 124
125 void GenericURLRequestJob::OnFetchComplete( 125 void GenericURLRequestJob::OnFetchComplete(
126 const GURL& final_url, 126 const GURL& final_url,
127 scoped_refptr<net::HttpResponseHeaders> response_headers, 127 scoped_refptr<net::HttpResponseHeaders> response_headers,
128 const char* body, 128 const char* body,
129 size_t body_size) { 129 size_t body_size) {
130 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 130 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
131 response_time_ = base::TimeTicks::Now(); 131 response_time_ = base::TimeTicks::Now();
132 response_headers_ = response_headers; 132 response_headers_ = response_headers;
133 body_ = body; 133 body_ = body;
134 body_size_ = body_size; 134 body_size_ = body_size;
135 135
136 DispatchHeadersComplete(); 136 DispatchHeadersComplete();
137 137
138 delegate_->OnResourceLoadComplete(this, final_url, response_headers_, body_, 138 delegate_->OnResourceLoadComplete(this, final_url, response_headers_, body_,
139 body_size_); 139 body_size_);
140 } 140 }
141 141
142 int GenericURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) { 142 int GenericURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) {
143 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); 143 DCHECK(origin_task_runner_->RunsTasksInCurrentSequence());
144 // TODO(skyostil): Implement ranged fetches. 144 // TODO(skyostil): Implement ranged fetches.
145 // TODO(alexclarke): Add coverage for all the cases below. 145 // TODO(alexclarke): Add coverage for all the cases below.
146 size_t bytes_available = body_size_ - read_offset_; 146 size_t bytes_available = body_size_ - read_offset_;
147 size_t bytes_to_copy = 147 size_t bytes_to_copy =
148 std::min(static_cast<size_t>(buf_size), bytes_available); 148 std::min(static_cast<size_t>(buf_size), bytes_available);
149 if (bytes_to_copy) { 149 if (bytes_to_copy) {
150 std::memcpy(buf->data(), &body_[read_offset_], bytes_to_copy); 150 std::memcpy(buf->data(), &body_[read_offset_], bytes_to_copy);
151 read_offset_ += bytes_to_copy; 151 read_offset_ += bytes_to_copy;
152 } 152 }
153 return bytes_to_copy; 153 return bytes_to_copy;
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 const net::UploadBytesElementReader* reader = 273 const net::UploadBytesElementReader* reader =
274 (*stream->GetElementReaders())[0]->AsBytesReader(); 274 (*stream->GetElementReaders())[0]->AsBytesReader();
275 return std::string(reader->bytes(), reader->length()); 275 return std::string(reader->bytes(), reader->length());
276 } 276 }
277 277
278 const Request* GenericURLRequestJob::GetRequest() const { 278 const Request* GenericURLRequestJob::GetRequest() const {
279 return this; 279 return this;
280 } 280 }
281 281
282 void GenericURLRequestJob::AllowRequest() { 282 void GenericURLRequestJob::AllowRequest() {
283 if (!origin_task_runner_->RunsTasksOnCurrentThread()) { 283 if (!origin_task_runner_->RunsTasksInCurrentSequence()) {
284 origin_task_runner_->PostTask( 284 origin_task_runner_->PostTask(
285 FROM_HERE, base::Bind(&GenericURLRequestJob::AllowRequest, 285 FROM_HERE, base::Bind(&GenericURLRequestJob::AllowRequest,
286 weak_factory_.GetWeakPtr())); 286 weak_factory_.GetWeakPtr()));
287 return; 287 return;
288 } 288 }
289 289
290 url_fetcher_->StartFetch(request_->url(), request_->method(), GetPostData(), 290 url_fetcher_->StartFetch(request_->url(), request_->method(), GetPostData(),
291 extra_request_headers_, this); 291 extra_request_headers_, this);
292 } 292 }
293 293
294 void GenericURLRequestJob::BlockRequest(net::Error error) { 294 void GenericURLRequestJob::BlockRequest(net::Error error) {
295 if (!origin_task_runner_->RunsTasksOnCurrentThread()) { 295 if (!origin_task_runner_->RunsTasksInCurrentSequence()) {
296 origin_task_runner_->PostTask( 296 origin_task_runner_->PostTask(
297 FROM_HERE, base::Bind(&GenericURLRequestJob::BlockRequest, 297 FROM_HERE, base::Bind(&GenericURLRequestJob::BlockRequest,
298 weak_factory_.GetWeakPtr(), error)); 298 weak_factory_.GetWeakPtr(), error));
299 return; 299 return;
300 } 300 }
301 301
302 DispatchStartError(error); 302 DispatchStartError(error);
303 } 303 }
304 304
305 void GenericURLRequestJob::ModifyRequest( 305 void GenericURLRequestJob::ModifyRequest(
306 const GURL& url, 306 const GURL& url,
307 const std::string& method, 307 const std::string& method,
308 const std::string& post_data, 308 const std::string& post_data,
309 const net::HttpRequestHeaders& request_headers) { 309 const net::HttpRequestHeaders& request_headers) {
310 if (!origin_task_runner_->RunsTasksOnCurrentThread()) { 310 if (!origin_task_runner_->RunsTasksInCurrentSequence()) {
311 origin_task_runner_->PostTask( 311 origin_task_runner_->PostTask(
312 FROM_HERE, base::Bind(&GenericURLRequestJob::ModifyRequest, 312 FROM_HERE, base::Bind(&GenericURLRequestJob::ModifyRequest,
313 weak_factory_.GetWeakPtr(), url, method, 313 weak_factory_.GetWeakPtr(), url, method,
314 post_data, request_headers)); 314 post_data, request_headers));
315 return; 315 return;
316 } 316 }
317 317
318 extra_request_headers_ = request_headers; 318 extra_request_headers_ = request_headers;
319 PrepareCookies( 319 PrepareCookies(
320 request_->url(), request_->method(), 320 request_->url(), request_->method(),
321 url::Origin(request_->first_party_for_cookies()), 321 url::Origin(request_->first_party_for_cookies()),
322 base::Bind(&URLFetcher::StartFetch, base::Unretained(url_fetcher_.get()), 322 base::Bind(&URLFetcher::StartFetch, base::Unretained(url_fetcher_.get()),
323 url, method, post_data, request_headers, this)); 323 url, method, post_data, request_headers, this));
324 } 324 }
325 325
326 void GenericURLRequestJob::MockResponse( 326 void GenericURLRequestJob::MockResponse(
327 std::unique_ptr<MockResponseData> mock_response) { 327 std::unique_ptr<MockResponseData> mock_response) {
328 if (!origin_task_runner_->RunsTasksOnCurrentThread()) { 328 if (!origin_task_runner_->RunsTasksInCurrentSequence()) {
329 origin_task_runner_->PostTask( 329 origin_task_runner_->PostTask(
330 FROM_HERE, base::Bind(&GenericURLRequestJob::MockResponse, 330 FROM_HERE, base::Bind(&GenericURLRequestJob::MockResponse,
331 weak_factory_.GetWeakPtr(), 331 weak_factory_.GetWeakPtr(),
332 base::Passed(std::move(mock_response)))); 332 base::Passed(std::move(mock_response))));
333 return; 333 return;
334 } 334 }
335 335
336 mock_response_ = std::move(mock_response); 336 mock_response_ = std::move(mock_response);
337 337
338 OnFetchCompleteExtractHeaders(request_->url(), 338 OnFetchCompleteExtractHeaders(request_->url(),
339 mock_response_->response_data.data(), 339 mock_response_->response_data.data(),
340 mock_response_->response_data.size()); 340 mock_response_->response_data.size());
341 } 341 }
342 342
343 } // namespace headless 343 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698