Index: content/browser/devtools/service_worker_devtools_manager.h |
diff --git a/content/browser/devtools/service_worker_devtools_manager.h b/content/browser/devtools/service_worker_devtools_manager.h |
index 3024e593896fe55bd5601fcc765eef2f27a58b83..ecb3712d9e04f9e8168e7d31230b3f02b2f4c645 100644 |
--- a/content/browser/devtools/service_worker_devtools_manager.h |
+++ b/content/browser/devtools/service_worker_devtools_manager.h |
@@ -10,19 +10,30 @@ |
#include "base/basictypes.h" |
#include "base/memory/singleton.h" |
#include "base/memory/weak_ptr.h" |
-#include "content/browser/devtools/worker_devtools_manager.h" |
-#include "content/browser/shared_worker/shared_worker_instance.h" |
+#include "base/observer_list.h" |
+#include "content/public/browser/devtools_agent_host.h" |
namespace content { |
+class DevToolsAgentHostImpl; |
class ServiceWorkerDevToolsAgentHost; |
class ServiceWorkerContextCore; |
// Manages WorkerDevToolsAgentHost's for Service Workers. |
// This class lives on UI thread. |
-class CONTENT_EXPORT ServiceWorkerDevToolsManager |
- : public WorkerDevToolsManager { |
+class CONTENT_EXPORT ServiceWorkerDevToolsManager { |
public: |
+ typedef std::pair<int, int> WorkerId; |
+ |
+ class Observer { |
+ public: |
+ virtual void WorkerCreated(DevToolsAgentHost* host) {} |
+ virtual void WorkerDestroyed(DevToolsAgentHost* host) {} |
+ |
+ protected: |
+ virtual ~Observer() {} |
+ }; |
+ |
class ServiceWorkerIdentifier { |
public: |
ServiceWorkerIdentifier( |
@@ -52,13 +63,23 @@ class CONTENT_EXPORT ServiceWorkerDevToolsManager |
// Returns the ServiceWorkerDevToolsManager singleton. |
static ServiceWorkerDevToolsManager* GetInstance(); |
+ DevToolsAgentHostImpl* GetDevToolsAgentHostForWorker(int worker_process_id, |
+ int worker_route_id); |
+ void AddAllAgentHosts(DevToolsAgentHost::List* result); |
+ |
// Returns true when the worker must be paused on start because a DevTool |
// window for the same former ServiceWorkerIdentifier is still opened or |
// debug-on-start is enabled in chrome://serviceworker-internals. |
bool WorkerCreated(int worker_process_id, |
int worker_route_id, |
const ServiceWorkerIdentifier& service_worker_id); |
+ void WorkerReadyForInspection(int worker_process_id, int worker_route_id); |
void WorkerStopIgnored(int worker_process_id, int worker_route_id); |
+ void WorkerDestroyed(int worker_process_id, int worker_route_id); |
+ void RemoveInspectedWorkerData(WorkerId id); |
+ |
+ void AddObserver(Observer* observer); |
+ void RemoveObserver(Observer* observer); |
void set_debug_service_worker_on_start(bool debug_on_start) { |
debug_service_worker_on_start_ = debug_on_start; |
@@ -71,12 +92,19 @@ class CONTENT_EXPORT ServiceWorkerDevToolsManager |
friend struct DefaultSingletonTraits<ServiceWorkerDevToolsManager>; |
friend class ServiceWorkerDevToolsAgentHost; |
+ using AgentHostMap = std::map<WorkerId, ServiceWorkerDevToolsAgentHost*>; |
+ |
ServiceWorkerDevToolsManager(); |
- ~ServiceWorkerDevToolsManager() override; |
+ ~ServiceWorkerDevToolsManager(); |
AgentHostMap::iterator FindExistingWorkerAgentHost( |
const ServiceWorkerIdentifier& service_worker_id); |
+ // Resets to its initial state as if newly created. |
+ void ResetForTesting(); |
+ |
+ ObserverList<Observer> observer_list_; |
+ AgentHostMap workers_; |
bool debug_service_worker_on_start_; |
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDevToolsManager); |