Chromium Code Reviews| Index: components/ui_devtools/devtools_server.cc |
| diff --git a/components/ui_devtools/devtools_server.cc b/components/ui_devtools/devtools_server.cc |
| index ff0616d52c916cb8df69229b0189a6cb6f65fe22..c22ecdd221d629f66992965ccdc9c1ad67e475a9 100644 |
| --- a/components/ui_devtools/devtools_server.cc |
| +++ b/components/ui_devtools/devtools_server.cc |
| @@ -25,8 +25,24 @@ namespace devtools { |
| namespace { |
| const char kChromeDeveloperToolsPrefix[] = |
| "chrome-devtools://devtools/bundled/inspector.html?ws="; |
| + |
| +bool IsUiDevToolsEnabled() { |
| + return base::CommandLine::ForCurrentProcess()->HasSwitch(kEnableUiDevTools); |
| +} |
| + |
| +int GetUiDevToolsPort() { |
| + DCHECK(IsUiDevToolsEnabled()); |
| + int port = 9223; // Default port is 9223 |
| + base::StringToInt(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
|
sadrul
2016/11/17 18:40:57
StringToInt is expected to leave |port| unchanged
Sarmad Hashmi
2016/11/21 17:18:24
Just checked, it doesn't. Sets it to various value
sadrul
2016/11/21 18:26:39
I think we should set to default if StringToInt()
Sarmad Hashmi
2016/11/22 04:39:32
Done.
|
| + kEnableUiDevTools), |
| + &port); |
| + return port; |
| +} |
| + |
| } // namespace |
| +UiDevToolsServer* UiDevToolsServer::devtools_server_ = nullptr; |
| + |
| UiDevToolsServer::UiDevToolsServer( |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
| : task_runner_(task_runner) { |
| @@ -38,27 +54,43 @@ UiDevToolsServer::UiDevToolsServer( |
| options.message_loop_type = base::MessageLoop::TYPE_IO; |
| CHECK(thread_->StartWithOptions(options)); |
| task_runner_ = thread_->task_runner(); |
| + devtools_server_ = this; |
| } |
| -UiDevToolsServer::~UiDevToolsServer() {} |
| +UiDevToolsServer::~UiDevToolsServer() { |
| + devtools_server_ = nullptr; |
| +} |
| // static |
| std::unique_ptr<UiDevToolsServer> UiDevToolsServer::Create( |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
| std::unique_ptr<UiDevToolsServer> server; |
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch(kEnableUiDevTools)) { |
| + if (IsUiDevToolsEnabled() && !devtools_server_) { |
| // TODO(mhashmi): Change port if more than one inspectable clients |
| - int port = 9223; // Default port is 9223 |
| - base::StringToInt( |
| - base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| - kEnableUiDevTools), |
| - &port); |
| server.reset(new UiDevToolsServer(task_runner)); |
| - server->Start("127.0.0.1", port); |
| + server->Start("127.0.0.1", GetUiDevToolsPort()); |
| } |
| return server; |
| } |
| +// static |
| +std::vector<UiDevToolsServer::NameUrlPair> |
| +UiDevToolsServer::GetClientNamesAndUrls() { |
| + std::vector<NameUrlPair> pairs; |
| + if (!devtools_server_) |
| + return pairs; |
| + |
| + for (ClientsList::size_type i = 0; i != devtools_server_->clients_.size(); |
| + i++) { |
| + pairs.push_back(std::pair<std::string, std::string>( |
| + devtools_server_->clients_[i]->name(), |
| + base::StringPrintf("%slocalhost:%d/%" PRIuS, |
| + kChromeDeveloperToolsPrefix, GetUiDevToolsPort(), |
| + i))); |
| + } |
| + return pairs; |
| +} |
| + |
| void UiDevToolsServer::AttachClient(std::unique_ptr<UiDevToolsClient> client) { |
| clients_.push_back(std::move(client)); |
| } |
| @@ -96,32 +128,7 @@ void UiDevToolsServer::OnConnect(int connection_id) { |
| void UiDevToolsServer::OnHttpRequest(int connection_id, |
| const net::HttpServerRequestInfo& info) { |
| - // Display a simple html page with all the clients and the corresponding |
| - // devtools links |
| - // TODO(mhashmi): Remove and display all clients under chrome://inspect/#other |
| - if (info.path.empty() || info.path == "/") { |
| - std::string clientHTML = "<html>"; |
| - clientHTML += |
| - "<h3>Copy paste the corresponding links in your browser to inspect " |
| - "them:</h3>"; |
| - net::IPEndPoint ip; |
| - server_->GetLocalAddress(&ip); |
| - for (ClientsList::size_type i = 0; i != clients_.size(); i++) { |
| - clientHTML += base::StringPrintf( |
| - "<p><strong>%s</strong> (%s%s/%" PRIuS ")</p>", |
| - clients_[i]->name().c_str(), kChromeDeveloperToolsPrefix, |
| - ip.ToString().c_str(), i); |
| - } |
| - clientHTML += "</html>"; |
| - task_runner_->PostTask( |
| - FROM_HERE, |
| - base::Bind(&net::HttpServer::Send200, base::Unretained(server_.get()), |
| - connection_id, clientHTML, "text/html")); |
| - return; |
| - } |
| - task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&net::HttpServer::Send404, |
| - base::Unretained(server_.get()), connection_id)); |
| + NOTIMPLEMENTED(); |
| } |
| void UiDevToolsServer::OnWebSocketRequest( |