| Index: chrome/browser/worker_host/worker_service.h
|
| ===================================================================
|
| --- chrome/browser/worker_host/worker_service.h (revision 69724)
|
| +++ chrome/browser/worker_host/worker_service.h (working copy)
|
| @@ -11,83 +11,50 @@
|
| #include "base/basictypes.h"
|
| #include "base/singleton.h"
|
| #include "chrome/browser/worker_host/worker_process_host.h"
|
| -#include "chrome/common/notification_registrar.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "ipc/ipc_message.h"
|
|
|
| -class ChromeURLRequestContext;
|
| -class ResourceDispatcherHost;
|
| +class URLRequestContextGetter;
|
| +struct ViewHostMsg_CreateWorker_Params;
|
|
|
| -class WorkerService : public NotificationObserver {
|
| +// A singelton for managing HTML5 web workers.
|
| +class WorkerService {
|
| public:
|
| // Returns the WorkerService singleton.
|
| static WorkerService* GetInstance();
|
|
|
| - // Initialize the WorkerService. OK to be called multiple times.
|
| - void Initialize(ResourceDispatcherHost* rdh);
|
| -
|
| - // Creates a decidated worker. Returns true on success.
|
| - bool CreateDedicatedWorker(const GURL &url,
|
| - bool is_off_the_record,
|
| - unsigned long long document_id,
|
| - int renderer_pid,
|
| - int render_view_route_id,
|
| - IPC::Message::Sender* sender,
|
| - int sender_route_id,
|
| - int parent_process_id,
|
| - int parent_appcache_host_id,
|
| - ChromeURLRequestContext* request_context);
|
| -
|
| - // Creates a shared worker. Returns true on success.
|
| - bool CreateSharedWorker(const GURL &url,
|
| - bool is_off_the_record,
|
| - const string16& name,
|
| - unsigned long long document_id,
|
| - int renderer_pid,
|
| - int render_view_route_id,
|
| - IPC::Message::Sender* sender,
|
| - int sender_route_id,
|
| - int64 main_resource_appcache_id,
|
| - ChromeURLRequestContext* request_context);
|
| -
|
| - // Validates the passed URL and checks for the existence of matching shared
|
| - // worker. Returns true if the url was found, and sets the url_mismatch out
|
| - // param to true/false depending on whether there's a url mismatch with an
|
| - // existing shared worker with the same name.
|
| - bool LookupSharedWorker(const GURL &url,
|
| - const string16& name,
|
| + // These methods correspond to worker related IPCs.
|
| + void CreateWorker(const ViewHostMsg_CreateWorker_Params& params,
|
| + int route_id,
|
| + WorkerMessageFilter* filter,
|
| + URLRequestContextGetter* request_context);
|
| + void LookupSharedWorker(const ViewHostMsg_CreateWorker_Params& params,
|
| + int route_id,
|
| + WorkerMessageFilter* filter,
|
| bool off_the_record,
|
| - unsigned long long document_id,
|
| - int renderer_pid,
|
| - int render_view_route_id,
|
| - IPC::Message::Sender* sender,
|
| - int sender_route_id,
|
| - bool* url_mismatch);
|
| + bool* exists,
|
| + bool* url_error);
|
| + void CancelCreateDedicatedWorker(int route_id, WorkerMessageFilter* filter);
|
| + void ForwardToWorker(const IPC::Message& message,
|
| + WorkerMessageFilter* filter);
|
| + void DocumentDetached(unsigned long long document_id,
|
| + WorkerMessageFilter* filter);
|
|
|
| - // Notification from the renderer that a given document has detached, so any
|
| - // associated shared workers can be shut down.
|
| - void DocumentDetached(IPC::Message::Sender* sender,
|
| - unsigned long long document_id);
|
| + void OnWorkerMessageFilterClosing(WorkerMessageFilter* filter);
|
|
|
| - // Cancel creation of a dedicated worker that hasn't started yet.
|
| - void CancelCreateDedicatedWorker(IPC::Message::Sender* sender,
|
| - int sender_route_id);
|
| -
|
| - // Called by the worker creator when a message arrives that should be
|
| - // forwarded to the worker process.
|
| - void ForwardMessage(const IPC::Message& message,
|
| - IPC::Message::Sender* sender);
|
| -
|
| int next_worker_route_id() { return ++next_worker_route_id_; }
|
|
|
| + // Given a worker's process id, return the IDs of the renderer process and
|
| + // render view that created it. For shared workers, this returns the first
|
| + // parent.
|
| // TODO(dimich): This code assumes there is 1 worker per worker process, which
|
| // is how it is today until V8 can run in separate threads.
|
| + bool GetRendererForWorker(int worker_process_id,
|
| + int* render_process_id,
|
| + int* render_view_id) const;
|
| const WorkerProcessHost::WorkerInstance* FindWorkerInstance(
|
| int worker_process_id);
|
|
|
| - WorkerProcessHost::WorkerInstance* FindSharedWorkerInstance(
|
| - const GURL& url, const string16& name, bool off_the_record);
|
| -
|
| // Used when multiple workers can run in the same process.
|
| static const int kMaxWorkerProcessesWhenSharing;
|
|
|
| @@ -101,20 +68,6 @@
|
| WorkerService();
|
| ~WorkerService();
|
|
|
| - bool CreateWorker(const GURL &url,
|
| - bool is_shared,
|
| - bool is_off_the_record,
|
| - const string16& name,
|
| - unsigned long long document_id,
|
| - int renderer_pid,
|
| - int render_view_route_id,
|
| - IPC::Message::Sender* sender,
|
| - int sender_route_id,
|
| - int parent_process_id,
|
| - int parent_appcache_host_id,
|
| - int64 main_resource_appcache_id,
|
| - ChromeURLRequestContext* request_context);
|
| -
|
| // Given a WorkerInstance, create an associated worker process.
|
| bool CreateWorkerFromInstance(WorkerProcessHost::WorkerInstance instance);
|
|
|
| @@ -139,19 +92,11 @@
|
| // worker process based on the process limit when we're using a strategy of
|
| // one worker per process.
|
| bool TabCanCreateWorkerProcess(
|
| - int renderer_id, int render_view_route_id, bool* hit_total_worker_limit);
|
| + int render_process_id, int render_route_id, bool* hit_total_worker_limit);
|
|
|
| - // NotificationObserver interface.
|
| - virtual void Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details);
|
| + // Tries to see if any of the queued workers can be created.
|
| + void TryStartingQueuedWorker();
|
|
|
| - // Notifies us that a process that's talking to a worker has shut down.
|
| - void SenderShutdown(IPC::Message::Sender* sender);
|
| -
|
| - // Notifies us that a worker process has closed.
|
| - void WorkerProcessDestroyed(WorkerProcessHost* process);
|
| -
|
| // APIs for manipulating our set of pending shared worker instances.
|
| WorkerProcessHost::WorkerInstance* CreatePendingInstance(
|
| const GURL& url, const string16& name, bool off_the_record);
|
| @@ -160,9 +105,11 @@
|
| void RemovePendingInstances(
|
| const GURL& url, const string16& name, bool off_the_record);
|
|
|
| + WorkerProcessHost::WorkerInstance* FindSharedWorkerInstance(
|
| + const GURL& url, const string16& name, bool off_the_record);
|
| +
|
| NotificationRegistrar registrar_;
|
| int next_worker_route_id_;
|
| - ResourceDispatcherHost* resource_dispatcher_host_;
|
|
|
| WorkerProcessHost::Instances queued_workers_;
|
|
|
|
|