Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / browser / devtools / embedded_worker_devtools_agent_host.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_BROWSER_DEVTOOLS_EMBEDDED_WORKER_DEVTOOLS_AGENT_HOST_H_
6 #define CONTENT_BROWSER_DEVTOOLS_EMBEDDED_WORKER_DEVTOOLS_AGENT_HOST_H_
7
8 #include "content/browser/devtools/embedded_worker_devtools_manager.h"
9 #include "content/browser/devtools/ipc_devtools_agent_host.h"
10 #include "ipc/ipc_listener.h"
11
12 namespace content {
13
14 class SharedWorkerInstance;
15
16 class EmbeddedWorkerDevToolsAgentHost : public IPCDevToolsAgentHost,
17                                         public IPC::Listener {
18  public:
19   typedef EmbeddedWorkerDevToolsManager::WorkerId WorkerId;
20   typedef EmbeddedWorkerDevToolsManager::ServiceWorkerIdentifier
21       ServiceWorkerIdentifier;
22
23   EmbeddedWorkerDevToolsAgentHost(WorkerId worker_id,
24                                   const SharedWorkerInstance& shared_worker);
25
26   EmbeddedWorkerDevToolsAgentHost(WorkerId worker_id,
27                                   const ServiceWorkerIdentifier& service_worker,
28                                   bool debug_service_worker_on_start);
29
30   // DevToolsAgentHost override.
31   virtual bool IsWorker() const OVERRIDE;
32
33   // IPCDevToolsAgentHost implementation.
34   virtual void SendMessageToAgent(IPC::Message* message) OVERRIDE;
35   virtual void Attach() OVERRIDE;
36   virtual void OnClientAttached() OVERRIDE {}
37   virtual void OnClientDetached() OVERRIDE;
38
39   // IPC::Listener implementation.
40   virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
41
42   void WorkerContextStarted();
43   void WorkerRestarted(WorkerId worker_id);
44   void WorkerDestroyed();
45   bool Matches(const SharedWorkerInstance& other);
46   bool Matches(const ServiceWorkerIdentifier& other);
47
48  private:
49   friend class EmbeddedWorkerDevToolsManagerTest;
50
51   virtual ~EmbeddedWorkerDevToolsAgentHost();
52
53   enum WorkerState {
54     WORKER_UNINSPECTED,
55     WORKER_INSPECTED,
56     WORKER_TERMINATED,
57     WORKER_PAUSED_FOR_DEBUG_ON_START,
58     WORKER_PAUSED_FOR_REATTACH,
59   };
60
61   void AttachToWorker();
62   void DetachFromWorker();
63   void WorkerCreated();
64   void OnDispatchOnInspectorFrontend(const std::string& message);
65   void OnSaveAgentRuntimeState(const std::string& state);
66
67   scoped_ptr<SharedWorkerInstance> shared_worker_;
68   scoped_ptr<ServiceWorkerIdentifier> service_worker_;
69   WorkerState state_;
70   WorkerId worker_id_;
71   std::string saved_agent_state_;
72   DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerDevToolsAgentHost);
73 };
74
75 }  // namespace content
76
77 #endif  // CONTENT_BROWSER_DEVTOOLS_EMBEDDED_WORKER_DEVTOOLS_AGENT_HOST_H_