| 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..020a242271bbe92454c09622be5b70df5c021c3e 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,18 +179,17 @@ 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),
|
| + frontend_host_(NULL) {
|
| + frontend_host_ = 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();
|
| entry->favicon().set_bitmap(SkBitmap());
|
| entry->favicon().set_is_valid(true);
|
|
|
| - // Install DevTools front-end message handler.
|
| - content::SetupDevToolsFrontendDelegate(
|
| - tab_contents->tab_contents(),
|
| - this);
|
| -
|
| // Register on-load actions.
|
| registrar_.Add(
|
| this,
|
| @@ -214,13 +221,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 +477,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 +598,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 +614,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 +623,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 +636,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 +656,7 @@ void DevToolsWindow::ActivateWindow() {
|
|
|
| void DevToolsWindow::CloseWindow() {
|
| DCHECK(docked_);
|
| - NotifyCloseListener();
|
| + DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_);
|
| InspectedTabClosing();
|
| }
|
|
|
|
|