| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_ |
| #define CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_ |
| |
| #include "base/basictypes.h" |
| #include "base/callback_forward.h" |
| #include "url/gurl.h" |
| |
| namespace content { |
| |
| // Represents the per-StoragePartition ServiceWorker data. Must be used from |
| // the UI thread. |
| class ServiceWorkerContext { |
| public: |
| // https://rawgithub.com/slightlyoff/ServiceWorker/master/spec/service_worker/index.html#url-scope: |
| // roughly, must be of the form "<origin>/<path>/*". |
| typedef GURL Scope; |
| |
| typedef base::Callback<void(bool success)> ResultCallback; |
| |
| // Equivalent to calling navigator.serviceWorker.register(script_url, {scope: |
| // pattern}) from a renderer, except that |pattern| is an absolute URL instead |
| // of relative to some current origin. |callback| is passed true when the JS |
| // promise is fulfilled or false when the JS promise is rejected. |
| // |
| // The registration can fail if: |
| // * |script_url| is on a different origin from |pattern| |
| // * Fetching |script_url| fails. |
| // * |script_url| fails to parse or its top-level execution fails. |
| // TODO: The error message for this needs to be available to developers. |
| // * Something unexpected goes wrong, like a renderer crash or a full disk. |
| virtual void RegisterServiceWorker(const Scope& pattern, |
| const GURL& script_url, |
| const ResultCallback& callback) = 0; |
| |
| // Equivalent to calling navigator.serviceWorker.unregister(pattern) from a |
| // renderer, except that |pattern| is an absolute URL instead of relative to |
| // some current origin. |callback| is passed true when the JS promise is |
| // fulfilled or false when the JS promise is rejected. |
| // |
| // Unregistration can fail if: |
| // * No Service Worker was registered for |pattern|. |
| // * Something unexpected goes wrong, like a renderer crash. |
| virtual void UnregisterServiceWorker(const Scope& pattern, |
| const ResultCallback& callback) = 0; |
| |
| // TODO(jyasskin): Provide a way to SendMessage to a Scope. |
| |
| // Synchronously releases all of the RenderProcessHosts that have Service |
| // Workers running inside them, and prevents any new Service Worker instances |
| // from starting up. |
| virtual void Terminate() = 0; |
| |
| protected: |
| ServiceWorkerContext() {} |
| virtual ~ServiceWorkerContext() {} |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_ |