summaryrefslogtreecommitdiffstats
path: root/dom/quota/QuotaManagerService.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/quota/QuotaManagerService.h')
-rw-r--r--dom/quota/QuotaManagerService.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/dom/quota/QuotaManagerService.h b/dom/quota/QuotaManagerService.h
new file mode 100644
index 000000000..bbf249e69
--- /dev/null
+++ b/dom/quota/QuotaManagerService.h
@@ -0,0 +1,113 @@
+/* -*- 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 mozilla_dom_quota_QuotaManagerService_h
+#define mozilla_dom_quota_QuotaManagerService_h
+
+#include "mozilla/dom/ipc/IdType.h"
+#include "nsAutoPtr.h"
+#include "nsIObserver.h"
+#include "nsIQuotaManagerService.h"
+
+#define QUOTAMANAGER_SERVICE_CONTRACTID \
+ "@mozilla.org/dom/quota-manager-service;1"
+
+namespace mozilla {
+namespace ipc {
+
+class PBackgroundChild;
+
+} // namespace ipc
+
+namespace dom {
+namespace quota {
+
+class QuotaChild;
+class QuotaManager;
+
+class QuotaManagerService final
+ : public nsIQuotaManagerService
+ , public nsIObserver
+{
+ typedef mozilla::ipc::PBackgroundChild PBackgroundChild;
+
+ class BackgroundCreateCallback;
+ class PendingRequestInfo;
+ class UsageRequestInfo;
+ class RequestInfo;
+ class IdleMaintenanceInfo;
+
+ nsCOMPtr<nsIEventTarget> mBackgroundThread;
+
+ nsTArray<nsAutoPtr<PendingRequestInfo>> mPendingRequests;
+
+ QuotaChild* mBackgroundActor;
+
+ bool mBackgroundActorFailed;
+ bool mIdleObserverRegistered;
+
+public:
+ // Returns a non-owning reference.
+ static QuotaManagerService*
+ GetOrCreate();
+
+ // Returns a non-owning reference.
+ static QuotaManagerService*
+ Get();
+
+ // Returns an owning reference! No one should call this but the factory.
+ static QuotaManagerService*
+ FactoryCreate();
+
+ void
+ ClearBackgroundActor();
+
+ void
+ NoteLiveManager(QuotaManager* aManager);
+
+ void
+ NoteShuttingDownManager();
+
+ // Called when a process is being shot down. Aborts any running operations
+ // for the given process.
+ void
+ AbortOperationsForProcess(ContentParentId aContentParentId);
+
+private:
+ QuotaManagerService();
+ ~QuotaManagerService();
+
+ nsresult
+ Init();
+
+ void
+ Destroy();
+
+ nsresult
+ InitiateRequest(nsAutoPtr<PendingRequestInfo>& aInfo);
+
+ nsresult
+ BackgroundActorCreated(PBackgroundChild* aBackgroundActor);
+
+ void
+ BackgroundActorFailed();
+
+ void
+ PerformIdleMaintenance();
+
+ void
+ RemoveIdleObserver();
+
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIQUOTAMANAGERSERVICE
+ NS_DECL_NSIOBSERVER
+};
+
+} // namespace quota
+} // namespace dom
+} // namespace mozilla
+
+#endif /* mozilla_dom_quota_QuotaManagerService_h */