diff options
Diffstat (limited to 'chromium/third_party/WebKit/public/web/WebServiceWorkerContextClient.h')
-rw-r--r-- | chromium/third_party/WebKit/public/web/WebServiceWorkerContextClient.h | 77 |
1 files changed, 70 insertions, 7 deletions
diff --git a/chromium/third_party/WebKit/public/web/WebServiceWorkerContextClient.h b/chromium/third_party/WebKit/public/web/WebServiceWorkerContextClient.h index 22e104a7110..0a787469810 100644 --- a/chromium/third_party/WebKit/public/web/WebServiceWorkerContextClient.h +++ b/chromium/third_party/WebKit/public/web/WebServiceWorkerContextClient.h @@ -32,30 +32,54 @@ #define WebServiceWorkerContextClient_h #include "WebWorkerPermissionClientProxy.h" +#include "public/platform/WebMessagePortChannel.h" +#include "public/platform/WebServiceWorkerClientsInfo.h" +#include "public/platform/WebServiceWorkerEventResult.h" +#include "public/platform/WebURL.h" namespace blink { -class WebString; +class WebDataSource; class WebServiceWorkerContextProxy; +class WebServiceWorkerNetworkProvider; +class WebServiceWorkerResponse; +class WebString; -// This interface is implemented by the client. It is suppoed to be created -// on the main thread and then passed on to the worker thread to be owned +// This interface is implemented by the client. It is supposed to be created +// on the main thread and then passed on to the worker thread. // by a newly created WorkerGlobalScope. All methods of this class, except -// for workerContextFailedToStart(), are called on the worker thread. +// for createServiceWorkerNetworkProvider() and workerContextFailedToStart(), +// are called on the worker thread. +// FIXME: Split this into EmbeddedWorkerContextClient and +// ServiceWorkerScriptContextClient when we decide to use EmbeddedWorker +// framework for other implementation (like SharedWorker). class WebServiceWorkerContextClient { public: virtual ~WebServiceWorkerContextClient() { } + // ServiceWorker specific method. Called when script accesses the + // the |scope| attribute of the ServiceWorkerGlobalScope. Immutable per spec. + virtual WebURL scope() const { return WebURL(); } + + // If the worker was started with WebEmbeddedWorkerStartData indicating to pause + // after download, this method is called after the main script resource has been + // downloaded. The scope will not be created and the script will not be loaded until + // WebEmbeddedWorker.resumeAfterDownload() is invoked. + virtual void didPauseAfterDownload() { } + // A new WorkerGlobalScope is created and started to run on the // worker thread. // This also gives back a proxy to the client to talk to the // newly created WorkerGlobalScope. The proxy is held by WorkerGlobalScope // and should not be held by the caller. No proxy methods should be called - // after workerContextDestroyed() is called. + // after willDestroyWorkerContext() is called. virtual void workerContextStarted(WebServiceWorkerContextProxy*) { } - // WorkerGlobalScope is destroyed. The client should clear the - // WebServiceWorkerGlobalScopeProxy when this is called. + // WorkerGlobalScope is about to be destroyed. The client should clear + // the WebServiceWorkerGlobalScopeProxy when this is called. + virtual void willDestroyWorkerContext() { } + + // WorkerGlobalScope is destroyed and the worker is ready to be terminated. virtual void workerContextDestroyed() { } // Starting worker context is failed. This could happen when loading @@ -63,8 +87,47 @@ public: // This is called on the main thread. virtual void workerContextFailedToStart() { } + // Called when the WorkerGlobalScope had an error or an exception. + virtual void reportException(const WebString& errorMessage, int lineNumber, int columnNumber, const WebString& sourceURL) { } + + // Called when the console message is reported. + virtual void reportConsoleMessage(int source, int level, const WebString& message, int lineNumber, const WebString& sourceURL) { } + + // Inspector related messages. virtual void dispatchDevToolsMessage(const WebString&) { } virtual void saveDevToolsAgentState(const WebString&) { } + + // ServiceWorker specific method. + virtual void didHandleActivateEvent(int eventID, blink::WebServiceWorkerEventResult result) { } + + // ServiceWorker specific method. Called after InstallEvent (dispatched + // via WebServiceWorkerContextProxy) is handled by the ServiceWorker's + // script context. + virtual void didHandleInstallEvent(int installEventID, blink::WebServiceWorkerEventResult result) { } + + // ServiceWorker specific methods. Called after FetchEvent is handled by the + // ServiceWorker's script context. When no response is provided, the browser + // should fallback to native fetch. + virtual void didHandleFetchEvent(int fetchEventID) { } + virtual void didHandleFetchEvent(int fetchEventID, const WebServiceWorkerResponse& response) { } + + // ServiceWorker specific method. Called after SyncEvent (dispatched via + // WebServiceWorkerContextProxy) is handled by the ServiceWorker's script + // context. + virtual void didHandleSyncEvent(int syncEventID) { } + + // Ownership of the returned object is transferred to the caller. + virtual WebServiceWorkerNetworkProvider* createServiceWorkerNetworkProvider(blink::WebDataSource*) { return 0; } + + // Ownership of the passed callbacks is transferred to the callee, callee + // should delete the callbacks after calling either onSuccess or onError. + // WebServiceWorkerClientsInfo and WebServiceWorkerError ownerships are + // passed to the WebServiceWorkerClientsCallbacks implementation. + virtual void getClients(WebServiceWorkerClientsCallbacks*) { BLINK_ASSERT_NOT_REACHED(); } + + // Callee receives ownership of the passed vector. + // FIXME: Blob refs should be passed to maintain ref counts. crbug.com/351753 + virtual void postMessageToClient(int clientID, const WebString&, WebMessagePortChannelArray*) { BLINK_ASSERT_NOT_REACHED(); } }; } // namespace blink |