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/platform/WebFileSystem.h"
     12 #include "third_party/WebKit/public/platform/WebFileSystemType.h"
     13 #include "third_party/WebKit/public/web/WebSharedWorkerClient.h"
     14 #include "third_party/WebKit/public/web/WebStorageQuotaCallbacks.h"
     15 #include "third_party/WebKit/public/web/WebStorageQuotaType.h"
     16 
     17 namespace WebKit {
     18 class WebApplicationCacheHost;
     19 class WebApplicationCacheHostClient;
     20 class WebFrame;
     21 }
     22 
     23 namespace content {
     24 
     25 class SharedWorkerDevToolsAgent;
     26 class WebSharedWorkerStub;
     27 
     28 // This class receives IPCs from the renderer and calls the WebCore::Worker
     29 // implementation (after the data types have been converted by glue code).  It
     30 // is also called by the worker code and converts these function calls into
     31 // IPCs that are sent to the renderer, where they're converted back to function
     32 // calls by WebWorkerProxy.
     33 class WebSharedWorkerClientProxy : public WebKit::WebSharedWorkerClient {
     34  public:
     35   WebSharedWorkerClientProxy(int route_id, WebSharedWorkerStub* stub);
     36   virtual ~WebSharedWorkerClientProxy();
     37 
     38   // WebSharedWorkerClient implementation.
     39   virtual void postMessageToWorkerObject(
     40       const WebKit::WebString& message,
     41       const WebKit::WebMessagePortChannelArray& channel);
     42   virtual void postExceptionToWorkerObject(
     43       const WebKit::WebString& error_message,
     44       int line_number,
     45       const WebKit::WebString& source_url);
     46   // TODO(caseq): The overload before is obsolete and is preserved for
     47   // WebKit/chromium compatibility only (pure virtual is base class).
     48   // Should be removed once WebKit part is updated.
     49   virtual void postConsoleMessageToWorkerObject(
     50       int destination,
     51       int source,
     52       int type,
     53       int level,
     54       const WebKit::WebString& message,
     55       int line_number,
     56       const WebKit::WebString& source_url) {
     57   }
     58   virtual void postConsoleMessageToWorkerObject(
     59       int source,
     60       int type,
     61       int level,
     62       const WebKit::WebString& message,
     63       int line_number,
     64       const WebKit::WebString& source_url);
     65   virtual void confirmMessageFromWorkerObject(bool has_pending_activity);
     66   virtual void reportPendingActivity(bool has_pending_activity);
     67   virtual void workerContextClosed();
     68   virtual void workerContextDestroyed();
     69 
     70   virtual WebKit::WebNotificationPresenter* notificationPresenter();
     71 
     72   virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost(
     73       WebKit::WebApplicationCacheHostClient* client);
     74 
     75   virtual bool allowDatabase(WebKit::WebFrame* frame,
     76                              const WebKit::WebString& name,
     77                              const WebKit::WebString& display_name,
     78                              unsigned long estimated_size);
     79   virtual bool allowFileSystem();
     80   virtual void openFileSystem(
     81                               WebKit::WebFileSystemType type,
     82                               long long size,
     83                               bool create,
     84                               WebKit::WebFileSystemCallbacks* callbacks);
     85   virtual bool allowIndexedDB(const WebKit::WebString&);
     86   virtual void queryUsageAndQuota(WebKit::WebStorageQuotaType,
     87                                   WebKit::WebStorageQuotaCallbacks*);
     88   virtual void dispatchDevToolsMessage(const WebKit::WebString&);
     89   virtual void saveDevToolsAgentState(const WebKit::WebString&);
     90 
     91   void EnsureWorkerContextTerminates();
     92 
     93   void set_devtools_agent(SharedWorkerDevToolsAgent* devtools_agent) {
     94     devtools_agent_ = devtools_agent;
     95   }
     96 
     97  private:
     98   bool Send(IPC::Message* message);
     99 
    100   int route_id_;
    101   int appcache_host_id_;
    102   WebSharedWorkerStub* stub_;
    103   base::WeakPtrFactory<WebSharedWorkerClientProxy> weak_factory_;
    104   SharedWorkerDevToolsAgent* devtools_agent_;
    105 
    106   DISALLOW_COPY_AND_ASSIGN(WebSharedWorkerClientProxy);
    107 };
    108 
    109 }  // namespace content
    110 
    111 #endif  // CONTENT_WORKER_WEBWORKERCLIENT_PROXY_H_
    112