| Index: components/ui_devtools/devtools_server.cc
|
| diff --git a/components/ui_devtools/devtools_server.cc b/components/ui_devtools/devtools_server.cc
|
| index a7428e4b4c82427f69ae1b7bcc4ebdd00f8238ee..5ed5794518990c340edd401e3bace86eb58a4b7c 100644
|
| --- a/components/ui_devtools/devtools_server.cc
|
| +++ b/components/ui_devtools/devtools_server.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| #include "base/values.h"
|
| #include "components/ui_devtools/switches.h"
|
| #include "net/base/net_errors.h"
|
| @@ -47,18 +48,19 @@ int GetUiDevToolsPort() {
|
| UiDevToolsServer* UiDevToolsServer::devtools_server_ = nullptr;
|
|
|
| UiDevToolsServer::UiDevToolsServer(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| - : task_runner_(task_runner) {
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner)
|
| + : io_thread_task_runner_(io_thread_task_runner) {
|
| DCHECK(!devtools_server_);
|
| + main_thread_task_runner_ = base::ThreadTaskRunnerHandle::Get();
|
| devtools_server_ = this;
|
| - if (task_runner_)
|
| + if (io_thread_task_runner_)
|
| return;
|
| - // If task_runner not passed in, create an I/O thread the server can run on
|
| + // If io_thread_task_runner not passed in, create an I/O thread
|
| thread_.reset(new base::Thread("UiDevToolsServerThread"));
|
| base::Thread::Options options;
|
| options.message_loop_type = base::MessageLoop::TYPE_IO;
|
| CHECK(thread_->StartWithOptions(options));
|
| - task_runner_ = thread_->task_runner();
|
| + io_thread_task_runner_ = thread_->task_runner();
|
| }
|
|
|
| UiDevToolsServer::~UiDevToolsServer() {
|
| @@ -67,11 +69,11 @@ UiDevToolsServer::~UiDevToolsServer() {
|
|
|
| // static
|
| std::unique_ptr<UiDevToolsServer> UiDevToolsServer::Create(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner) {
|
| std::unique_ptr<UiDevToolsServer> server;
|
| if (IsUiDevToolsEnabled() && !devtools_server_) {
|
| // TODO(mhashmi): Change port if more than one inspectable clients
|
| - server.reset(new UiDevToolsServer(task_runner));
|
| + server.reset(new UiDevToolsServer(io_thread_task_runner));
|
| server->Start("127.0.0.1", GetUiDevToolsPort());
|
| }
|
| return server;
|
| @@ -101,14 +103,14 @@ void UiDevToolsServer::AttachClient(std::unique_ptr<UiDevToolsClient> client) {
|
|
|
| void UiDevToolsServer::SendOverWebSocket(int connection_id,
|
| const String& message) {
|
| - task_runner_->PostTask(
|
| + io_thread_task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&net::HttpServer::SendOverWebSocket,
|
| base::Unretained(server_.get()), connection_id, message));
|
| }
|
|
|
| void UiDevToolsServer::Start(const std::string& address_string, uint16_t port) {
|
| - task_runner_->PostTask(
|
| + io_thread_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&UiDevToolsServer::StartServer,
|
| base::Unretained(this), address_string, port));
|
| }
|
| @@ -150,7 +152,7 @@ void UiDevToolsServer::OnWebSocketRequest(
|
| return;
|
| client->set_connection_id(connection_id);
|
| connections_[connection_id] = client;
|
| - task_runner_->PostTask(
|
| + io_thread_task_runner_->PostTask(
|
| FROM_HERE,
|
| base::Bind(&net::HttpServer::AcceptWebSocket,
|
| base::Unretained(server_.get()), connection_id, info));
|
| @@ -162,8 +164,9 @@ void UiDevToolsServer::OnWebSocketMessage(int connection_id,
|
| DCHECK(it != connections_.end());
|
| UiDevToolsClient* client = it->second;
|
| DCHECK(client);
|
| - task_runner_->PostTask(FROM_HERE, base::Bind(&UiDevToolsClient::Dispatch,
|
| - base::Unretained(client), data));
|
| + main_thread_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&UiDevToolsClient::Dispatch, base::Unretained(client), data));
|
| }
|
|
|
| void UiDevToolsServer::OnClose(int connection_id) {
|
| @@ -172,7 +175,9 @@ void UiDevToolsServer::OnClose(int connection_id) {
|
| return;
|
| UiDevToolsClient* client = it->second;
|
| DCHECK(client);
|
| - client->Disconnect();
|
| + main_thread_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&UiDevToolsClient::Disconnect, base::Unretained(client)));
|
| connections_.erase(it);
|
| }
|
|
|
|
|