summaryrefslogtreecommitdiffstats
path: root/dom/storage/SessionStorageService.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/storage/SessionStorageService.h')
-rw-r--r--dom/storage/SessionStorageService.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/dom/storage/SessionStorageService.h b/dom/storage/SessionStorageService.h
new file mode 100644
index 0000000000..70b780a0ee
--- /dev/null
+++ b/dom/storage/SessionStorageService.h
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef DOM_STORAGE_SESSIONSTORAGESERVICE_H_
+#define DOM_STORAGE_SESSIONSTORAGESERVICE_H_
+
+#include "nsISessionStorageService.h"
+#include "mozilla/Result.h"
+#include "mozilla/dom/FlippedOnce.h"
+#include "mozilla/dom/PBackgroundSessionStorageServiceChild.h"
+
+namespace mozilla {
+
+struct CreateIfNonExistent;
+
+namespace dom {
+
+class SessionStorageService final
+ : public nsISessionStorageService,
+ public PBackgroundSessionStorageServiceChild {
+ public:
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSISESSIONSTORAGESERVICE
+
+ SessionStorageService();
+
+ // Singleton Boilerplate
+ static mozilla::Result<RefPtr<SessionStorageService>, nsresult> Acquire(
+ const CreateIfNonExistent&);
+
+ // Can return null if the service hasn't be created yet or after
+ // XPCOMShutdown.
+ static RefPtr<SessionStorageService> Acquire();
+
+ private:
+ ~SessionStorageService();
+
+ mozilla::Result<Ok, nsresult> Init();
+
+ void Shutdown();
+
+ // IPDL methods are only called by IPDL.
+ void ActorDestroy(ActorDestroyReason aWhy) override;
+
+ FlippedOnce<false> mInitialized;
+ FlippedOnce<false> mActorDestroyed;
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif /* DOM_STORAGE_SESSIONSTORAGESERVICE_H_ */