Home | History | Annotate | Download | only in worker_host
      1 // Copyright (c) 2011 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_WORKER_HOST_WORKER_MESSAGE_FILTER_H_
      6 #define CONTENT_BROWSER_WORKER_HOST_WORKER_MESSAGE_FILTER_H_
      7 
      8 #include "base/callback.h"
      9 #include "content/browser/worker_host/worker_storage_partition.h"
     10 #include "content/public/browser/browser_message_filter.h"
     11 
     12 class ResourceDispatcherHost;
     13 struct ViewHostMsg_CreateWorker_Params;
     14 
     15 namespace content {
     16 class MessagePortMessageFilter;
     17 class ResourceContext;
     18 
     19 class WorkerMessageFilter : public BrowserMessageFilter {
     20  public:
     21   WorkerMessageFilter(int render_process_id,
     22                       ResourceContext* resource_context,
     23                       const WorkerStoragePartition& partition,
     24                       MessagePortMessageFilter* message_port_filter);
     25 
     26   // BrowserMessageFilter implementation.
     27   virtual void OnChannelClosing() OVERRIDE;
     28   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     29 
     30   int GetNextRoutingID();
     31   int render_process_id() const { return render_process_id_; }
     32 
     33   MessagePortMessageFilter* message_port_message_filter() const {
     34     return message_port_message_filter_;
     35   }
     36 
     37  private:
     38   virtual ~WorkerMessageFilter();
     39 
     40   // Message handlers.
     41   void OnCreateWorker(const ViewHostMsg_CreateWorker_Params& params,
     42                       int* route_id);
     43   void OnForwardToWorker(const IPC::Message& message);
     44   void OnDocumentDetached(unsigned long long document_id);
     45 
     46   int render_process_id_;
     47   ResourceContext* const resource_context_;
     48   WorkerStoragePartition partition_;
     49 
     50   MessagePortMessageFilter* message_port_message_filter_;
     51   DISALLOW_IMPLICIT_CONSTRUCTORS(WorkerMessageFilter);
     52 };
     53 
     54 }  // namespace content
     55 
     56 #endif  // CONTENT_BROWSER_WORKER_HOST_WORKER_MESSAGE_FILTER_H_
     57