summaryrefslogtreecommitdiffstats
path: root/content/browser/debugger
diff options
context:
space:
mode:
authoryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-10 06:41:15 +0000
committeryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-10 06:41:15 +0000
commitcd6e0ba8e0d9435222349ff4d4d7b19d137d9c57 (patch)
tree86abb304bc66611f09dcc7c8dbcb2d7f8cf6c5f7 /content/browser/debugger
parentb9f4cb14d8e28a25a0bd0f66f9a733a662e96e9c (diff)
downloadchromium_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')
-rw-r--r--content/browser/debugger/worker_devtools_manager.cc25
-rw-r--r--content/browser/debugger/worker_devtools_manager.h9
-rw-r--r--content/browser/debugger/worker_devtools_message_filter.cc12
-rw-r--r--content/browser/debugger/worker_devtools_message_filter.h2
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);
};