summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryzshen <yzshen@chromium.org>2015-07-24 15:04:32 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-24 22:05:35 +0000
commit12796c1ea92d926a489b7d609b758afd23675394 (patch)
tree1c88d637dc2691564e28d1cab661222d6fc77aab
parent80183b0ba7f6ac5982258aa5985fb6efe93357dd (diff)
downloadchromium_src-12796c1ea92d926a489b7d609b758afd23675394.zip
chromium_src-12796c1ea92d926a489b7d609b758afd23675394.tar.gz
chromium_src-12796c1ea92d926a489b7d609b758afd23675394.tar.bz2
Mandoline DevTools: construct the Web socket url using the host from the request.
BUG=None TEST=None Review URL: https://codereview.chromium.org/1255763002 Cr-Commit-Position: refs/heads/master@{#340347}
-rw-r--r--components/devtools_service/devtools_http_server.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/components/devtools_service/devtools_http_server.cc b/components/devtools_service/devtools_http_server.cc
index 22d3258..0c7dcbbc 100644
--- a/components/devtools_service/devtools_http_server.cc
+++ b/components/devtools_service/devtools_http_server.cc
@@ -47,6 +47,16 @@ const char kTargetUrlField[] = "url";
const char kTargetWebSocketDebuggerUrlField[] = "webSocketDebuggerUrl";
const char kTargetDevtoolsFrontendUrlField[] = "devtoolsFrontendUrl";
+std::string GetHeaderValue(const mojo::HttpRequest& request,
+ const std::string& name) {
+ for (size_t i = 0; i < request.headers.size(); ++i) {
+ if (name == request.headers[i]->name)
+ return request.headers[i]->value;
+ }
+
+ return std::string();
+}
+
bool ParseJsonPath(const std::string& path,
std::string* command,
std::string* target_id) {
@@ -459,6 +469,12 @@ mojo::HttpResponsePtr DevToolsHttpServer::ProcessJsonRequest(
return nullptr;
}
+ std::string host = GetHeaderValue(*request, "host");
+ if (host.empty()) {
+ host = base::StringPrintf("127.0.0.1:%u",
+ static_cast<unsigned>(remote_debugging_port_));
+ }
+
base::ListValue list_value;
for (; !iter.IsAtEnd(); iter.Advance()) {
scoped_ptr<base::DictionaryValue> dict_value(new base::DictionaryValue());
@@ -472,9 +488,8 @@ mojo::HttpResponsePtr DevToolsHttpServer::ProcessJsonRequest(
dict_value->SetString(kTargetUrlField, std::string());
dict_value->SetString(
kTargetWebSocketDebuggerUrlField,
- base::StringPrintf("ws://127.0.0.1:%u%s%s",
- static_cast<unsigned>(remote_debugging_port_),
- kPageUrlPrefix, iter.value()->id().c_str()));
+ base::StringPrintf("ws://%s%s%s", host.c_str(), kPageUrlPrefix,
+ iter.value()->id().c_str()));
list_value.Append(dict_value.Pass());
}
return MakeJsonResponse(200, &list_value, std::string());