Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Unified Diff: content/browser/worker_host/worker_service_impl.cc

Issue 10910207: Remove flags for Workers that violate multiple profile and storage isolation assumptions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge with ToT Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/worker_host/worker_service_impl.h ('k') | content/public/common/content_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/worker_host/worker_service_impl.cc
diff --git a/content/browser/worker_host/worker_service_impl.cc b/content/browser/worker_host/worker_service_impl.cc
index 13f3021bc5c3802583e7800d8be20c802ef678ab..c19a38943bfa18c6973b0ebe2f8bb130324e4754 100644
--- a/content/browser/worker_host/worker_service_impl.cc
+++ b/content/browser/worker_host/worker_service_impl.cc
@@ -8,7 +8,6 @@
#include "base/command_line.h"
#include "base/logging.h"
-#include "base/sys_info.h"
#include "base/threading/thread.h"
#include "content/browser/debugger/worker_devtools_manager.h"
#include "content/browser/worker_host/worker_message_filter.h"
@@ -20,11 +19,9 @@
#include "content/public/browser/worker_service_observer.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/process_type.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
namespace content {
-const int WorkerServiceImpl::kMaxWorkerProcessesWhenSharing = 10;
const int WorkerServiceImpl::kMaxWorkersWhenSeparate = 64;
const int WorkerServiceImpl::kMaxWorkersPerTabWhenSeparate = 16;
@@ -213,22 +210,9 @@ void WorkerServiceImpl::DocumentDetached(unsigned long long document_id,
bool WorkerServiceImpl::CreateWorkerFromInstance(
WorkerProcessHost::WorkerInstance instance) {
- // TODO(michaeln): We need to ensure that a process is working
- // on behalf of a single browser context. The process sharing logic below
- // does not ensure that. Consider making WorkerService a per browser context
- // object to help with this.
- WorkerProcessHost* worker = NULL;
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kWebWorkerProcessPerCore)) {
- worker = GetProcessToFillUpCores();
- } else if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kWebWorkerShareProcesses)) {
- worker = GetProcessForDomain(instance.url());
- } else { // One process per worker.
- if (!CanCreateWorkerProcess(instance)) {
- queued_workers_.push_back(instance);
- return true;
- }
+ if (!CanCreateWorkerProcess(instance)) {
+ queued_workers_.push_back(instance);
+ return true;
}
// Check to see if this shared worker is already running (two pages may have
@@ -295,24 +279,18 @@ bool WorkerServiceImpl::CreateWorkerFromInstance(
}
}
- if (!worker) {
- WorkerMessageFilter* first_filter = instance.filters().begin()->first;
- worker = new WorkerProcessHost(instance.resource_context(),
- instance.partition());
- // TODO(atwilson): This won't work if the message is from a worker process.
- // We don't support that yet though (this message is only sent from
- // renderers) but when we do, we'll need to add code to pass in the current
- // worker's document set for nested workers.
- if (!worker->Init(first_filter->render_process_id())) {
- delete worker;
- return false;
- }
+ WorkerMessageFilter* first_filter = instance.filters().begin()->first;
+ WorkerProcessHost* worker = new WorkerProcessHost(
+ instance.resource_context(), instance.partition());
+ // TODO(atwilson): This won't work if the message is from a worker process.
+ // We don't support that yet though (this message is only sent from
+ // renderers) but when we do, we'll need to add code to pass in the current
+ // worker's document set for nested workers.
+ if (!worker->Init(first_filter->render_process_id())) {
+ delete worker;
+ return false;
}
- // TODO(michaeln): As written, test can fail per my earlier comment in
- // this method, but that's a bug.
- // DCHECK(worker->request_context() == instance.GetRequestContext());
-
worker->CreateWorker(instance);
FOR_EACH_OBSERVER(
WorkerServiceObserver, observers_,
@@ -322,49 +300,6 @@ bool WorkerServiceImpl::CreateWorkerFromInstance(
return true;
}
-WorkerProcessHost* WorkerServiceImpl::GetProcessForDomain(const GURL& url) {
- int num_processes = 0;
- std::string domain =
- net::RegistryControlledDomainService::GetDomainAndRegistry(url);
- for (WorkerProcessHostIterator iter; !iter.Done(); ++iter) {
- num_processes++;
- for (WorkerProcessHost::Instances::const_iterator instance =
- iter->instances().begin();
- instance != iter->instances().end(); ++instance) {
- if (net::RegistryControlledDomainService::GetDomainAndRegistry(
- instance->url()) == domain) {
- return *iter;
- }
- }
- }
-
- if (num_processes >= kMaxWorkerProcessesWhenSharing)
- return GetLeastLoadedWorker();
-
- return NULL;
-}
-
-WorkerProcessHost* WorkerServiceImpl::GetProcessToFillUpCores() {
- int num_processes = 0;
- for (WorkerProcessHostIterator iter; !iter.Done(); ++iter)
- num_processes++;
-
- if (num_processes >= base::SysInfo::NumberOfProcessors())
- return GetLeastLoadedWorker();
-
- return NULL;
-}
-
-WorkerProcessHost* WorkerServiceImpl::GetLeastLoadedWorker() {
- WorkerProcessHost* smallest = NULL;
- for (WorkerProcessHostIterator iter; !iter.Done(); ++iter) {
- if (!smallest || iter->instances().size() < smallest->instances().size())
- smallest = *iter;
- }
-
- return smallest;
-}
-
bool WorkerServiceImpl::CanCreateWorkerProcess(
const WorkerProcessHost::WorkerInstance& instance) {
// Worker can be fired off if *any* parent has room.
« no previous file with comments | « content/browser/worker_host/worker_service_impl.h ('k') | content/public/common/content_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698