summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/debugger/devtools_http_handler_impl.cc12
-rw-r--r--content/browser/debugger/devtools_http_handler_impl.h3
2 files changed, 8 insertions, 7 deletions
diff --git a/content/browser/debugger/devtools_http_handler_impl.cc b/content/browser/debugger/devtools_http_handler_impl.cc
index e641a7f..859ca0d 100644
--- a/content/browser/debugger/devtools_http_handler_impl.cc
+++ b/content/browser/debugger/devtools_http_handler_impl.cc
@@ -160,8 +160,7 @@ void DevToolsHttpHandlerImpl::Start() {
void DevToolsHttpHandlerImpl::Stop() {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
- base::Bind(&DevToolsHttpHandlerImpl::Teardown, this));
- protect_ptr_ = NULL;
+ base::Bind(&DevToolsHttpHandlerImpl::TeardownAndRelease, this));
}
void DevToolsHttpHandlerImpl::OnHttpRequest(
@@ -467,10 +466,10 @@ DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl(
: ip_(ip),
port_(port),
overridden_frontend_url_(frontend_host),
- delegate_(delegate),
- ALLOW_THIS_IN_INITIALIZER_LIST(protect_ptr_(this)) {
+ delegate_(delegate) {
if (overridden_frontend_url_.empty())
overridden_frontend_url_ = "/devtools/devtools.html";
+ AddRef();
}
void DevToolsHttpHandlerImpl::Init() {
@@ -478,8 +477,11 @@ void DevToolsHttpHandlerImpl::Init() {
}
// Run on I/O thread
-void DevToolsHttpHandlerImpl::Teardown() {
+void DevToolsHttpHandlerImpl::TeardownAndRelease() {
server_ = NULL;
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&DevToolsHttpHandlerImpl::Release, this));
}
void DevToolsHttpHandlerImpl::Bind(net::URLRequest* request,
diff --git a/content/browser/debugger/devtools_http_handler_impl.h b/content/browser/debugger/devtools_http_handler_impl.h
index 69ead40..e9be675 100644
--- a/content/browser/debugger/devtools_http_handler_impl.h
+++ b/content/browser/debugger/devtools_http_handler_impl.h
@@ -70,7 +70,7 @@ class DevToolsHttpHandlerImpl
int bytes_read) OVERRIDE;
void Init();
- void Teardown();
+ void TeardownAndRelease();
void Bind(net::URLRequest* request, int connection_id);
void RequestCompleted(net::URLRequest* request);
@@ -100,7 +100,6 @@ class DevToolsHttpHandlerImpl
ConnectionToClientHostMap;
ConnectionToClientHostMap connection_to_client_host_ui_;
scoped_ptr<DevToolsHttpHandlerDelegate> delegate_;
- scoped_refptr<DevToolsHttpHandlerImpl> protect_ptr_;
DISALLOW_COPY_AND_ASSIGN(DevToolsHttpHandlerImpl);
};