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

Unified Diff: content/browser/renderer_host/websocket_host.cc

Issue 2003253002: [Devtools] Allow User-Agent header override for Websockets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/websocket_host.cc
diff --git a/content/browser/renderer_host/websocket_host.cc b/content/browser/renderer_host/websocket_host.cc
index cce4485b3d4d67801e5037ee042d88fd5aaaaa41..c7bc8c8132cf25ad392936880ddd2fccf61ab12c 100644
--- a/content/browser/renderer_host/websocket_host.cc
+++ b/content/browser/renderer_host/websocket_host.cc
@@ -25,8 +25,10 @@
#include "content/browser/ssl/ssl_manager.h"
#include "content/common/websocket_messages.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/storage_partition.h"
+#include "content/public/browser/web_contents.h"
#include "ipc/ipc_message_macros.h"
#include "net/base/net_errors.h"
#include "net/http/http_request_headers.h"
@@ -424,13 +426,34 @@ void WebSocketHost::AddChannel(
const std::vector<std::string>& requested_protocols,
const url::Origin& origin,
int render_frame_id) {
+
+ DCHECK(!channel_);
+
+ net::HttpRequestHeaders additional_headers;
+ RenderFrameHost* frame_host = RenderFrameHost::FromID(
+ dispatcher_->render_process_id(), render_frame_id);
+ if (frame_host) {
+ WebContents* tab = WebContents::FromRenderFrameHost(frame_host);
+ DCHECK(tab);
+
+ if (DevToolsAgentHost::HasFor(tab)) {
+ scoped_refptr<DevToolsAgentHost> agent =
+ DevToolsAgentHost::GetOrCreateFor(tab);
+ DCHECK(agent);
+
+ std::string user_agent = agent->GetUserAgentOverride();
dgozman 2016/05/24 19:02:30 I'd reverse this dependency, reaching from Network
+ if (user_agent.length())
+ additional_headers.SetHeader(
+ net::HttpRequestHeaders::kUserAgent, user_agent.c_str());
+ }
+ }
+
DVLOG(3) << "WebSocketHost::AddChannel"
<< " routing_id=" << routing_id_ << " socket_url=\"" << socket_url
<< "\" requested_protocols=\""
<< base::JoinString(requested_protocols, ", ") << "\" origin=\""
- << origin << "\"";
-
- DCHECK(!channel_);
+ << origin << "\" additional_headers=\""
+ << additional_headers.ToString() << "\"";
std::unique_ptr<net::WebSocketEventInterface> event_interface(
new WebSocketEventHandler(dispatcher_, this, routing_id_,
@@ -450,8 +473,9 @@ void WebSocketHost::AddChannel(
pending_flow_control_quota_));
pending_flow_control_quota_ = 0;
}
-
- channel_->SendAddChannelRequest(socket_url, requested_protocols, origin);
+ channel_->SendAddChannelRequest(
+ socket_url, requested_protocols, origin,
+ additional_headers.ToString());
// |this| may have been deleted here.
}
« no previous file with comments | « content/browser/devtools/render_frame_devtools_agent_host.cc ('k') | content/public/browser/devtools_agent_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698