| 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_;
 | 
|  
 | 
| 
 |