Index: chrome/browser/devtools/devtools_ui_bindings.cc |
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc |
index 5148556e4d410fc110b896544ca6d87db022ac15..e87b70a0f5533e5693e52b41b5467d94cfb46224 100644 |
--- a/chrome/browser/devtools/devtools_ui_bindings.cc |
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc |
@@ -259,6 +259,16 @@ void DevToolsUIBindings::FrontendWebContentsObserver::WebContentsDestroyed() { |
void DevToolsUIBindings::FrontendWebContentsObserver::RenderProcessGone( |
base::TerminationStatus status) { |
+ switch (status) { |
+ case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: |
+ case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: |
+ case base::TERMINATION_STATUS_PROCESS_CRASHED: |
+ content::DevToolsManager::GetInstance()->ClientHostClosing( |
+ devtools_bindings_); |
+ break; |
+ default: |
+ break; |
+ } |
devtools_bindings_->delegate_->RenderProcessGone(); |
} |
@@ -266,10 +276,13 @@ void DevToolsUIBindings::FrontendWebContentsObserver::AboutToNavigateRenderView( |
content::RenderViewHost* render_view_host) { |
content::NavigationEntry* entry = |
web_contents()->GetController().GetActiveEntry(); |
- if (devtools_bindings_->url_ == entry->GetURL()) |
- content::DevToolsClientHost::SetupDevToolsFrontendClient(render_view_host); |
- else |
+ if (devtools_bindings_->url_ == entry->GetURL()) { |
+ devtools_bindings_->frontend_host_.reset( |
+ content::DevToolsFrontendHost::Create( |
+ render_view_host, devtools_bindings_)); |
+ } else { |
delete devtools_bindings_; |
+ } |
} |
void DevToolsUIBindings::FrontendWebContentsObserver:: |
@@ -311,8 +324,6 @@ DevToolsUIBindings::DevToolsUIBindings(content::WebContents* web_contents, |
frontend_contents_observer_.reset(new FrontendWebContentsObserver(this)); |
web_contents_->GetMutableRendererPrefs()->can_accept_load_drops = false; |
- frontend_host_.reset(content::DevToolsClientHost::CreateDevToolsFrontendHost( |
- web_contents_, this)); |
file_helper_.reset(new DevToolsFileHelper(web_contents_, profile_)); |
file_system_indexer_ = new DevToolsFileSystemIndexer(); |
extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
@@ -339,8 +350,7 @@ DevToolsUIBindings::DevToolsUIBindings(content::WebContents* web_contents, |
} |
DevToolsUIBindings::~DevToolsUIBindings() { |
- content::DevToolsManager::GetInstance()->ClientHostClosing( |
- frontend_host_.get()); |
+ content::DevToolsManager::GetInstance()->ClientHostClosing(this); |
for (IndexingJobsMap::const_iterator jobs_it(indexing_jobs_.begin()); |
jobs_it != indexing_jobs_.end(); ++jobs_it) { |
@@ -351,10 +361,7 @@ DevToolsUIBindings::~DevToolsUIBindings() { |
SetDevicesUpdatesEnabled(false); |
} |
-void DevToolsUIBindings::InspectedContentsClosing() { |
- delegate_->InspectedContentsClosing(); |
-} |
- |
+// content::NotificationObserver overrides ------------------------------------ |
void DevToolsUIBindings::Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
@@ -362,7 +369,9 @@ void DevToolsUIBindings::Observe(int type, |
UpdateTheme(); |
} |
-void DevToolsUIBindings::DispatchOnEmbedder(const std::string& message) { |
+// content::DevToolsFrontendHost::Delegate implementation --------------------- |
+void DevToolsUIBindings::HandleMessageFromDevToolsFrontend( |
+ const std::string& message) { |
std::string method; |
base::ListValue empty_params; |
base::ListValue* params = &empty_params; |
@@ -391,6 +400,27 @@ void DevToolsUIBindings::DispatchOnEmbedder(const std::string& message) { |
} |
} |
+void DevToolsUIBindings::HandleMessageFromDevToolsFrontendToBackend( |
+ const std::string& message) { |
+ content::DevToolsManager::GetInstance()->DispatchOnInspectorBackend( |
+ this, message); |
+} |
+ |
+// content::DevToolsClientHost implementation --------------------------------- |
+void DevToolsUIBindings::DispatchOnInspectorFrontend( |
+ const std::string& message) { |
+ if (frontend_host_) |
+ frontend_host_->DispatchOnDevToolsFrontend(message); |
+} |
+ |
+void DevToolsUIBindings::InspectedContentsClosing() { |
+ delegate_->InspectedContentsClosing(); |
+} |
+ |
+void DevToolsUIBindings::ReplacedWithAnotherClient() { |
+} |
+ |
+// DevToolsEmbedderMessageDispatcher::Delegate implementation ----------------- |
void DevToolsUIBindings::ActivateWindow() { |
delegate_->ActivateWindow(); |
} |