summaryrefslogtreecommitdiffstats
path: root/content/child
diff options
context:
space:
mode:
authorhoro@chromium.org <horo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-14 15:30:22 +0000
committerhoro@chromium.org <horo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-14 15:30:22 +0000
commitdf960c46d1dadbd7d13827cf651f1993a604ed61 (patch)
tree06f0d1813be26b78481f6b0fb06284bacd630187 /content/child
parent890919a5d8c4bb8cfa0d04bffdacfcd8b500902f (diff)
downloadchromium_src-df960c46d1dadbd7d13827cf651f1993a604ed61.zip
chromium_src-df960c46d1dadbd7d13827cf651f1993a604ed61.tar.gz
chromium_src-df960c46d1dadbd7d13827cf651f1993a604ed61.tar.bz2
Implementations of SharedWorker in the renderer process.
In this CL I introduce 2 classes (EmbeddedSharedWorkerDevToolsAgent, EmbeddedSharedWorkerStub). EmbeddedSharedWorkerStub and EmbeddedSharedWorkerDevToolsAgent are almost same as WebSharedWorkerStub and SharedWorkerDevToolsAgent which are used in the worker process now. These classes are not used yet. EmbeddedSharedWorkerStub will be created when CreateWorker message is received by RenderThreadImpl. In this CL I move shared_worker_devtools_agent.* from content/worker/ to content/child/ because I want use it from content/renderer/shared_worker. BUG=327256 Review URL: https://codereview.chromium.org/158953008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251335 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/child')
-rw-r--r--content/child/shared_worker_devtools_agent.cc88
-rw-r--r--content/child/shared_worker_devtools_agent.h50
2 files changed, 138 insertions, 0 deletions
diff --git a/content/child/shared_worker_devtools_agent.cc b/content/child/shared_worker_devtools_agent.cc
new file mode 100644
index 0000000..475f55f
--- /dev/null
+++ b/content/child/shared_worker_devtools_agent.cc
@@ -0,0 +1,88 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/child/shared_worker_devtools_agent.h"
+
+#include "content/child/child_thread.h"
+#include "content/common/devtools_messages.h"
+#include "third_party/WebKit/public/platform/WebCString.h"
+#include "third_party/WebKit/public/platform/WebString.h"
+#include "third_party/WebKit/public/web/WebSharedWorker.h"
+
+using blink::WebSharedWorker;
+using blink::WebString;
+
+namespace content {
+
+SharedWorkerDevToolsAgent::SharedWorkerDevToolsAgent(
+ int route_id,
+ WebSharedWorker* webworker)
+ : route_id_(route_id),
+ webworker_(webworker) {
+}
+
+SharedWorkerDevToolsAgent::~SharedWorkerDevToolsAgent() {
+}
+
+// Called on the Worker thread.
+bool SharedWorkerDevToolsAgent::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(SharedWorkerDevToolsAgent, message)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Attach, OnAttach)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Reattach, OnReattach)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Detach, OnDetach)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DispatchOnInspectorBackend,
+ OnDispatchOnInspectorBackend)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_PauseWorkerContextOnStart,
+ OnPauseWorkerContextOnStart)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_ResumeWorkerContext,
+ OnResumeWorkerContext)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void SharedWorkerDevToolsAgent::SendDevToolsMessage(
+ const blink::WebString& message) {
+ Send(new DevToolsClientMsg_DispatchOnInspectorFrontend(
+ route_id_,
+ message.utf8()));
+}
+
+void SharedWorkerDevToolsAgent::SaveDevToolsAgentState(
+ const blink::WebString& state) {
+ Send(new DevToolsHostMsg_SaveAgentRuntimeState(route_id_,
+ state.utf8()));
+}
+
+void SharedWorkerDevToolsAgent::OnAttach() {
+ webworker_->attachDevTools();
+}
+
+void SharedWorkerDevToolsAgent::OnReattach(const std::string& state) {
+ webworker_->reattachDevTools(WebString::fromUTF8(state));
+}
+
+void SharedWorkerDevToolsAgent::OnDetach() {
+ webworker_->detachDevTools();
+}
+
+void SharedWorkerDevToolsAgent::OnDispatchOnInspectorBackend(
+ const std::string& message) {
+ webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message));
+}
+
+void SharedWorkerDevToolsAgent::OnPauseWorkerContextOnStart() {
+ webworker_->pauseWorkerContextOnStart();
+}
+
+void SharedWorkerDevToolsAgent::OnResumeWorkerContext() {
+ webworker_->resumeWorkerContext();
+}
+
+bool SharedWorkerDevToolsAgent::Send(IPC::Message* message) {
+ return ChildThread::current()->Send(message);
+}
+
+} // namespace content
diff --git a/content/child/shared_worker_devtools_agent.h b/content/child/shared_worker_devtools_agent.h
new file mode 100644
index 0000000..8106989
--- /dev/null
+++ b/content/child/shared_worker_devtools_agent.h
@@ -0,0 +1,50 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_CHILD_SHARED_WORKER_DEVTOOLS_AGENT_H_
+#define CONTENT_CHILD_SHARED_WORKER_DEVTOOLS_AGENT_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+
+namespace IPC {
+class Message;
+}
+
+namespace blink {
+class WebSharedWorker;
+class WebString;
+}
+
+namespace content {
+
+class SharedWorkerDevToolsAgent {
+ public:
+ SharedWorkerDevToolsAgent(int route_id, blink::WebSharedWorker*);
+ ~SharedWorkerDevToolsAgent();
+
+ // Called on the Worker thread.
+ bool OnMessageReceived(const IPC::Message& message);
+ void SendDevToolsMessage(const blink::WebString&);
+ void SaveDevToolsAgentState(const blink::WebString& state);
+
+ private:
+ void OnAttach();
+ void OnReattach(const std::string&);
+ void OnDetach();
+ void OnDispatchOnInspectorBackend(const std::string& message);
+ void OnPauseWorkerContextOnStart();
+ void OnResumeWorkerContext();
+
+ bool Send(IPC::Message* message);
+ const int route_id_;
+ blink::WebSharedWorker* webworker_;
+
+ DISALLOW_COPY_AND_ASSIGN(SharedWorkerDevToolsAgent);
+};
+
+} // namespace content
+
+#endif // CONTENT_CHILD_SHARED_WORKER_DEVTOOLS_AGENT_H_