Skip to content

Commit

Permalink
DevTools: introduce WorkderDevToolsAgentHost
Browse files Browse the repository at this point in the history
We already have RenderViewDevToolsAgent host for inspected pages. This
patch introduces WorkderDevToolsAgentHost which implements DevToolsAgentHost
interface for inspected shared workers. Also this patch moves part
of devtools message routing for workers to DevToolsManager.

BUG=None
TEST=Existing DevTools tests

Review URL: http://codereview.chromium.org/7737026

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100112 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
yurys@chromium.org committed Sep 8, 2011
1 parent bfe9d6d commit b3762af
Show file tree
Hide file tree
Showing 17 changed files with 444 additions and 427 deletions.
14 changes: 8 additions & 6 deletions chrome/browser/debugger/devtools_sanity_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#include "content/browser/content_browser_client.h"
#include "content/browser/debugger/devtools_client_host.h"
#include "content/browser/debugger/devtools_manager.h"
#include "content/browser/debugger/worker_devtools_manager_io.h"
#include "content/browser/debugger/worker_devtools_manager.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/worker_host/worker_process_host.h"
Expand Down Expand Up @@ -322,11 +322,13 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest {
Profile* profile = browser()->profile();
window_ = DevToolsWindow::CreateDevToolsWindowForWorker(profile);
window_->Show(DEVTOOLS_TOGGLE_ACTION_NONE);
WorkerDevToolsManagerIO::RegisterDevToolsClientForWorkerOnUIThread(
window_,
worker_data->worker_process_id,
worker_data->worker_route_id);

DevToolsAgentHost* agent_host =
WorkerDevToolsManager::GetDevToolsAgentHostForWorker(
worker_data->worker_process_id,
worker_data->worker_route_id);
DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
agent_host,
window_);
RenderViewHost* client_rvh = window_->GetRenderViewHost();
TabContents* client_contents = client_rvh->delegate()->GetAsTabContents();
if (client_contents->IsLoading()) {
Expand Down
11 changes: 1 addition & 10 deletions chrome/browser/debugger/devtools_window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
#include "content/browser/browsing_instance.h"
#include "content/browser/content_browser_client.h"
#include "content/browser/debugger/devtools_manager.h"
#include "content/browser/debugger/worker_devtools_manager_io.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"
Expand Down Expand Up @@ -621,7 +620,7 @@ void DevToolsWindow::RenderViewHostDestroyed() {
bool DevToolsWindow::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(DevToolsWindow, message)
IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToAgent, OnForwardToAgent)
IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToAgent, ForwardToDevToolsAgent)
IPC_MESSAGE_HANDLER(DevToolsHostMsg_ActivateWindow, OnActivateWindow)
IPC_MESSAGE_HANDLER(DevToolsHostMsg_CloseWindow, OnCloseWindow)
IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestDockWindow, OnRequestDockWindow)
Expand All @@ -634,14 +633,6 @@ bool DevToolsWindow::OnMessageReceived(const IPC::Message& message) {
return handled;
}

void DevToolsWindow::OnForwardToAgent(const IPC::Message& message) {
if (DevToolsManager::GetInstance()->
ForwardToDevToolsAgent(this, message))
return;
WorkerDevToolsManagerIO::ForwardToWorkerDevToolsAgentOnUIThread(
this, message);
}

void DevToolsWindow::OnRequestDockWindow() {
RequestSetDocked(true);
}
Expand Down
1 change: 0 additions & 1 deletion chrome/browser/debugger/devtools_window.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ class DevToolsWindow
virtual void RenderViewHostDestroyed() OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;

void OnForwardToAgent(const IPC::Message& message);
void OnActivateWindow();
void OnCloseWindow();
void OnRequestDockWindow();
Expand Down
18 changes: 10 additions & 8 deletions chrome/browser/ui/webui/workers_ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
#include "chrome/browser/ui/webui/chrome_url_data_manager_backend.h"
#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
#include "chrome/common/url_constants.h"
#include "content/browser/debugger/worker_devtools_manager_io.h"
#include "content/browser/debugger/devtools_manager.h"
#include "content/browser/debugger/worker_devtools_manager.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/worker_host/worker_process_host.h"
#include "content/common/devtools_messages.h"
Expand Down Expand Up @@ -121,19 +122,20 @@ void WorkersDOMHandler::HandleOpenDevTools(const ListValue* args) {
&worker_process_host_id));
CHECK(base::StringToInt(worker_route_id_str, &worker_route_id));

if (WorkerDevToolsManagerIO::HasDevToolsClient(worker_process_host_id,
worker_route_id))
return;
Profile* profile = Profile::FromWebUI(web_ui_);
if (!profile)
return;
DevToolsAgentHost* agent_host =
WorkerDevToolsManager::GetDevToolsAgentHostForWorker(
worker_process_host_id,
worker_route_id);
if (DevToolsManager::GetInstance()->GetDevToolsClientHostFor(agent_host))
return;
DevToolsWindow* window = DevToolsWindow::CreateDevToolsWindowForWorker(
profile);
window->Show(DEVTOOLS_TOGGLE_ACTION_NONE);
WorkerDevToolsManagerIO::RegisterDevToolsClientForWorkerOnUIThread(
window,
worker_process_host_id,
worker_route_id);
DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(agent_host,
window);
}

} // namespace
Expand Down
5 changes: 5 additions & 0 deletions content/browser/debugger/devtools_client_host.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "base/logging.h"
#include "content/browser/debugger/devtools_client_host.h"
#include "content/browser/debugger/devtools_manager.h"

DevToolsClientHost::DevToolsClientHostList DevToolsClientHost::instances_;

Expand Down Expand Up @@ -36,6 +37,10 @@ DevToolsClientHost::DevToolsClientHost() : close_listener_(NULL) {
instances_.push_back(this);
}

void DevToolsClientHost::ForwardToDevToolsAgent(const IPC::Message& message) {
DevToolsManager::GetInstance()->ForwardToDevToolsAgent(this, message);
}

void DevToolsClientHost::NotifyCloseListener() {
if (close_listener_) {
close_listener_->ClientHostClosing(this);
Expand Down
2 changes: 2 additions & 0 deletions content/browser/debugger/devtools_client_host.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ class DevToolsClientHost {
protected:
DevToolsClientHost();

void ForwardToDevToolsAgent(const IPC::Message& message);

// Should be called when the devtools client is going to die and this
// DevToolsClientHost should not be used anymore.
void NotifyCloseListener();
Expand Down
9 changes: 7 additions & 2 deletions content/browser/debugger/devtools_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,15 @@ void DevToolsManager::RegisterDevToolsClientHostFor(
RenderViewHost* inspected_rvh,
DevToolsClientHost* client_host) {
DCHECK(!GetDevToolsClientHostFor(inspected_rvh));

DevToolsRuntimeProperties initial_properties;
DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor(
inspected_rvh);
RegisterDevToolsClientHostFor(agent_host, client_host);
}

void DevToolsManager::RegisterDevToolsClientHostFor(
DevToolsAgentHost* agent_host,
DevToolsClientHost* client_host) {
DevToolsRuntimeProperties initial_properties;
BindClientHost(agent_host, client_host, initial_properties);
client_host->set_close_listener(this);
SendAttachToAgent(agent_host);
Expand Down
2 changes: 2 additions & 0 deletions content/browser/debugger/devtools_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
void CloseAllClientHosts();

DevToolsClientHost* GetDevToolsClientHostFor(DevToolsAgentHost* agent_host);
void RegisterDevToolsClientHostFor(DevToolsAgentHost* agent_host,
DevToolsClientHost* client_host);
void UnregisterDevToolsClientHostFor(DevToolsAgentHost* agent_host);

private:
Expand Down
Loading

0 comments on commit b3762af

Please sign in to comment.