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

Side by Side Diff: extensions/browser/api/web_request/web_request_event_details.cc

Issue 2449913002: Support WebSocket in WebRequest API. (Closed)
Patch Set: git cl format Created 3 years, 10 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 "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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698