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