Chromium Code Reviews| 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..f564461500bd7ade474a8a7bc531f6d201a6d372 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,9 +276,7 @@ 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()) |
| delete devtools_bindings_; |
| } |
| @@ -311,7 +319,7 @@ 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( |
| + frontend_host_.reset(content::DevToolsFrontendHost::Create( |
| web_contents_, this)); |
| file_helper_.reset(new DevToolsFileHelper(web_contents_, profile_)); |
| file_system_indexer_ = new DevToolsFileSystemIndexer(); |
| @@ -339,8 +347,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 +358,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 +366,13 @@ void DevToolsUIBindings::Observe(int type, |
| UpdateTheme(); |
| } |
| -void DevToolsUIBindings::DispatchOnEmbedder(const std::string& message) { |
| +// content::DevToolsFrontendHost::Delegate implementation --------------------- |
| +bool DevToolsUIBindings::ShouldSetupDevToolsFrontendForUrl(const GURL& url) { |
| + return url.SchemeIs(content::kChromeDevToolsScheme); |
|
pfeldman
2014/07/31 11:47:25
It seems like we can make this decision in content
|
| +} |
| + |
| +void DevToolsUIBindings::HandleMessageFromDevToolsFrontend( |
| + const std::string& message) { |
| std::string method; |
| base::ListValue empty_params; |
| base::ListValue* params = &empty_params; |
| @@ -391,6 +401,26 @@ 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) { |
| + frontend_host_->DispatchOnDevToolsFrontend(message); |
|
pfeldman
2014/07/31 11:47:25
Can we use a CallClientFunction here?
dgozman
2014/07/31 13:05:31
There is a TODO for that. It requires some blink-s
|
| +} |
| + |
| +void DevToolsUIBindings::InspectedContentsClosing() { |
| + delegate_->InspectedContentsClosing(); |
| +} |
| + |
| +void DevToolsUIBindings::ReplacedWithAnotherClient() { |
| +} |
| + |
| +// DevToolsEmbedderMessageDispatcher::Delegate implementation ----------------- |
| void DevToolsUIBindings::ActivateWindow() { |
| delegate_->ActivateWindow(); |
| } |