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.
5 #ifndef CONTENT_BROWSER_DEVTOOLS_EMBEDDED_WORKER_DEVTOOLS_AGENT_HOST_H_
6 #define CONTENT_BROWSER_DEVTOOLS_EMBEDDED_WORKER_DEVTOOLS_AGENT_HOST_H_
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"
14 class SharedWorkerInstance
;
16 class EmbeddedWorkerDevToolsAgentHost
: public IPCDevToolsAgentHost
,
17 public IPC::Listener
{
19 typedef EmbeddedWorkerDevToolsManager::WorkerId WorkerId
;
20 typedef EmbeddedWorkerDevToolsManager::ServiceWorkerIdentifier
21 ServiceWorkerIdentifier
;
23 EmbeddedWorkerDevToolsAgentHost(WorkerId worker_id
,
24 const SharedWorkerInstance
& shared_worker
);
26 EmbeddedWorkerDevToolsAgentHost(WorkerId worker_id
,
27 const ServiceWorkerIdentifier
& service_worker
,
28 bool debug_service_worker_on_start
);
30 // DevToolsAgentHost override.
31 virtual bool IsWorker() const OVERRIDE
;
32 virtual Type
GetType() OVERRIDE
;
33 virtual std::string
GetTitle() OVERRIDE
;
34 virtual GURL
GetURL() OVERRIDE
;
35 virtual bool Activate() OVERRIDE
;
36 virtual bool Close() OVERRIDE
;
38 // IPCDevToolsAgentHost implementation.
39 virtual void SendMessageToAgent(IPC::Message
* message
) OVERRIDE
;
40 virtual void Attach() OVERRIDE
;
41 virtual void OnClientAttached() OVERRIDE
{}
42 virtual void OnClientDetached() OVERRIDE
;
44 // IPC::Listener implementation.
45 virtual bool OnMessageReceived(const IPC::Message
& msg
) OVERRIDE
;
47 void WorkerReadyForInspection();
48 void WorkerContextStarted();
49 void WorkerRestarted(WorkerId worker_id
);
50 void WorkerDestroyed();
51 bool Matches(const SharedWorkerInstance
& other
);
52 bool Matches(const ServiceWorkerIdentifier
& other
);
56 friend class EmbeddedWorkerDevToolsManagerTest
;
58 virtual ~EmbeddedWorkerDevToolsAgentHost();
64 WORKER_PAUSED_FOR_DEBUG_ON_START
,
65 WORKER_PAUSED_FOR_REATTACH
,
68 void AttachToWorker();
69 void DetachFromWorker();
71 void OnDispatchOnInspectorFrontend(const std::string
& message
);
72 void OnSaveAgentRuntimeState(const std::string
& state
);
74 scoped_ptr
<SharedWorkerInstance
> shared_worker_
;
75 scoped_ptr
<ServiceWorkerIdentifier
> service_worker_
;
78 std::string saved_agent_state_
;
79 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerDevToolsAgentHost
);
82 } // namespace content
84 #endif // CONTENT_BROWSER_DEVTOOLS_EMBEDDED_WORKER_DEVTOOLS_AGENT_HOST_H_