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 "extensions/browser/api/web_request/web_request_event_details.h" | 5 #include "extensions/browser/api/web_request/web_request_event_details.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "content/public/browser/browser_thread.h" | 9 #include "content/public/browser/browser_thread.h" |
10 #include "content/public/browser/render_frame_host.h" | 10 #include "content/public/browser/render_frame_host.h" |
11 #include "content/public/browser/resource_request_info.h" | 11 #include "content/public/browser/resource_request_info.h" |
| 12 #include "content/public/browser/websocket_handshake_request_info.h" |
12 #include "content/public/common/child_process_host.h" | 13 #include "content/public/common/child_process_host.h" |
13 #include "extensions/browser/api/web_request/upload_data_presenter.h" | 14 #include "extensions/browser/api/web_request/upload_data_presenter.h" |
14 #include "extensions/browser/api/web_request/web_request_api_constants.h" | 15 #include "extensions/browser/api/web_request/web_request_api_constants.h" |
15 #include "extensions/browser/api/web_request/web_request_api_helpers.h" | 16 #include "extensions/browser/api/web_request/web_request_api_helpers.h" |
16 #include "extensions/browser/api/web_request/web_request_resource_type.h" | 17 #include "extensions/browser/api/web_request/web_request_resource_type.h" |
17 #include "ipc/ipc_message.h" | 18 #include "ipc/ipc_message.h" |
18 #include "net/base/auth.h" | 19 #include "net/base/auth.h" |
19 #include "net/base/upload_data_stream.h" | 20 #include "net/base/upload_data_stream.h" |
20 #include "net/http/http_request_headers.h" | 21 #include "net/http/http_request_headers.h" |
21 #include "net/http/http_response_headers.h" | 22 #include "net/http/http_response_headers.h" |
(...skipping 10 matching lines...) Expand all Loading... |
32 int extra_info_spec) | 33 int extra_info_spec) |
33 : extra_info_spec_(extra_info_spec), | 34 : extra_info_spec_(extra_info_spec), |
34 render_process_id_(content::ChildProcessHost::kInvalidUniqueID), | 35 render_process_id_(content::ChildProcessHost::kInvalidUniqueID), |
35 render_frame_id_(MSG_ROUTING_NONE) { | 36 render_frame_id_(MSG_ROUTING_NONE) { |
36 auto resource_type = GetWebRequestResourceType(request); | 37 auto resource_type = GetWebRequestResourceType(request); |
37 const content::ResourceRequestInfo* info = | 38 const content::ResourceRequestInfo* info = |
38 content::ResourceRequestInfo::ForRequest(request); | 39 content::ResourceRequestInfo::ForRequest(request); |
39 if (info) { | 40 if (info) { |
40 render_process_id_ = info->GetChildID(); | 41 render_process_id_ = info->GetChildID(); |
41 render_frame_id_ = info->GetRenderFrameID(); | 42 render_frame_id_ = info->GetRenderFrameID(); |
| 43 } else if (resource_type == WebRequestResourceType::WEB_SOCKET) { |
| 44 // TODO(pkalinnikov): Consider embedding WebSocketHandshakeRequestInfo into |
| 45 // UrlRequestUserData. |
| 46 const content::WebSocketHandshakeRequestInfo* ws_info = |
| 47 content::WebSocketHandshakeRequestInfo::ForRequest(request); |
| 48 if (ws_info) { |
| 49 render_process_id_ = ws_info->GetChildId(); |
| 50 render_frame_id_ = ws_info->GetRenderFrameId(); |
| 51 } |
42 } else { | 52 } else { |
43 // Fallback for requests that are not allocated by a ResourceDispatcherHost, | 53 // Fallback for requests that are not allocated by a |
44 // such as the TemplateURLFetcher. | 54 // ResourceDispatcherHost, such as the TemplateURLFetcher. |
45 content::ResourceRequestInfo::GetRenderFrameForRequest( | 55 content::ResourceRequestInfo::GetRenderFrameForRequest( |
46 request, &render_process_id_, &render_frame_id_); | 56 request, &render_process_id_, &render_frame_id_); |
47 } | 57 } |
48 | 58 |
49 dict_.SetString(keys::kMethodKey, request->method()); | 59 dict_.SetString(keys::kMethodKey, request->method()); |
50 dict_.SetString(keys::kRequestIdKey, | 60 dict_.SetString(keys::kRequestIdKey, |
51 base::Uint64ToString(request->identifier())); | 61 base::Uint64ToString(request->identifier())); |
52 dict_.SetDouble(keys::kTimeStampKey, base::Time::Now().ToDoubleT() * 1000); | 62 dict_.SetDouble(keys::kTimeStampKey, base::Time::Now().ToDoubleT() * 1000); |
53 dict_.SetString(keys::kTypeKey, | 63 dict_.SetString(keys::kTypeKey, |
54 WebRequestResourceTypeToString(resource_type)); | 64 WebRequestResourceTypeToString(resource_type)); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 | 241 |
232 void WebRequestEventDetails::OnDeterminedFrameData( | 242 void WebRequestEventDetails::OnDeterminedFrameData( |
233 std::unique_ptr<WebRequestEventDetails> self, | 243 std::unique_ptr<WebRequestEventDetails> self, |
234 const DeterminedFrameDataCallback& callback, | 244 const DeterminedFrameDataCallback& callback, |
235 const ExtensionApiFrameIdMap::FrameData& frame_data) { | 245 const ExtensionApiFrameIdMap::FrameData& frame_data) { |
236 SetFrameData(frame_data); | 246 SetFrameData(frame_data); |
237 callback.Run(std::move(self)); | 247 callback.Run(std::move(self)); |
238 } | 248 } |
239 | 249 |
240 } // namespace extensions | 250 } // namespace extensions |
OLD | NEW |