Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1076)

Unified Diff: content/browser/debugger/devtools_http_handler_impl.cc

Issue 11141024: DevTools: [remote debugging] terminate web socket connection upon renderer disconnect. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed clang Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/debugger/devtools_http_handler_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/debugger/devtools_http_handler_impl.cc
diff --git a/content/browser/debugger/devtools_http_handler_impl.cc b/content/browser/debugger/devtools_http_handler_impl.cc
index 60378dda2941b85a3d831265db696fb1350ef300..9d55e029f320bc99e069042bc2d9a2a348ab88ac 100644
--- a/content/browser/debugger/devtools_http_handler_impl.cc
+++ b/content/browser/debugger/devtools_http_handler_impl.cc
@@ -28,6 +28,8 @@
#include "content/public/browser/devtools_manager.h"
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/navigation_entry.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host.h"
@@ -93,12 +95,17 @@ class DevToolsClientHostImpl : public DevToolsClientHost {
int connection_id)
: message_loop_(message_loop),
server_(server),
- connection_id_(connection_id) {
+ connection_id_(connection_id),
+ is_closed_(false) {
}
+
~DevToolsClientHostImpl() {}
// DevToolsClientHost interface
virtual void InspectedContentsClosing() {
+ if (is_closed_)
+ return;
+ is_closed_ = true;
message_loop_->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::Close, server_, connection_id_));
@@ -121,6 +128,7 @@ class DevToolsClientHostImpl : public DevToolsClientHost {
MessageLoop* message_loop_;
net::HttpServer* server_;
int connection_id_;
+ bool is_closed_;
};
} // namespace
@@ -219,6 +227,23 @@ static std::string GetMimeType(const std::string& filename) {
return "text/plain";
}
+void DevToolsHttpHandlerImpl::Observe(int type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ RenderProcessHost* process = Source<RenderProcessHost>(source).ptr();
+ DevToolsManager* manager = DevToolsManager::GetInstance();
+ for (ConnectionToClientHostMap::iterator it =
+ connection_to_client_host_ui_.begin();
+ it != connection_to_client_host_ui_.end(); ++it) {
+ DevToolsAgentHost* agent = manager->GetDevToolsAgentHostFor(it->second);
+ if (!agent)
+ continue;
+ RenderViewHost* rvh = DevToolsAgentHostRegistry::GetRenderViewHost(agent);
+ if (rvh && rvh->GetProcess() == process)
+ it->second->InspectedContentsClosing();
+ }
+}
+
void DevToolsHttpHandlerImpl::OnHttpRequest(
int connection_id,
const net::HttpServerRequestInfo& info) {
@@ -560,6 +585,10 @@ DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl(
default_binding_.reset(new DevToolsDefaultBindingHandler);
binding_ = default_binding_.get();
+ registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_TERMINATED,
+ content::NotificationService::AllBrowserContextsAndSources());
+ registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_CLOSED,
+ content::NotificationService::AllBrowserContextsAndSources());
AddRef();
}
« no previous file with comments | « content/browser/debugger/devtools_http_handler_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698