1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef _mozilla_dom_ServiceWorkerUtils_h
7 #define _mozilla_dom_ServiceWorkerUtils_h
8 
9 #include "mozilla/MozPromise.h"
10 #include "mozilla/dom/IPCNavigationPreloadState.h"
11 #include "mozilla/dom/ServiceWorkerRegistrationDescriptor.h"
12 #include "nsTArray.h"
13 
14 class nsIURI;
15 
16 namespace mozilla {
17 
18 class CopyableErrorResult;
19 class ErrorResult;
20 
21 namespace dom {
22 
23 class ClientInfo;
24 class ServiceWorkerRegistrationData;
25 class ServiceWorkerRegistrationDescriptor;
26 struct NavigationPreloadState;
27 
28 using ServiceWorkerRegistrationPromise =
29     MozPromise<ServiceWorkerRegistrationDescriptor, CopyableErrorResult, false>;
30 
31 using ServiceWorkerRegistrationListPromise =
32     MozPromise<CopyableTArray<ServiceWorkerRegistrationDescriptor>,
33                CopyableErrorResult, false>;
34 
35 using NavigationPreloadStatePromise =
36     MozPromise<IPCNavigationPreloadState, CopyableErrorResult, false>;
37 
38 using ServiceWorkerRegistrationCallback =
39     std::function<void(const ServiceWorkerRegistrationDescriptor&)>;
40 
41 using ServiceWorkerRegistrationListCallback =
42     std::function<void(const nsTArray<ServiceWorkerRegistrationDescriptor>&)>;
43 
44 using ServiceWorkerBoolCallback = std::function<void(bool)>;
45 
46 using ServiceWorkerFailureCallback = std::function<void(ErrorResult&&)>;
47 
48 using NavigationPreloadGetStateCallback =
49     std::function<void(NavigationPreloadState&&)>;
50 
51 bool ServiceWorkerRegistrationDataIsValid(
52     const ServiceWorkerRegistrationData& aData);
53 
54 void ServiceWorkerScopeAndScriptAreValid(const ClientInfo& aClientInfo,
55                                          nsIURI* aScopeURI, nsIURI* aScriptURI,
56                                          ErrorResult& aRv);
57 
58 }  // namespace dom
59 }  // namespace mozilla
60 
61 #endif  // _mozilla_dom_ServiceWorkerUtils_h
62