diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-10 06:41:15 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-10 06:41:15 +0000 |
commit | cd6e0ba8e0d9435222349ff4d4d7b19d137d9c57 (patch) | |
tree | 86abb304bc66611f09dcc7c8dbcb2d7f8cf6c5f7 /content/browser/debugger | |
parent | b9f4cb14d8e28a25a0bd0f66f9a733a662e96e9c (diff) | |
download | chromium_src-cd6e0ba8e0d9435222349ff4d4d7b19d137d9c57.zip chromium_src-cd6e0ba8e0d9435222349ff4d4d7b19d137d9c57.tar.gz chromium_src-cd6e0ba8e0d9435222349ff4d4d7b19d137d9c57.tar.bz2 |
DevTools: persist worker devtools agent state in DevToolsManager
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/8199005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104695 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/debugger')
4 files changed, 47 insertions, 1 deletions
diff --git a/content/browser/debugger/worker_devtools_manager.cc b/content/browser/debugger/worker_devtools_manager.cc index 573ef3f..5bd8071 100644 --- a/content/browser/debugger/worker_devtools_manager.cc +++ b/content/browser/debugger/worker_devtools_manager.cc @@ -281,6 +281,18 @@ void WorkerDevToolsManager::ForwardToDevToolsClient( message)); } +void WorkerDevToolsManager::SaveAgentRuntimeState(int worker_process_id, + int worker_route_id, + const std::string& state) { + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + NewRunnableFunction( + SaveAgentRuntimeStateOnUIThread, + worker_process_id, + worker_route_id, + state)); +} + void WorkerDevToolsManager::WorkerProcessDestroying( int worker_process_id) { inspected_workers_->WorkerDevToolsMessageFilterClosing( @@ -315,6 +327,19 @@ void WorkerDevToolsManager::ForwardToDevToolsClientOnUIThread( } // static +void WorkerDevToolsManager::SaveAgentRuntimeStateOnUIThread( + int worker_process_id, + int worker_route_id, + const std::string& state) { + WorkerDevToolsAgentHost* agent_host = AgentHosts::GetAgentHost(WorkerId( + worker_process_id, + worker_route_id)); + if (!agent_host) + return; + DevToolsManager::GetInstance()->SaveAgentRuntimeState(agent_host, state); +} + +// static void WorkerDevToolsManager::NotifyWorkerDestroyedOnIOThread( int worker_process_id, int worker_route_id) { diff --git a/content/browser/debugger/worker_devtools_manager.h b/content/browser/debugger/worker_devtools_manager.h index 0b5f7a9..d25f092 100644 --- a/content/browser/debugger/worker_devtools_manager.h +++ b/content/browser/debugger/worker_devtools_manager.h @@ -6,6 +6,8 @@ #define CONTENT_BROWSER_DEBUGGER_WORKER_DEVTOOLS_MANAGER_H_ #pragma once +#include <string> + #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" #include "base/memory/singleton.h" @@ -32,6 +34,9 @@ class WorkerDevToolsManager { void ForwardToDevToolsClient(int worker_process_id, int worker_route_id, const IPC::Message& message); + void SaveAgentRuntimeState(int worker_process_id, + int worker_route_id, + const std::string& state); private: friend struct DefaultSingletonTraits<WorkerDevToolsManager>; class AgentHosts; @@ -49,6 +54,10 @@ class WorkerDevToolsManager { int worker_process_id, int worker_route_id, const IPC::Message& message); + static void SaveAgentRuntimeStateOnUIThread( + int worker_process_id, + int worker_route_id, + const std::string& state); static void NotifyWorkerDestroyedOnIOThread(int worker_process_id, int worker_route_id); static void NotifyWorkerDestroyedOnUIThread(int worker_process_id, diff --git a/content/browser/debugger/worker_devtools_message_filter.cc b/content/browser/debugger/worker_devtools_message_filter.cc index 4f074ea..cc18bcc 100644 --- a/content/browser/debugger/worker_devtools_message_filter.cc +++ b/content/browser/debugger/worker_devtools_message_filter.cc @@ -11,7 +11,8 @@ WorkerDevToolsMessageFilter::WorkerDevToolsMessageFilter( int worker_process_host_id) - : worker_process_host_id_(worker_process_host_id) { + : worker_process_host_id_(worker_process_host_id), + current_routing_id_(0) { } WorkerDevToolsMessageFilter::~WorkerDevToolsMessageFilter() { @@ -27,9 +28,12 @@ bool WorkerDevToolsMessageFilter::OnMessageReceived( const IPC::Message& message, bool* message_was_ok) { bool handled = true; + current_routing_id_ = message.routing_id(); IPC_BEGIN_MESSAGE_MAP_EX(WorkerDevToolsMessageFilter, message, *message_was_ok) IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToClient, OnForwardToClient) + IPC_MESSAGE_HANDLER(DevToolsHostMsg_SaveAgentRuntimeState, + OnSaveAgentRumtimeState) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP_EX() return handled; @@ -40,3 +44,9 @@ void WorkerDevToolsMessageFilter::OnForwardToClient( WorkerDevToolsManager::GetInstance()->ForwardToDevToolsClient( worker_process_host_id_, message.routing_id(), message); } + +void WorkerDevToolsMessageFilter::OnSaveAgentRumtimeState( + const std::string& state) { + WorkerDevToolsManager::GetInstance()->SaveAgentRuntimeState( + worker_process_host_id_, current_routing_id_, state); +} diff --git a/content/browser/debugger/worker_devtools_message_filter.h b/content/browser/debugger/worker_devtools_message_filter.h index 5353782..8fed10d 100644 --- a/content/browser/debugger/worker_devtools_message_filter.h +++ b/content/browser/debugger/worker_devtools_message_filter.h @@ -22,8 +22,10 @@ class WorkerDevToolsMessageFilter : public BrowserMessageFilter { bool* message_was_ok); // Message handlers. void OnForwardToClient(const IPC::Message& message); + void OnSaveAgentRumtimeState(const std::string& state); int worker_process_host_id_; + int current_routing_id_; DISALLOW_COPY_AND_ASSIGN(WorkerDevToolsMessageFilter); }; |