diff options
Diffstat (limited to 'dom/quota/QuotaManagerService.h')
-rw-r--r-- | dom/quota/QuotaManagerService.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/dom/quota/QuotaManagerService.h b/dom/quota/QuotaManagerService.h new file mode 100644 index 0000000000..f8f8c01c31 --- /dev/null +++ b/dom/quota/QuotaManagerService.h @@ -0,0 +1,102 @@ +/* -*- 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 <cstdint> +#include "ErrorList.h" +#include "mozilla/AlreadyAddRefed.h" +#include "mozilla/HalBatteryInformation.h" +#include "mozilla/dom/ipc/IdType.h" +#include "nsIObserver.h" +#include "nsIQuotaManagerService.h" +#include "nsISupports.h" + +#define QUOTAMANAGER_SERVICE_CONTRACTID \ + "@mozilla.org/dom/quota-manager-service;1" + +class nsIPrincipal; +class nsIQuotaRequest; +class nsIQuotaUsageCallback; +class nsIQuotaUsageRequest; + +namespace mozilla { +namespace ipc { + +class PBackgroundChild; + +} // namespace ipc + +namespace hal { +class BatteryInformation; +} + +namespace dom::quota { + +class QuotaChild; +class QuotaManager; + +class QuotaManagerService final : public nsIQuotaManagerService, + public nsIObserver, + public hal::BatteryObserver { + using PBackgroundChild = mozilla::ipc::PBackgroundChild; + + class BackgroundCreateCallback; + class PendingRequestInfo; + class UsageRequestInfo; + class RequestInfo; + class IdleMaintenanceInfo; + + QuotaChild* mBackgroundActor; + + bool mBackgroundActorFailed; + bool mIdleObserverRegistered; + + public: + // Returns a non-owning reference. + static QuotaManagerService* GetOrCreate(); + + // Returns a non-owning reference. + static QuotaManagerService* Get(); + + // No one should call this but the factory. + static already_AddRefed<QuotaManagerService> FactoryCreate(); + + void ClearBackgroundActor(); + + // 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 EnsureBackgroundActor(); + + nsresult InitiateRequest(PendingRequestInfo& aInfo); + + void PerformIdleMaintenance(); + + void RemoveIdleObserver(); + + NS_DECL_ISUPPORTS + NS_DECL_NSIQUOTAMANAGERSERVICE + NS_DECL_NSIOBSERVER + + // BatteryObserver override + void Notify(const hal::BatteryInformation& aBatteryInfo) override; +}; + +} // namespace dom::quota +} // namespace mozilla + +#endif /* mozilla_dom_quota_QuotaManagerService_h */ |