1 // Copyright 2014 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.
5 #ifndef CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_
6 #define CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_
8 #include "base/basictypes.h"
9 #include "base/callback_forward.h"
10 #include "content/public/browser/service_worker_usage_info.h"
15 // Represents the per-StoragePartition ServiceWorker data. Must be used from
17 class ServiceWorkerContext
{
19 // https://rawgithub.com/slightlyoff/ServiceWorker/master/spec/service_worker/index.html#url-scope:
20 // roughly, must be of the form "<origin>/<path>/*".
23 typedef base::Callback
<void(bool success
)> ResultCallback
;
25 typedef base::Callback
<void(const std::vector
<ServiceWorkerUsageInfo
>&
26 usage_info
)> GetUsageInfoCallback
;
28 // Equivalent to calling navigator.serviceWorker.register(script_url, {scope:
29 // pattern}) from a renderer, except that |pattern| is an absolute URL instead
30 // of relative to some current origin. |callback| is passed true when the JS
31 // promise is fulfilled or false when the JS promise is rejected.
33 // The registration can fail if:
34 // * |script_url| is on a different origin from |pattern|
35 // * Fetching |script_url| fails.
36 // * |script_url| fails to parse or its top-level execution fails.
37 // TODO: The error message for this needs to be available to developers.
38 // * Something unexpected goes wrong, like a renderer crash or a full disk.
39 virtual void RegisterServiceWorker(const Scope
& pattern
,
40 const GURL
& script_url
,
41 const ResultCallback
& callback
) = 0;
43 // Equivalent to calling navigator.serviceWorker.unregister(pattern) from a
44 // renderer, except that |pattern| is an absolute URL instead of relative to
45 // some current origin. |callback| is passed true when the JS promise is
46 // fulfilled or false when the JS promise is rejected.
48 // Unregistration can fail if:
49 // * No Service Worker was registered for |pattern|.
50 // * Something unexpected goes wrong, like a renderer crash.
51 virtual void UnregisterServiceWorker(const Scope
& pattern
,
52 const ResultCallback
& callback
) = 0;
54 // TODO(jyasskin): Provide a way to SendMessage to a Scope.
56 // Synchronously releases all of the RenderProcessHosts that have Service
57 // Workers running inside them, and prevents any new Service Worker instances
59 virtual void Terminate() = 0;
61 // Methods used in response to browsing data and quota manager requests.
62 virtual void GetAllOriginsInfo(const GetUsageInfoCallback
& callback
) = 0;
63 virtual void DeleteForOrigin(const GURL
& origin_url
) = 0;
66 ServiceWorkerContext() {}
67 virtual ~ServiceWorkerContext() {}
70 } // namespace content
72 #endif // CONTENT_PUBLIC_BROWSER_SERVICE_WORKER_CONTEXT_H_