Index: content/browser/shared_worker/shared_worker_service_impl.h |
diff --git a/content/browser/shared_worker/shared_worker_service_impl.h b/content/browser/shared_worker/shared_worker_service_impl.h |
index fd199894dedda196572c545976c37a06cc68eb1e..a60ec707f4dc995af09a695f169f85a68e06d39e 100644 |
--- a/content/browser/shared_worker/shared_worker_service_impl.h |
+++ b/content/browser/shared_worker/shared_worker_service_impl.h |
@@ -5,6 +5,8 @@ |
#ifndef CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_SERVICE_IMPL_H_ |
#define CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_SERVICE_IMPL_H_ |
+#include <set> |
+ |
#include "base/compiler_specific.h" |
#include "base/containers/scoped_ptr_hash_map.h" |
#include "base/memory/singleton.h" |
@@ -85,12 +87,23 @@ class CONTENT_EXPORT SharedWorkerServiceImpl |
void OnSharedWorkerMessageFilterClosing( |
SharedWorkerMessageFilter* filter); |
+ // Checks the worker dependency of renderer processes and calls |
+ // IncrementWorkerRefCount and DecrementWorkerRefCount of |
+ // RenderProcessHostImpl on UI thread if necessary. |
+ void CheckWorkerDependency(); |
+ |
private: |
friend struct DefaultSingletonTraits<SharedWorkerServiceImpl>; |
+ friend class SharedWorkerServiceImplTest; |
+ |
+ typedef void (*UpdateWorkerDependencyFunc)(const std::vector<int>&, |
+ const std::vector<int>&); |
SharedWorkerServiceImpl(); |
virtual ~SharedWorkerServiceImpl(); |
+ void ResetForTesting(); |
+ |
SharedWorkerHost* FindSharedWorkerHost( |
SharedWorkerMessageFilter* filter, |
int worker_route_id); |
@@ -101,6 +114,16 @@ class CONTENT_EXPORT SharedWorkerServiceImpl |
const WorkerStoragePartition& worker_partition, |
ResourceContext* resource_context); |
+ // Returns the IDs of the renderer processes which are executing |
+ // SharedWorkers connected to other renderer processes. |
+ const std::set<int> GetRenderersWithWorkerDependency(); |
+ |
+ void ChangeUpdateWorkerDependencyFuncForTesting( |
+ UpdateWorkerDependencyFunc new_func); |
+ |
+ std::set<int> last_worker_depended_renderers_; |
+ UpdateWorkerDependencyFunc update_worker_dependency_; |
+ |
// Pair of render_process_id and worker_route_id. |
typedef std::pair<int, int> ProcessRouteIdPair; |
typedef base::ScopedPtrHashMap<ProcessRouteIdPair, |