Chromium Code Reviews| Index: chrome/browser/debugger/devtools_window.cc |
| diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc |
| index a7410855a0f3704c908e2c56feeb7e8f8cf30252..7f2284e94fe877e7a55778bac0cead5c83a39341 100644 |
| --- a/chrome/browser/debugger/devtools_window.cc |
| +++ b/chrome/browser/debugger/devtools_window.cc |
| @@ -31,7 +31,6 @@ |
| #include "chrome/common/render_messages.h" |
| #include "chrome/common/url_constants.h" |
| #include "content/browser/browsing_instance.h" |
| -#include "content/browser/debugger/devtools_manager.h" |
| #include "content/browser/in_process_webkit/session_storage_namespace.h" |
| #include "content/browser/load_notification_details.h" |
| #include "content/browser/renderer_host/render_view_host.h" |
| @@ -39,9 +38,9 @@ |
| #include "content/browser/tab_contents/navigation_entry.h" |
| #include "content/browser/tab_contents/tab_contents.h" |
| #include "content/browser/tab_contents/tab_contents_view.h" |
| -#include "content/common/devtools_messages.h" |
| #include "content/public/browser/content_browser_client.h" |
| -#include "content/public/browser/devtools_frontend_window.h" |
| +#include "content/public/browser/devtools_agent_host_registry.h" |
| +#include "content/public/browser/devtools_manager.h" |
| #include "content/public/browser/notification_source.h" |
| #include "content/public/common/bindings_policy.h" |
| #include "grit/generated_resources.h" |
| @@ -53,6 +52,11 @@ base::LazyInstance<DevToolsWindowList, |
| g_instances = LAZY_INSTANCE_INITIALIZER; |
| } // namespace |
| +using content::DevToolsAgentHost; |
| +using content::DevToolsAgentHostRegistry; |
| +using content::DevToolsClientHost; |
| +using content::DevToolsManager; |
| + |
| const char DevToolsWindow::kDevToolsApp[] = "DevToolsApp"; |
| // static |
| @@ -68,9 +72,13 @@ TabContentsWrapper* DevToolsWindow::GetDevToolsContents( |
| if (!inspected_tab) |
| return NULL; |
| + if (!DevToolsAgentHostRegistry::HasDevToolsAgentHost( |
| + inspected_tab->render_view_host())) |
| + return NULL; |
| + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( |
| + inspected_tab->render_view_host()); |
| DevToolsManager* manager = DevToolsManager::GetInstance(); |
| - DevToolsClientHost* client_host = manager-> |
| - GetDevToolsClientHostFor(inspected_tab->render_view_host()); |
| + DevToolsClientHost* client_host = manager->GetDevToolsClientHostFor(agent); |
| DevToolsWindow* window = AsDevToolsWindow(client_host); |
| if (!window || !window->is_docked()) |
| return NULL; |
| @@ -95,16 +103,17 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
| Profile* profile, |
| DevToolsAgentHost* worker_agent) { |
| DevToolsWindow* window; |
| - DevToolsClientHost* client = |
| - DevToolsManager::GetInstance()->GetDevToolsClientHostFor(worker_agent); |
| + DevToolsClientHost* client = content::DevToolsManager::GetInstance()-> |
| + GetDevToolsClientHostFor(worker_agent); |
| if (client) { |
| window = AsDevToolsWindow(client); |
| if (!window) |
| return NULL; |
| } else { |
| window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); |
| - DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(worker_agent, |
| - window); |
| + DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
| + worker_agent, |
| + window->frontend_host_); |
| } |
| window->Show(DEVTOOLS_TOGGLE_ACTION_NONE); |
| return window; |
| @@ -133,10 +142,9 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| void DevToolsWindow::InspectElement(RenderViewHost* inspected_rvh, |
| int x, |
| int y) { |
| - inspected_rvh->Send(new DevToolsAgentMsg_InspectElement( |
| - inspected_rvh->routing_id(), |
| - x, |
| - y)); |
| + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( |
| + inspected_rvh); |
| + DevToolsManager::GetInstance()->InspectElement(agent, x, y); |
| // TODO(loislo): we should initiate DevTools window opening from within |
| // renderer. Otherwise, we still can hit a race condition here. |
| OpenDevToolsWindow(inspected_rvh); |
| @@ -171,7 +179,11 @@ DevToolsWindow::DevToolsWindow(TabContentsWrapper* tab_contents, |
| browser_(NULL), |
| docked_(docked), |
| is_loaded_(false), |
| - action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) { |
| + action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE), |
| + ALLOW_THIS_IN_INITIALIZER_LIST(frontend_host_( |
|
pfeldman
2011/11/30 16:43:26
You could initialize it in the constructor instead
yurys
2011/11/30 17:08:28
Done.
|
| + DevToolsClientHost::CreateDevToolsFrontendHost( |
| + tab_contents->tab_contents(), |
| + this))) { |
| g_instances.Get().push_back(this); |
| // Wipe out page icon so that the default application icon is used. |
| NavigationEntry* entry = tab_contents_->controller().GetActiveEntry(); |
| @@ -179,9 +191,9 @@ DevToolsWindow::DevToolsWindow(TabContentsWrapper* tab_contents, |
| entry->favicon().set_is_valid(true); |
| // Install DevTools front-end message handler. |
| - content::SetupDevToolsFrontendDelegate( |
| - tab_contents->tab_contents(), |
| - this); |
| +// content::SetupDevToolsFrontendDelegate( |
|
pfeldman
2011/11/30 16:43:26
remove these?
yurys
2011/11/30 17:08:28
Done.
|
| +// tab_contents->tab_contents(), |
| +// this); |
| // Register on-load actions. |
| registrar_.Add( |
| @@ -214,13 +226,6 @@ DevToolsWindow::~DevToolsWindow() { |
| instances.erase(it); |
| } |
| -void DevToolsWindow::SendMessageToClient(const IPC::Message& message) { |
| - RenderViewHost* target_host = tab_contents_->render_view_host(); |
| - IPC::Message* m = new IPC::Message(message); |
| - m->set_routing_id(target_host->routing_id()); |
| - target_host->Send(m); |
| -} |
| - |
| void DevToolsWindow::InspectedTabClosing() { |
| if (docked_) { |
| // Update dev tools to reflect removed dev tools window. |
| @@ -477,7 +482,7 @@ void DevToolsWindow::Observe(int type, |
| // of window.Close event. |
| // Notify manager that this DevToolsClientHost no longer exists and |
| // initiate self-destuct here. |
| - NotifyCloseListener(); |
| + DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_); |
| delete this; |
| } |
| } else if (type == chrome::NOTIFICATION_BROWSER_THEME_CHANGED) { |
| @@ -598,13 +603,14 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| RenderViewHost* inspected_rvh, |
| bool force_open, |
| DevToolsToggleAction action) { |
| + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( |
| + inspected_rvh); |
| DevToolsManager* manager = DevToolsManager::GetInstance(); |
| - |
| - DevToolsClientHost* host = manager->GetDevToolsClientHostFor(inspected_rvh); |
| + DevToolsClientHost* host = manager->GetDevToolsClientHostFor(agent); |
| DevToolsWindow* window = AsDevToolsWindow(host); |
| if (host != NULL && window == NULL) { |
| // Break remote debugging / extension debugging session. |
| - manager->UnregisterDevToolsClientHostFor(inspected_rvh); |
| + manager->UnregisterDevToolsClientHostFor(agent); |
| } |
| bool do_open = force_open; |
| @@ -613,7 +619,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| inspected_rvh->process()->GetBrowserContext()); |
| bool docked = profile->GetPrefs()->GetBoolean(prefs::kDevToolsOpenDocked); |
| window = Create(profile, inspected_rvh, docked, false); |
| - manager->RegisterDevToolsClientHostFor(inspected_rvh, window); |
| + manager->RegisterDevToolsClientHostFor(agent, window->frontend_host_); |
| do_open = true; |
| } |
| @@ -622,7 +628,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| if (!window->is_docked() || do_open) |
| window->Show(action); |
| else |
| - manager->UnregisterDevToolsClientHostFor(inspected_rvh); |
| + manager->UnregisterDevToolsClientHostFor(agent); |
| return window; |
| } |
| @@ -635,17 +641,12 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow( |
| DevToolsWindowList& instances = g_instances.Get(); |
| for (DevToolsWindowList::iterator it = instances.begin(); |
| it != instances.end(); ++it) { |
| - DevToolsClientHost* client = *it; |
| - if (client == client_host) |
| + if ((*it)->frontend_host_ == client_host) |
| return *it; |
| } |
| return NULL; |
| } |
| -void DevToolsWindow::ForwardToDevToolsAgent(const IPC::Message& message) { |
| - DevToolsManager::GetInstance()->ForwardToDevToolsAgent(this, message); |
| -} |
| - |
| void DevToolsWindow::ActivateWindow() { |
| if (!docked_) { |
| if (!browser_->window()->IsActive()) { |
| @@ -660,7 +661,7 @@ void DevToolsWindow::ActivateWindow() { |
| void DevToolsWindow::CloseWindow() { |
| DCHECK(docked_); |
| - NotifyCloseListener(); |
| + DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_); |
| InspectedTabClosing(); |
| } |