Index: trunk/src/content/browser/shared_worker/shared_worker_service_impl.cc |
=================================================================== |
--- trunk/src/content/browser/shared_worker/shared_worker_service_impl.cc (revision 256322) |
+++ trunk/src/content/browser/shared_worker/shared_worker_service_impl.cc (working copy) |
@@ -4,12 +4,6 @@ |
#include "content/browser/shared_worker/shared_worker_service_impl.h" |
-#include <algorithm> |
-#include <iterator> |
-#include <set> |
-#include <vector> |
- |
-#include "content/browser/renderer_host/render_process_host_impl.h" |
#include "content/browser/shared_worker/shared_worker_host.h" |
#include "content/browser/shared_worker/shared_worker_instance.h" |
#include "content/browser/shared_worker/shared_worker_message_filter.h" |
@@ -20,64 +14,16 @@ |
#include "content/public/browser/worker_service_observer.h" |
namespace content { |
-namespace { |
-class ScopedWorkerDependencyChecker { |
- public: |
- explicit ScopedWorkerDependencyChecker(SharedWorkerServiceImpl* service) |
- : service_(service) {} |
- ~ScopedWorkerDependencyChecker() { service_->CheckWorkerDependency(); } |
- |
- private: |
- SharedWorkerServiceImpl* service_; |
- DISALLOW_COPY_AND_ASSIGN(ScopedWorkerDependencyChecker); |
-}; |
- |
-void UpdateWorkerDependencyOnUI(const std::vector<int>& added_ids, |
- const std::vector<int>& removed_ids) { |
- for (size_t i = 0; i < added_ids.size(); ++i) { |
- RenderProcessHostImpl* render_process_host_impl = |
- static_cast<RenderProcessHostImpl*>( |
- RenderProcessHost::FromID(added_ids[i])); |
- if (!render_process_host_impl) |
- continue; |
- render_process_host_impl->IncrementWorkerRefCount(); |
- } |
- for (size_t i = 0; i < removed_ids.size(); ++i) { |
- RenderProcessHostImpl* render_process_host_impl = |
- static_cast<RenderProcessHostImpl*>( |
- RenderProcessHost::FromID(removed_ids[i])); |
- if (!render_process_host_impl) |
- continue; |
- render_process_host_impl->DecrementWorkerRefCount(); |
- } |
-} |
- |
-void UpdateWorkerDependency(const std::vector<int>& added_ids, |
- const std::vector<int>& removed_ids) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, |
- FROM_HERE, |
- base::Bind(&UpdateWorkerDependencyOnUI, added_ids, removed_ids)); |
-} |
- |
-} // namespace |
- |
SharedWorkerServiceImpl* SharedWorkerServiceImpl::GetInstance() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
return Singleton<SharedWorkerServiceImpl>::get(); |
} |
-SharedWorkerServiceImpl::SharedWorkerServiceImpl() |
- : update_worker_dependency_(UpdateWorkerDependency) {} |
+SharedWorkerServiceImpl::SharedWorkerServiceImpl() { |
+} |
-SharedWorkerServiceImpl::~SharedWorkerServiceImpl() {} |
- |
-void SharedWorkerServiceImpl::ResetForTesting() { |
- last_worker_depended_renderers_.clear(); |
- worker_hosts_.clear(); |
- observers_.Clear(); |
- update_worker_dependency_ = UpdateWorkerDependency; |
+SharedWorkerServiceImpl::~SharedWorkerServiceImpl() { |
} |
bool SharedWorkerServiceImpl::TerminateWorker(int process_id, int route_id) { |
@@ -127,7 +73,6 @@ |
const WorkerStoragePartition& partition, |
bool* url_mismatch) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- ScopedWorkerDependencyChecker checker(this); |
*url_mismatch = false; |
SharedWorkerInstance* existing_instance = |
FindSharedWorkerInstance( |
@@ -190,7 +135,6 @@ |
void SharedWorkerServiceImpl::DocumentDetached( |
unsigned long long document_id, |
SharedWorkerMessageFilter* filter) { |
- ScopedWorkerDependencyChecker checker(this); |
for (WorkerHostMap::const_iterator iter = worker_hosts_.begin(); |
iter != worker_hosts_.end(); |
++iter) { |
@@ -201,7 +145,6 @@ |
void SharedWorkerServiceImpl::WorkerContextClosed( |
int worker_route_id, |
SharedWorkerMessageFilter* filter) { |
- ScopedWorkerDependencyChecker checker(this); |
if (SharedWorkerHost* host = FindSharedWorkerHost(filter, worker_route_id)) |
host->WorkerContextClosed(); |
} |
@@ -209,7 +152,6 @@ |
void SharedWorkerServiceImpl::WorkerContextDestroyed( |
int worker_route_id, |
SharedWorkerMessageFilter* filter) { |
- ScopedWorkerDependencyChecker checker(this); |
scoped_ptr<SharedWorkerHost> host = |
worker_hosts_.take_and_erase(std::make_pair(filter->render_process_id(), |
worker_route_id)); |
@@ -228,7 +170,6 @@ |
void SharedWorkerServiceImpl::WorkerScriptLoadFailed( |
int worker_route_id, |
SharedWorkerMessageFilter* filter) { |
- ScopedWorkerDependencyChecker checker(this); |
scoped_ptr<SharedWorkerHost> host = |
worker_hosts_.take_and_erase(std::make_pair(filter->render_process_id(), |
worker_route_id)); |
@@ -278,7 +219,6 @@ |
void SharedWorkerServiceImpl::OnSharedWorkerMessageFilterClosing( |
SharedWorkerMessageFilter* filter) { |
- ScopedWorkerDependencyChecker checker(this); |
std::vector<ProcessRouteIdPair> remove_list; |
for (WorkerHostMap::iterator iter = worker_hosts_.begin(); |
iter != worker_hosts_.end(); |
@@ -313,48 +253,4 @@ |
return NULL; |
} |
-const std::set<int> |
-SharedWorkerServiceImpl::GetRenderersWithWorkerDependency() { |
- std::set<int> dependent_renderers; |
- for (WorkerHostMap::iterator host_iter = worker_hosts_.begin(); |
- host_iter != worker_hosts_.end(); |
- ++host_iter) { |
- const int process_id = host_iter->first.first; |
- if (dependent_renderers.count(process_id)) |
- continue; |
- SharedWorkerInstance* instance = host_iter->second->instance(); |
- if (instance && |
- instance->worker_document_set()->ContainsExternalRenderer(process_id)) { |
- dependent_renderers.insert(process_id); |
- } |
- } |
- return dependent_renderers; |
-} |
- |
-void SharedWorkerServiceImpl::CheckWorkerDependency() { |
- const std::set<int> current_worker_depended_renderers = |
- GetRenderersWithWorkerDependency(); |
- std::vector<int> added_items; |
- std::vector<int> removed_items; |
- std::set_difference(current_worker_depended_renderers.begin(), |
- current_worker_depended_renderers.end(), |
- last_worker_depended_renderers_.begin(), |
- last_worker_depended_renderers_.end(), |
- std::back_inserter(added_items)); |
- std::set_difference(last_worker_depended_renderers_.begin(), |
- last_worker_depended_renderers_.end(), |
- current_worker_depended_renderers.begin(), |
- current_worker_depended_renderers.end(), |
- std::back_inserter(removed_items)); |
- if (!added_items.empty() || !removed_items.empty()) { |
- last_worker_depended_renderers_ = current_worker_depended_renderers; |
- update_worker_dependency_(added_items, removed_items); |
- } |
-} |
- |
-void SharedWorkerServiceImpl::ChangeUpdateWorkerDependencyFuncForTesting( |
- UpdateWorkerDependencyFunc new_func) { |
- update_worker_dependency_ = new_func; |
-} |
- |
} // namespace content |