Home | History | Annotate | Download | only in shared_worker
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_
      6 #define CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_
      7 
      8 #include "content/browser/worker_host/worker_storage_partition.h"
      9 #include "content/common/content_export.h"
     10 #include "content/public/browser/browser_message_filter.h"
     11 
     12 class GURL;
     13 struct ViewHostMsg_CreateWorker_Params;
     14 
     15 namespace content {
     16 class MessagePortMessageFilter;
     17 class ResourceContext;
     18 
     19 // If "enable-embedded-shared-worker" is set this class will be used instead of
     20 // WorkerMessageFilter.
     21 class CONTENT_EXPORT SharedWorkerMessageFilter : public BrowserMessageFilter {
     22  public:
     23   SharedWorkerMessageFilter(int render_process_id,
     24                             ResourceContext* resource_context,
     25                             const WorkerStoragePartition& partition,
     26                             MessagePortMessageFilter* message_port_filter);
     27 
     28   // BrowserMessageFilter implementation.
     29   virtual void OnChannelClosing() OVERRIDE;
     30   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     31 
     32   int GetNextRoutingID();
     33   int render_process_id() const { return render_process_id_; }
     34 
     35   MessagePortMessageFilter* message_port_message_filter() const {
     36     return message_port_message_filter_;
     37   }
     38 
     39  protected:
     40   // This is protected, so we can define sub classes for testing.
     41   virtual ~SharedWorkerMessageFilter();
     42 
     43  private:
     44   // Message handlers.
     45   void OnCreateWorker(const ViewHostMsg_CreateWorker_Params& params,
     46                       int* route_id);
     47   void OnForwardToWorker(const IPC::Message& message);
     48   void OnDocumentDetached(unsigned long long document_id);
     49   void OnWorkerContextClosed(int worker_route_id);
     50   void OnWorkerContextDestroyed(int worker_route_id);
     51   void OnWorkerScriptLoaded(int worker_route_id);
     52   void OnWorkerScriptLoadFailed(int worker_route_id);
     53   void OnWorkerConnected(int message_port_id, int worker_route_id);
     54   void OnAllowDatabase(int worker_route_id,
     55                        const GURL& url,
     56                        const base::string16& name,
     57                        const base::string16& display_name,
     58                        unsigned long estimated_size,
     59                        bool* result);
     60   void OnRequestFileSystemAccessSync(int worker_route_id,
     61                                      const GURL& url,
     62                                      bool* result);
     63   void OnAllowIndexedDB(int worker_route_id,
     64                         const GURL& url,
     65                         const base::string16& name,
     66                         bool* result);
     67 
     68   const int render_process_id_;
     69   ResourceContext* const resource_context_;
     70   const WorkerStoragePartition partition_;
     71   MessagePortMessageFilter* const message_port_message_filter_;
     72 
     73   DISALLOW_IMPLICIT_CONSTRUCTORS(SharedWorkerMessageFilter);
     74 };
     75 
     76 }  // namespace content
     77 
     78 #endif  // CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_
     79