diff -r 000000000000 -r 6474c204b198 dom/quota/PersistenceType.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/quota/PersistenceType.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,99 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=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_persistencetype_h__ +#define mozilla_dom_quota_persistencetype_h__ + +#include "mozilla/dom/quota/QuotaCommon.h" + +#include "mozilla/dom/StorageTypeBinding.h" + +BEGIN_QUOTA_NAMESPACE + +enum PersistenceType +{ + PERSISTENCE_TYPE_PERSISTENT = 0, + PERSISTENCE_TYPE_TEMPORARY, + + // Only needed for IPC serialization helper, should never be used in code. + PERSISTENCE_TYPE_INVALID +}; + +inline void +PersistenceTypeToText(PersistenceType aPersistenceType, nsACString& aText) +{ + switch (aPersistenceType) { + case PERSISTENCE_TYPE_PERSISTENT: + aText.AssignLiteral("persistent"); + return; + case PERSISTENCE_TYPE_TEMPORARY: + aText.AssignLiteral("temporary"); + return; + + case PERSISTENCE_TYPE_INVALID: + default: + MOZ_CRASH("Bad persistence type value!"); + } + + MOZ_ASSUME_UNREACHABLE("Should never get here!"); +} + +inline PersistenceType +PersistenceTypeFromText(const nsACString& aText) +{ + if (aText.EqualsLiteral("persistent")) { + return PERSISTENCE_TYPE_PERSISTENT; + } + + if (aText.EqualsLiteral("temporary")) { + return PERSISTENCE_TYPE_TEMPORARY; + } + + MOZ_ASSUME_UNREACHABLE("Should never get here!"); +} + +inline nsresult +NullablePersistenceTypeFromText(const nsACString& aText, + Nullable *aPersistenceType) +{ + if (aText.IsVoid()) { + *aPersistenceType = Nullable(); + return NS_OK; + } + + if (aText.EqualsLiteral("persistent")) { + *aPersistenceType = Nullable(PERSISTENCE_TYPE_PERSISTENT); + return NS_OK; + } + + if (aText.EqualsLiteral("temporary")) { + *aPersistenceType = Nullable(PERSISTENCE_TYPE_TEMPORARY); + return NS_OK; + } + + return NS_ERROR_UNEXPECTED; +} + +inline mozilla::dom::StorageType +PersistenceTypeToStorage(PersistenceType aPersistenceType) +{ + return mozilla::dom::StorageType(static_cast(aPersistenceType)); +} + +inline PersistenceType +PersistenceTypeFromStorage(const Optional& aStorage, + PersistenceType aDefaultPersistenceType) +{ + if (aStorage.WasPassed()) { + return PersistenceType(static_cast(aStorage.Value())); + } + + return aDefaultPersistenceType; +} + +END_QUOTA_NAMESPACE + +#endif // mozilla_dom_quota_persistencetype_h__