tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

InitializationTypes.h (3431B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef DOM_QUOTA_INITIALIZATIONTYPES_H_
      8 #define DOM_QUOTA_INITIALIZATIONTYPES_H_
      9 
     10 #include "mozilla/TypedEnumBits.h"
     11 #include "mozilla/dom/quota/FirstInitializationAttempts.h"
     12 #include "nsLiteralString.h"
     13 #include "nsStringFwd.h"
     14 #include "nsTHashMap.h"
     15 
     16 namespace mozilla {
     17 struct CreateIfNonExistent;
     18 }
     19 
     20 namespace mozilla::dom::quota {
     21 
     22 enum class Initialization {
     23  None = 0,
     24  Storage = 1 << 0,
     25  TemporaryStorage = 1 << 1,
     26  DefaultRepository = 1 << 2,
     27  TemporaryRepository = 1 << 3,
     28  UpgradeStorageFrom0_0To1_0 = 1 << 4,
     29  UpgradeStorageFrom1_0To2_0 = 1 << 5,
     30  UpgradeStorageFrom2_0To2_1 = 1 << 6,
     31  UpgradeStorageFrom2_1To2_2 = 1 << 7,
     32  UpgradeStorageFrom2_2To2_3 = 1 << 8,
     33  UpgradeFromIndexedDBDirectory = 1 << 9,
     34  UpgradeFromPersistentStorageDirectory = 1 << 10,
     35  PersistentRepository = 1 << 11,
     36 };
     37 
     38 enum class GroupInitialization {
     39  None = 0,
     40  PersistentGroup = 1 << 0,
     41  TemporaryGroup = 1 << 1,
     42 };
     43 
     44 enum class OriginInitialization {
     45  None = 0,
     46  PersistentOrigin = 1 << 0,
     47  TemporaryOrigin = 1 << 1,
     48 };
     49 
     50 MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(Initialization)
     51 MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(GroupInitialization)
     52 MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(OriginInitialization)
     53 
     54 class StringGenerator final {
     55 public:
     56  // TODO: Use constexpr here once bug 1594094 is addressed.
     57  static nsLiteralCString GetString(Initialization aInitialization);
     58 
     59  // TODO: Use constexpr here once bug 1594094 is addressed.
     60  static nsLiteralCString GetString(GroupInitialization aGroupInitialization);
     61 
     62  // TODO: Use constexpr here once bug 1594094 is addressed.
     63  static nsLiteralCString GetString(OriginInitialization aOriginInitialization);
     64 };
     65 
     66 using OriginInitializationInfo =
     67    FirstInitializationAttempts<OriginInitialization, StringGenerator>;
     68 
     69 using GroupInitializationInfo =
     70    FirstInitializationAttempts<GroupInitialization, StringGenerator>;
     71 
     72 class InitializationInfo
     73    : public FirstInitializationAttempts<Initialization, StringGenerator> {
     74  nsTHashMap<nsCStringHashKey, GroupInitializationInfo>
     75      mGroupInitializationInfos;
     76  nsTHashMap<nsCStringHashKey, OriginInitializationInfo>
     77      mOriginInitializationInfos;
     78 
     79 public:
     80  GroupInitializationInfo& MutableGroupInitializationInfoRef(
     81      const nsACString& aGroup) {
     82    return *mGroupInitializationInfos.Lookup(aGroup);
     83  }
     84 
     85  GroupInitializationInfo& MutableGroupInitializationInfoRef(
     86      const nsACString& aGroup, const CreateIfNonExistent&) {
     87    return mGroupInitializationInfos.LookupOrInsert(aGroup);
     88  }
     89 
     90  void ResetGroupInitializationInfos() { mGroupInitializationInfos.Clear(); }
     91 
     92  OriginInitializationInfo& MutableOriginInitializationInfoRef(
     93      const nsACString& aOrigin) {
     94    return *mOriginInitializationInfos.Lookup(aOrigin);
     95  }
     96 
     97  OriginInitializationInfo& MutableOriginInitializationInfoRef(
     98      const nsACString& aOrigin, const CreateIfNonExistent&) {
     99    return mOriginInitializationInfos.LookupOrInsert(aOrigin);
    100  }
    101 
    102  void ResetOriginInitializationInfos() { mOriginInitializationInfos.Clear(); }
    103 };
    104 
    105 }  // namespace mozilla::dom::quota
    106 
    107 #endif  // DOM_QUOTA_INITIALIZATIONTYPES_H_