Home | History | Annotate | Download | only in worker
      1 // Copyright (c) 2012 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_WORKER_WEBWORKERCLIENT_PROXY_H_
      6 #define CONTENT_WORKER_WEBWORKERCLIENT_PROXY_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/weak_ptr.h"
     10 #include "ipc/ipc_channel.h"
     11 #include "third_party/WebKit/public/web/WebSharedWorkerClient.h"
     12 
     13 namespace blink {
     14 class WebApplicationCacheHost;
     15 class WebApplicationCacheHostClient;
     16 class WebFrame;
     17 class WebSecurityOrigin;
     18 }
     19 
     20 namespace content {
     21 
     22 class SharedWorkerDevToolsAgent;
     23 class WebSharedWorkerStub;
     24 
     25 // This class receives IPCs from the renderer and calls the WebCore::Worker
     26 // implementation (after the data types have been converted by glue code).  It
     27 // is also called by the worker code and converts these function calls into
     28 // IPCs that are sent to the renderer, where they're converted back to function
     29 // calls by WebWorkerProxy.
     30 class WebSharedWorkerClientProxy : public blink::WebSharedWorkerClient {
     31  public:
     32   WebSharedWorkerClientProxy(int route_id, WebSharedWorkerStub* stub);
     33   virtual ~WebSharedWorkerClientProxy();
     34 
     35   // WebSharedWorkerClient implementation.
     36   virtual void workerContextClosed();
     37   virtual void workerContextDestroyed();
     38 
     39   virtual blink::WebNotificationPresenter* notificationPresenter();
     40 
     41   virtual blink::WebApplicationCacheHost* createApplicationCacheHost(
     42       blink::WebApplicationCacheHostClient* client);
     43   virtual blink::WebWorkerPermissionClientProxy*
     44       createWorkerPermissionClientProxy(
     45           const blink::WebSecurityOrigin& origin);
     46 
     47   // TODO(kinuko): Deprecate these methods.
     48   virtual bool allowDatabase(blink::WebFrame* frame,
     49                              const blink::WebString& name,
     50                              const blink::WebString& display_name,
     51                              unsigned long estimated_size);
     52   virtual bool allowFileSystem();
     53   virtual bool allowIndexedDB(const blink::WebString&);
     54 
     55   virtual void dispatchDevToolsMessage(const blink::WebString&);
     56   virtual void saveDevToolsAgentState(const blink::WebString&);
     57 
     58   void EnsureWorkerContextTerminates();
     59 
     60   void set_devtools_agent(SharedWorkerDevToolsAgent* devtools_agent) {
     61     devtools_agent_ = devtools_agent;
     62   }
     63 
     64  private:
     65   bool Send(IPC::Message* message);
     66 
     67   int route_id_;
     68   int appcache_host_id_;
     69   WebSharedWorkerStub* stub_;
     70   base::WeakPtrFactory<WebSharedWorkerClientProxy> weak_factory_;
     71   SharedWorkerDevToolsAgent* devtools_agent_;
     72 
     73   DISALLOW_COPY_AND_ASSIGN(WebSharedWorkerClientProxy);
     74 };
     75 
     76 }  // namespace content
     77 
     78 #endif  // CONTENT_WORKER_WEBWORKERCLIENT_PROXY_H_
     79