diff options
author | yzshen <yzshen@chromium.org> | 2015-07-24 15:04:32 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-24 22:05:35 +0000 |
commit | 12796c1ea92d926a489b7d609b758afd23675394 (patch) | |
tree | 1c88d637dc2691564e28d1cab661222d6fc77aab | |
parent | 80183b0ba7f6ac5982258aa5985fb6efe93357dd (diff) | |
download | chromium_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.cc | 21 |
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()); |