123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* 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_client_h__
- #define mozilla_dom_quota_client_h__
- #include "mozilla/dom/quota/QuotaCommon.h"
- #include "mozilla/dom/ipc/IdType.h"
- #include "PersistenceType.h"
- class nsIRunnable;
- #define IDB_DIRECTORY_NAME "idb"
- #define ASMJSCACHE_DIRECTORY_NAME "asmjs"
- #define DOMCACHE_DIRECTORY_NAME "cache"
- BEGIN_QUOTA_NAMESPACE
- class QuotaManager;
- class UsageInfo;
- // An abstract interface for quota manager clients.
- // Each storage API must provide an implementation of this interface in order
- // to participate in centralized quota and storage handling.
- class Client
- {
- public:
- typedef mozilla::Atomic<bool> AtomicBool;
- NS_IMETHOD_(MozExternalRefCountType)
- AddRef() = 0;
- NS_IMETHOD_(MozExternalRefCountType)
- Release() = 0;
- enum Type {
- IDB = 0,
- //LS,
- //APPCACHE,
- ASMJS,
- DOMCACHE,
- TYPE_MAX
- };
- virtual Type
- GetType() = 0;
- static nsresult
- TypeToText(Type aType, nsAString& aText)
- {
- switch (aType) {
- case IDB:
- aText.AssignLiteral(IDB_DIRECTORY_NAME);
- break;
- case ASMJS:
- aText.AssignLiteral(ASMJSCACHE_DIRECTORY_NAME);
- break;
- case DOMCACHE:
- aText.AssignLiteral(DOMCACHE_DIRECTORY_NAME);
- break;
- case TYPE_MAX:
- default:
- NS_NOTREACHED("Bad id value!");
- return NS_ERROR_UNEXPECTED;
- }
- return NS_OK;
- }
- static nsresult
- TypeFromText(const nsAString& aText, Type& aType)
- {
- if (aText.EqualsLiteral(IDB_DIRECTORY_NAME)) {
- aType = IDB;
- }
- else if (aText.EqualsLiteral(ASMJSCACHE_DIRECTORY_NAME)) {
- aType = ASMJS;
- }
- else if (aText.EqualsLiteral(DOMCACHE_DIRECTORY_NAME)) {
- aType = DOMCACHE;
- }
- else {
- return NS_ERROR_FAILURE;
- }
- return NS_OK;
- }
- // Methods which are called on the IO thred.
- virtual nsresult
- InitOrigin(PersistenceType aPersistenceType,
- const nsACString& aGroup,
- const nsACString& aOrigin,
- const AtomicBool& aCanceled,
- UsageInfo* aUsageInfo) = 0;
- virtual nsresult
- GetUsageForOrigin(PersistenceType aPersistenceType,
- const nsACString& aGroup,
- const nsACString& aOrigin,
- const AtomicBool& aCanceled,
- UsageInfo* aUsageInfo) = 0;
- virtual void
- OnOriginClearCompleted(PersistenceType aPersistenceType,
- const nsACString& aOrigin) = 0;
- virtual void
- ReleaseIOThreadObjects() = 0;
- // Methods which are called on the background thred.
- virtual void
- AbortOperations(const nsACString& aOrigin) = 0;
- virtual void
- AbortOperationsForProcess(ContentParentId aContentParentId) = 0;
- virtual void
- StartIdleMaintenance() = 0;
- virtual void
- StopIdleMaintenance() = 0;
- virtual void
- ShutdownWorkThreads() = 0;
- // Methods which are called on the main thread.
- virtual void
- DidInitialize(QuotaManager* aQuotaManager)
- { }
- virtual void
- WillShutdown()
- { }
- protected:
- virtual ~Client()
- { }
- };
- END_QUOTA_NAMESPACE
- #endif // mozilla_dom_quota_client_h__
|