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 90ee8d204942addc1676212df17489f57577c8c6..e228e37f6a9fdde37385f66585829d8594ef4f83 100644 |
--- a/content/browser/devtools/devtools_http_handler_impl.cc |
+++ b/content/browser/devtools/devtools_http_handler_impl.cc |
@@ -333,10 +333,9 @@ void DevToolsHttpHandlerImpl::StopWithoutRelease() { |
} |
GURL DevToolsHttpHandlerImpl::GetFrontendURL() { |
- net::IPEndPoint ip_address; |
- if (server_ && server_->GetLocalAddress(&ip_address)) |
+ if (!server_ip_address_) |
return GURL(); |
- return GURL(std::string("http://") + ip_address.ToString() + frontend_url_); |
+ return GURL(std::string("http://") + server_ip_address_->ToString() + frontend_url_); |
} |
static std::string PathWithoutParams(const std::string& path) { |
@@ -767,6 +766,15 @@ void DevToolsHttpHandlerImpl::OnCloseUI(int connection_id) { |
} |
} |
+void DevToolsHttpHandlerImpl::OnHttpServerInitialized( |
+ const net::IPEndPoint& ip_address) { |
+ server_ip_address_.reset(new net::IPEndPoint(ip_address)); |
+} |
+ |
+void DevToolsHttpHandlerImpl::OnHttpServerDeinitialized() { |
+ server_ip_address_.reset(NULL); |
+} |
+ |
DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl( |
scoped_ptr<ServerSocketFactory> server_socket_factory, |
const std::string& frontend_url, |
@@ -796,6 +804,12 @@ void DevToolsHttpHandlerImpl::Init() { |
} |
server_.reset(new net::HttpServer(server_socket.Pass(), this)); |
+ net::IPEndPoint ip_address; |
+ server_->GetLocalAddress(&ip_address); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&DevToolsHttpHandlerImpl::OnHttpServerInitialized, |
+ this, ip_address)); |
if (!active_port_output_directory_.empty()) |
WriteActivePortToUserProfile(); |
} |
@@ -803,6 +817,9 @@ void DevToolsHttpHandlerImpl::Init() { |
// Runs on the handler thread |
void DevToolsHttpHandlerImpl::Teardown() { |
server_.reset(NULL); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&DevToolsHttpHandlerImpl::OnHttpServerDeinitialized, this)); |
} |
// Runs on FILE thread to make sure that it is serialized against |