Chromium Code Reviews| 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); |
| } |