michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim: set ts=2 et sw=2 tw=80: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this file, michael@0: * You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_dom_quota_persistencetype_h__ michael@0: #define mozilla_dom_quota_persistencetype_h__ michael@0: michael@0: #include "mozilla/dom/quota/QuotaCommon.h" michael@0: michael@0: #include "mozilla/dom/StorageTypeBinding.h" michael@0: michael@0: BEGIN_QUOTA_NAMESPACE michael@0: michael@0: enum PersistenceType michael@0: { michael@0: PERSISTENCE_TYPE_PERSISTENT = 0, michael@0: PERSISTENCE_TYPE_TEMPORARY, michael@0: michael@0: // Only needed for IPC serialization helper, should never be used in code. michael@0: PERSISTENCE_TYPE_INVALID michael@0: }; michael@0: michael@0: inline void michael@0: PersistenceTypeToText(PersistenceType aPersistenceType, nsACString& aText) michael@0: { michael@0: switch (aPersistenceType) { michael@0: case PERSISTENCE_TYPE_PERSISTENT: michael@0: aText.AssignLiteral("persistent"); michael@0: return; michael@0: case PERSISTENCE_TYPE_TEMPORARY: michael@0: aText.AssignLiteral("temporary"); michael@0: return; michael@0: michael@0: case PERSISTENCE_TYPE_INVALID: michael@0: default: michael@0: MOZ_CRASH("Bad persistence type value!"); michael@0: } michael@0: michael@0: MOZ_ASSUME_UNREACHABLE("Should never get here!"); michael@0: } michael@0: michael@0: inline PersistenceType michael@0: PersistenceTypeFromText(const nsACString& aText) michael@0: { michael@0: if (aText.EqualsLiteral("persistent")) { michael@0: return PERSISTENCE_TYPE_PERSISTENT; michael@0: } michael@0: michael@0: if (aText.EqualsLiteral("temporary")) { michael@0: return PERSISTENCE_TYPE_TEMPORARY; michael@0: } michael@0: michael@0: MOZ_ASSUME_UNREACHABLE("Should never get here!"); michael@0: } michael@0: michael@0: inline nsresult michael@0: NullablePersistenceTypeFromText(const nsACString& aText, michael@0: Nullable *aPersistenceType) michael@0: { michael@0: if (aText.IsVoid()) { michael@0: *aPersistenceType = Nullable(); michael@0: return NS_OK; michael@0: } michael@0: michael@0: if (aText.EqualsLiteral("persistent")) { michael@0: *aPersistenceType = Nullable(PERSISTENCE_TYPE_PERSISTENT); michael@0: return NS_OK; michael@0: } michael@0: michael@0: if (aText.EqualsLiteral("temporary")) { michael@0: *aPersistenceType = Nullable(PERSISTENCE_TYPE_TEMPORARY); michael@0: return NS_OK; michael@0: } michael@0: michael@0: return NS_ERROR_UNEXPECTED; michael@0: } michael@0: michael@0: inline mozilla::dom::StorageType michael@0: PersistenceTypeToStorage(PersistenceType aPersistenceType) michael@0: { michael@0: return mozilla::dom::StorageType(static_cast(aPersistenceType)); michael@0: } michael@0: michael@0: inline PersistenceType michael@0: PersistenceTypeFromStorage(const Optional& aStorage, michael@0: PersistenceType aDefaultPersistenceType) michael@0: { michael@0: if (aStorage.WasPassed()) { michael@0: return PersistenceType(static_cast(aStorage.Value())); michael@0: } michael@0: michael@0: return aDefaultPersistenceType; michael@0: } michael@0: michael@0: END_QUOTA_NAMESPACE michael@0: michael@0: #endif // mozilla_dom_quota_persistencetype_h__