Chromium Code Reviews| Index: content/browser/devtools/embedded_worker_devtools_manager.cc |
| diff --git a/content/browser/devtools/embedded_worker_devtools_manager.cc b/content/browser/devtools/embedded_worker_devtools_manager.cc |
| index 3ba61aafeea20e9b12ec8973ef32aa1e3f5cd7cb..2cfc0fd9c495383e353a4d4a9f886e66847d9a53 100644 |
| --- a/content/browser/devtools/embedded_worker_devtools_manager.cc |
| +++ b/content/browser/devtools/embedded_worker_devtools_manager.cc |
| @@ -8,9 +8,12 @@ |
| #include "content/browser/devtools/devtools_protocol.h" |
| #include "content/browser/devtools/devtools_protocol_constants.h" |
| #include "content/browser/devtools/ipc_devtools_agent_host.h" |
| +#include "content/browser/service_worker/service_worker_context_core.h" |
| +#include "content/browser/service_worker/service_worker_version.h" |
| #include "content/browser/shared_worker/shared_worker_instance.h" |
| #include "content/common/devtools_messages.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/devtools_target.h" |
| #include "content/public/browser/render_process_host.h" |
| #include "content/public/browser/worker_service.h" |
| #include "ipc/ipc_listener.h" |
| @@ -173,13 +176,86 @@ class EmbeddedWorkerDevToolsManager::EmbeddedWorkerDevToolsAgentHost |
| DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerDevToolsAgentHost); |
| }; |
| +class EmbeddedWorkerDevToolsManager::ServiceWorkerTarget |
| + : public DevToolsTarget { |
| + public: |
|
pfeldman
2014/06/30 16:37:21
We can't implement DevToolsTarget in content. It i
vkuzkokov
2014/07/04 16:06:47
That would require a new interface which would mir
pfeldman
2014/07/05 20:17:09
Can we migrate to DTAH for everything instead?
|
| + ServiceWorkerTarget( |
| + scoped_refptr<EmbeddedWorkerDevToolsAgentHost> agent_host) |
| + : agent_host_(agent_host) { |
| + } |
| + |
| + virtual ~ServiceWorkerTarget() { |
| + } |
| + |
| + virtual std::string GetId() const OVERRIDE { |
| + return agent_host_->GetId(); |
| + } |
| + |
| + virtual std::string GetParentId() const OVERRIDE { |
| + return ""; |
| + } |
| + |
| + virtual std::string GetType() const OVERRIDE { |
| + return "worker"; |
| + } |
| + |
| + virtual std::string GetTitle() const OVERRIDE { |
| + return "Service Worker"; |
| + } |
| + |
| + virtual std::string GetDescription() const OVERRIDE { |
| + return "Service Worker"; |
| + } |
| + |
| + virtual GURL GetURL() const OVERRIDE { |
| + return GURL(); |
| + } |
| + |
| + virtual GURL GetFaviconURL() const OVERRIDE { |
| + return GURL(); |
| + } |
| + |
| + virtual base::TimeTicks GetLastActivityTime() const OVERRIDE { |
| + return base::TimeTicks(); |
| + } |
| + |
| + virtual bool IsAttached() const OVERRIDE { |
| + return agent_host_->IsAttached(); |
| + } |
| + |
| + virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE { |
| + return agent_host_; |
| + } |
| + |
| + virtual bool Activate() const OVERRIDE { |
| + return false; |
| + } |
| + |
| + virtual bool Close() const OVERRIDE { |
| + return EmbeddedWorkerDevToolsManager::GetInstance()->CloseServiceWorker( |
| + agent_host_->worker_id()); |
| + } |
| + |
| + private: |
| + scoped_refptr<EmbeddedWorkerDevToolsAgentHost> agent_host_; |
| + ServiceWorkerIdentifier* worker_id_; |
| +}; |
| + |
| // static |
| EmbeddedWorkerDevToolsManager* EmbeddedWorkerDevToolsManager::GetInstance() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| return Singleton<EmbeddedWorkerDevToolsManager>::get(); |
| } |
| -DevToolsAgentHost* EmbeddedWorkerDevToolsManager::GetDevToolsAgentHostForWorker( |
| +DevToolsAgentHost* |
| +EmbeddedWorkerDevToolsManager::GetDevToolsAgentHostForWorker( |
| + int worker_process_id, |
| + int worker_route_id) { |
| + return GetOrCreateAgentHost(worker_process_id, worker_route_id); |
| +} |
| + |
| +EmbeddedWorkerDevToolsManager::EmbeddedWorkerDevToolsAgentHost* |
| +EmbeddedWorkerDevToolsManager::GetOrCreateAgentHost( |
| int worker_process_id, |
| int worker_route_id) { |
| WorkerId id(worker_process_id, worker_route_id); |
| @@ -210,6 +286,20 @@ EmbeddedWorkerDevToolsManager::GetDevToolsAgentHostForServiceWorker( |
| return GetDevToolsAgentHostForWorker(it->first.first, it->first.second); |
| } |
| +std::vector<DevToolsTarget*> |
| +EmbeddedWorkerDevToolsManager::GetAllServiceWorkerTargets() { |
| + std::vector<DevToolsTarget*> targets; |
| + for (WorkerInfoMap::iterator it = workers_.begin(); |
| + it != workers_.end(); ++it) { |
| + ServiceWorkerIdentifier* worker_id = it->second->service_worker_id(); |
| + if (!worker_id) |
| + continue; |
| + targets.push_back(new ServiceWorkerTarget( |
| + GetOrCreateAgentHost(it->first.first, it->first.second))); |
| + } |
| + return targets; |
| +} |
| + |
| EmbeddedWorkerDevToolsManager::EmbeddedWorkerDevToolsManager() |
| : debug_service_worker_on_start_(false) { |
| } |
| @@ -372,6 +462,23 @@ void EmbeddedWorkerDevToolsManager::MoveToPausedState( |
| workers_.set(id, info.Pass()); |
| } |
| +bool EmbeddedWorkerDevToolsManager::CloseServiceWorker(const WorkerId& id) { |
| + return false; |
| + //WorkerInfoMap::iterator it = workers_.find(id); |
| + //if (it == workers_.end()); |
|
pfeldman
2014/06/30 16:37:21
Cleanup.
vkuzkokov
2014/07/04 16:06:47
Uncommented and finished
|
| + // return false; |
| + //ServiceWorkerIdentifier* service_worker = it->second->service_worker_id(); |
| + //if (!service_worker) |
| + // return false; |
| + //ServiceWorkerVersion* version = |
| + // service_worker->service_worker_context_->GetLiveVersion( |
| + // service_worker->service_worker_version_id_); |
| + //if (!version) |
| + // return false; |
| + //version->StopWorker(ServiceWorkerVersion::StatusCallback()); |
| + //return true; |
| +} |
| + |
| void EmbeddedWorkerDevToolsManager::ResetForTesting() { |
| workers_.clear(); |
| } |