Chromium Code Reviews| OLD | NEW |
|---|---|
| 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" |
| 11 #include "content/public/browser/devtools_agent_host.h" | 11 #include "content/public/browser/devtools_agent_host.h" |
| 12 #include "content/public/browser/render_frame_host.h" | 12 #include "content/public/browser/render_frame_host.h" |
| 13 #include "content/public/browser/resource_request_info.h" | 13 #include "content/public/browser/resource_request_info.h" |
| 14 #include "content/public/browser/web_contents.h" | 14 #include "content/public/browser/web_contents.h" |
| 15 #include "headless/lib/browser/headless_browser_context_impl.h" | |
| 16 #include "headless/public/headless_browser_context.h" | |
| 15 #include "headless/public/util/url_request_dispatcher.h" | 17 #include "headless/public/util/url_request_dispatcher.h" |
| 16 #include "net/base/io_buffer.h" | 18 #include "net/base/io_buffer.h" |
| 17 #include "net/base/net_errors.h" | 19 #include "net/base/net_errors.h" |
| 18 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 20 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 19 #include "net/base/upload_bytes_element_reader.h" | 21 #include "net/base/upload_bytes_element_reader.h" |
| 20 #include "net/cookies/cookie_store.h" | 22 #include "net/cookies/cookie_store.h" |
| 21 #include "net/http/http_response_headers.h" | 23 #include "net/http/http_response_headers.h" |
| 22 #include "net/url_request/url_request_context.h" | 24 #include "net/url_request/url_request_context.h" |
| 23 | 25 |
| 24 namespace headless { | 26 namespace headless { |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 35 | 37 |
| 36 } // namespace | 38 } // namespace |
| 37 | 39 |
| 38 uint64_t GenericURLRequestJob::next_request_id_ = 0; | 40 uint64_t GenericURLRequestJob::next_request_id_ = 0; |
| 39 | 41 |
| 40 GenericURLRequestJob::GenericURLRequestJob( | 42 GenericURLRequestJob::GenericURLRequestJob( |
| 41 net::URLRequest* request, | 43 net::URLRequest* request, |
| 42 net::NetworkDelegate* network_delegate, | 44 net::NetworkDelegate* network_delegate, |
| 43 URLRequestDispatcher* url_request_dispatcher, | 45 URLRequestDispatcher* url_request_dispatcher, |
| 44 std::unique_ptr<URLFetcher> url_fetcher, | 46 std::unique_ptr<URLFetcher> url_fetcher, |
| 45 Delegate* delegate) | 47 Delegate* delegate, |
| 48 HeadlessBrowserContext* headless_browser_context) | |
| 46 : ManagedDispatchURLRequestJob(request, | 49 : ManagedDispatchURLRequestJob(request, |
| 47 network_delegate, | 50 network_delegate, |
| 48 url_request_dispatcher), | 51 url_request_dispatcher), |
| 49 url_fetcher_(std::move(url_fetcher)), | 52 url_fetcher_(std::move(url_fetcher)), |
| 50 origin_task_runner_(base::ThreadTaskRunnerHandle::Get()), | 53 origin_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| 51 delegate_(delegate), | 54 delegate_(delegate), |
| 55 headless_browser_context_(headless_browser_context), | |
| 52 request_resource_info_( | 56 request_resource_info_( |
| 53 content::ResourceRequestInfo::ForRequest(request_)), | 57 content::ResourceRequestInfo::ForRequest(request_)), |
| 54 request_id_(next_request_id_++), | 58 request_id_(next_request_id_++), |
| 55 weak_factory_(this) {} | 59 weak_factory_(this) {} |
| 56 | 60 |
| 57 GenericURLRequestJob::~GenericURLRequestJob() { | 61 GenericURLRequestJob::~GenericURLRequestJob() { |
| 58 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); | 62 DCHECK(origin_task_runner_->RunsTasksOnCurrentThread()); |
| 59 } | 63 } |
| 60 | 64 |
| 61 void GenericURLRequestJob::SetExtraRequestHeaders( | 65 void GenericURLRequestJob::SetExtraRequestHeaders( |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 192 const net::URLRequest* GenericURLRequestJob::GetURLRequest() const { | 196 const net::URLRequest* GenericURLRequestJob::GetURLRequest() const { |
| 193 return request_; | 197 return request_; |
| 194 } | 198 } |
| 195 | 199 |
| 196 int GenericURLRequestJob::GetFrameTreeNodeId() const { | 200 int GenericURLRequestJob::GetFrameTreeNodeId() const { |
| 197 // URLRequestUserData will be set for all renderer initiated resource | 201 // URLRequestUserData will be set for all renderer initiated resource |
| 198 // requests, but not for browser side navigations. | 202 // requests, but not for browser side navigations. |
| 199 int render_process_id; | 203 int render_process_id; |
| 200 int render_frame_id; | 204 int render_frame_id; |
| 201 if (content::ResourceRequestInfo::GetRenderFrameForRequest( | 205 if (content::ResourceRequestInfo::GetRenderFrameForRequest( |
| 202 request_, &render_process_id, &render_frame_id)) { | 206 request_, &render_process_id, &render_frame_id) && |
| 207 render_process_id != -1) { | |
| 208 if (headless_browser_context_) { | |
| 209 return static_cast<HeadlessBrowserContextImpl*>(headless_browser_context_) | |
| 210 ->GetFrameTreeNodeId(render_process_id, render_frame_id); | |
| 211 } | |
| 212 // TODO(alexclarke): Remove this. | |
| 203 content::RenderFrameHost* render_frame_host = | 213 content::RenderFrameHost* render_frame_host = |
| 204 content::RenderFrameHost::FromID(render_process_id, render_frame_id); | 214 content::RenderFrameHost::FromID(render_process_id, render_frame_id); |
|
Charlie Reis
2017/04/26 19:52:56
I'm trying to understand this a bit more, but I ca
alex clarke (OOO till 29th)
2017/04/27 08:49:44
I expect this will be called on the IO thread.
| |
| 205 DCHECK(render_frame_host); | 215 DCHECK(render_frame_host); |
| 206 return render_frame_host->GetFrameTreeNodeId(); | 216 return render_frame_host->GetFrameTreeNodeId(); |
| 207 } | 217 } |
| 208 // ResourceRequestInfo::GetFrameTreeNodeId is only set for browser side | 218 // ResourceRequestInfo::GetFrameTreeNodeId is only set for browser side |
| 209 // navigations. | 219 // navigations. |
| 210 if (request_resource_info_) | 220 if (request_resource_info_) |
| 211 return request_resource_info_->GetFrameTreeNodeId(); | 221 return request_resource_info_->GetFrameTreeNodeId(); |
| 212 | 222 |
| 213 // This should only happen in tests. | 223 // This should only happen in tests. |
| 214 return -1; | 224 return -1; |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 341 } | 351 } |
| 342 | 352 |
| 343 mock_response_ = std::move(mock_response); | 353 mock_response_ = std::move(mock_response); |
| 344 | 354 |
| 345 OnFetchCompleteExtractHeaders(request_->url(), | 355 OnFetchCompleteExtractHeaders(request_->url(), |
| 346 mock_response_->response_data.data(), | 356 mock_response_->response_data.data(), |
| 347 mock_response_->response_data.size()); | 357 mock_response_->response_data.size()); |
| 348 } | 358 } |
| 349 | 359 |
| 350 } // namespace headless | 360 } // namespace headless |
| OLD | NEW |