Index: content/browser/devtools/devtools_http_handler_impl.cc |
diff --git a/content/browser/devtools/devtools_http_handler_impl.cc b/content/browser/devtools/devtools_http_handler_impl.cc |
index 1d0fca1e2824f007b7d5856b5be6e696d113b25c..87a5d8e3a408aa205e6ae0698920b8249677ec69 100644 |
--- a/content/browser/devtools/devtools_http_handler_impl.cc |
+++ b/content/browser/devtools/devtools_http_handler_impl.cc |
@@ -216,7 +216,7 @@ GURL DevToolsHttpHandlerImpl::GetFrontendURL() { |
if (server_->GetLocalAddress(&ip_address)) |
return GURL(); |
return GURL(std::string("http://") + ip_address.ToString() + |
- overridden_frontend_url_); |
+ frontend_url_); |
} |
static std::string PathWithoutParams(const std::string& path) { |
@@ -387,11 +387,12 @@ void DevToolsHttpHandlerImpl::OnClose(int connection_id) { |
std::string DevToolsHttpHandlerImpl::GetFrontendURLInternal( |
const std::string id, |
- const std::string& host) { |
+ const std::string& host, |
+ const std::string& frontend_url) { |
return base::StringPrintf( |
"%s%sws=%s%s%s", |
- overridden_frontend_url_.c_str(), |
- overridden_frontend_url_.find("?") == std::string::npos ? "?" : "&", |
+ frontend_url.c_str(), |
+ frontend_url.find("?") == std::string::npos ? "?" : "&", |
host.c_str(), |
kPageUrlPrefix, |
id.c_str()); |
@@ -429,11 +430,14 @@ void DevToolsHttpHandlerImpl::OnJsonRequestUI( |
std::string path = info.path.substr(5); |
// Trim fragment and query |
- std::string query; |
+ GURL aux_url; |
size_t query_pos = path.find("?"); |
if (query_pos != std::string::npos) { |
- query = path.substr(query_pos + 1); |
+ std::string query = path.substr(query_pos + 1); |
path = path.substr(0, query_pos); |
+ |
+ aux_url = GURL(net::UnescapeURLComponent( |
+ query, net::UnescapeRule::URL_SPECIAL_CHARS)); |
} |
size_t fragment_pos = path.find("#"); |
@@ -470,16 +474,14 @@ void DevToolsHttpHandlerImpl::OnJsonRequestUI( |
AddRef(); // Balanced in OnTargetListReceived. |
delegate_->EnumerateTargets( |
base::Bind(&DevToolsHttpHandlerImpl::OnTargetListReceived, |
- this, connection_id, host)); |
+ this, connection_id, host, aux_url)); |
return; |
} |
if (command == "new") { |
- GURL url(net::UnescapeURLComponent( |
- query, net::UnescapeRule::URL_SPECIAL_CHARS)); |
- if (!url.is_valid()) |
- url = GURL(kAboutBlankURL); |
- scoped_ptr<DevToolsTarget> target(delegate_->CreateNewTarget(url)); |
+ if (!aux_url.is_valid()) |
+ aux_url = GURL(kAboutBlankURL); |
+ scoped_ptr<DevToolsTarget> target(delegate_->CreateNewTarget(aux_url)); |
if (!target) { |
SendJson(connection_id, |
net::HTTP_INTERNAL_SERVER_ERROR, |
@@ -489,7 +491,7 @@ void DevToolsHttpHandlerImpl::OnJsonRequestUI( |
} |
std::string host = info.headers["host"]; |
scoped_ptr<base::DictionaryValue> dictionary( |
- SerializeTarget(*target.get(), host)); |
+ SerializeTarget(*target.get(), host, aux_url)); |
SendJson(connection_id, net::HTTP_OK, dictionary.get(), std::string()); |
const std::string target_id = target->GetId(); |
target_map_[target_id] = target.release(); |
@@ -540,6 +542,7 @@ void DevToolsHttpHandlerImpl::OnJsonRequestUI( |
void DevToolsHttpHandlerImpl::OnTargetListReceived( |
int connection_id, |
const std::string& host, |
+ const GURL& aux_url, |
const DevToolsHttpHandlerDelegate::TargetList& targets) { |
DevToolsHttpHandlerDelegate::TargetList sorted_targets = targets; |
std::sort(sorted_targets.begin(), sorted_targets.end(), TimeComparator); |
@@ -550,7 +553,7 @@ void DevToolsHttpHandlerImpl::OnTargetListReceived( |
sorted_targets.begin(); it != sorted_targets.end(); ++it) { |
DevToolsTarget* target = *it; |
target_map_[target->GetId()] = target; |
- list_value.Append(SerializeTarget(*target, host)); |
+ list_value.Append(SerializeTarget(*target, host, aux_url)); |
} |
SendJson(connection_id, net::HTTP_OK, &list_value, std::string()); |
Release(); // Balanced in OnJsonRequestUI. |
@@ -642,11 +645,11 @@ DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl( |
const net::StreamListenSocketFactory* socket_factory, |
const std::string& frontend_url, |
DevToolsHttpHandlerDelegate* delegate) |
- : overridden_frontend_url_(frontend_url), |
+ : frontend_url_(frontend_url), |
socket_factory_(socket_factory), |
delegate_(delegate) { |
- if (overridden_frontend_url_.empty()) |
- overridden_frontend_url_ = "/devtools/devtools.html"; |
+ if (frontend_url_.empty()) |
+ frontend_url_ = "/devtools/devtools.html"; |
// Balanced in ResetHandlerThreadAndRelease(). |
AddRef(); |
@@ -748,7 +751,8 @@ void DevToolsHttpHandlerImpl::AcceptWebSocket( |
base::DictionaryValue* DevToolsHttpHandlerImpl::SerializeTarget( |
const DevToolsTarget& target, |
- const std::string& host) { |
+ const std::string& host, |
+ const GURL& aux_url) { |
base::DictionaryValue* dictionary = new base::DictionaryValue; |
std::string id = target.GetId(); |
@@ -776,9 +780,13 @@ base::DictionaryValue* DevToolsHttpHandlerImpl::SerializeTarget( |
host.c_str(), |
kPageUrlPrefix, |
id.c_str())); |
+ std::string overridden_frontend_url = |
+ aux_url.is_valid() ? aux_url.spec() : frontend_url_; |
vsevik
2014/03/11 10:50:44
Is this is the only place where this field is used
|
+ |
std::string devtools_frontend_url = GetFrontendURLInternal( |
id.c_str(), |
- host); |
+ host, |
+ overridden_frontend_url); |
dictionary->SetString( |
kTargetDevtoolsFrontendUrlField, devtools_frontend_url); |
} |