Index: content/public/browser/service_worker_context.h |
diff --git a/content/browser/service_worker/service_worker_context.h b/content/public/browser/service_worker_context.h |
similarity index 13% |
rename from content/browser/service_worker/service_worker_context.h |
rename to content/public/browser/service_worker_context.h |
index d9f51f3165c14c89f134d2d74807bceb7a8a2b69..e9d860bcedfb8394d394e43478287adee6856191 100644 |
--- a/content/browser/service_worker/service_worker_context.h |
+++ b/content/public/browser/service_worker_context.h |
@@ -2,27 +2,61 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_CONTEXT_H_ |
-#define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_CONTEXT_H_ |
+#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-BrowserContext ServiceWorker data. |
+// Represents the per-StoragePartition ServiceWorker data. Must be used from |
+// the UI thread. |
class ServiceWorkerContext { |
public: |
- // TODO(michaeln): This class is a place holder for content/public api |
- // which will come later. Promote this class when we get there. |
+ // 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 in |source_process_id|, 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, |
+ int source_process_id, |
+ const ResultCallback& callback) = 0; |
+ |
+ // Equivalent to calling navigator.serviceWorker.unregister(pattern) from a |
+ // renderer in |source_process_id|, 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, |
+ int source_process_id, |
+ const ResultCallback& callback) = 0; |
+ |
+ // TODO(jyasskin): Provide a way to SendMessage to a Scope. |
protected: |
ServiceWorkerContext() {} |
virtual ~ServiceWorkerContext() {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(ServiceWorkerContext); |
}; |
} // namespace content |
-#endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_CONTEXT_H_ |
+#endif // CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_ |