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

Unified Diff: chrome/browser/debugger/devtools_window.cc

Issue 8549022: Define DevTools content API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 9 years, 1 month 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
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();
}

Powered by Google App Engine
This is Rietveld 408576698