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