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..d93dcdd643d2cb78d1c93f38a211e461ceb3a5a3 100644 |
--- a/content/browser/devtools/service_worker_devtools_manager.h |
+++ b/content/browser/devtools/service_worker_devtools_manager.h |
@@ -10,19 +10,31 @@ |
#include "base/basictypes.h" |
#include "base/memory/singleton.h" |
#include "base/memory/weak_ptr.h" |
-#include "content/browser/devtools/worker_devtools_manager.h" |
+#include "base/observer_list.h" |
#include "content/browser/shared_worker/shared_worker_instance.h" |
dgozman
2015/03/07 20:46:40
nit: unnecessary include
pfeldman
2015/03/08 12:17:27
Done.
pfeldman
2015/03/08 12:17:27
Done.
|
+#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 +64,23 @@ class CONTENT_EXPORT ServiceWorkerDevToolsManager |
// Returns the ServiceWorkerDevToolsManager singleton. |
static ServiceWorkerDevToolsManager* GetInstance(); |
+ DevToolsAgentHostImpl* GetDevToolsAgentHostForWorker(int worker_process_id, |
dgozman
2015/03/07 20:46:40
return ServiceWorkerDevToolsAgentHost*?
pfeldman
2015/03/08 12:17:27
Clients don't need it to be that specific, you onl
|
+ 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); |
dgozman
2015/03/07 20:46:40
Should all this methods be public? Perhaps, "frien
pfeldman
2015/03/08 12:17:27
It is the other way around, these are the instrume
|
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 +93,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); |