tor-browser

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

LocalStorage.h (2643B)


      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
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef mozilla_dom_LocalStorage_h
      8 #define mozilla_dom_LocalStorage_h
      9 
     10 #include "Storage.h"
     11 #include "nsWeakReference.h"
     12 
     13 namespace mozilla::dom {
     14 
     15 class LocalStorageCache;
     16 class LocalStorageManager;
     17 class StorageEvent;
     18 
     19 class LocalStorage final : public Storage, public nsSupportsWeakReference {
     20 public:
     21  NS_DECL_ISUPPORTS_INHERITED
     22  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(LocalStorage, Storage)
     23 
     24  StorageType Type() const override { return eLocalStorage; }
     25 
     26  LocalStorageManager* GetManager() const { return mManager; }
     27 
     28  LocalStorageCache const* GetCache() const { return mCache; }
     29 
     30  const nsString& DocumentURI() const { return mDocumentURI; }
     31 
     32  LocalStorage(nsPIDOMWindowInner* aWindow, LocalStorageManager* aManager,
     33               LocalStorageCache* aCache, const nsAString& aDocumentURI,
     34               nsIPrincipal* aPrincipal, nsIPrincipal* aStoragePrincipal,
     35               bool aIsPrivate);
     36 
     37  bool IsForkOf(const Storage* aOther) const override;
     38 
     39  // WebIDL
     40 
     41  int64_t GetOriginQuotaUsage() const override;
     42 
     43  uint32_t GetLength(nsIPrincipal& aSubjectPrincipal,
     44                     ErrorResult& aRv) override;
     45 
     46  void Key(uint32_t aIndex, nsAString& aResult, nsIPrincipal& aSubjectPrincipal,
     47           ErrorResult& aRv) override;
     48 
     49  void GetItem(const nsAString& aKey, nsAString& aResult,
     50               nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) override;
     51 
     52  void GetSupportedNames(nsTArray<nsString>& aKeys) override;
     53 
     54  void SetItem(const nsAString& aKey, const nsAString& aValue,
     55               nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) override;
     56 
     57  void RemoveItem(const nsAString& aKey, nsIPrincipal& aSubjectPrincipal,
     58                  ErrorResult& aRv) override;
     59 
     60  void Clear(nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) override;
     61 
     62  void ApplyEvent(StorageEvent* aStorageEvent);
     63 
     64 private:
     65  ~LocalStorage();
     66 
     67  friend class LocalStorageManager;
     68  friend class LocalStorageCache;
     69 
     70  RefPtr<LocalStorageManager> mManager;
     71  RefPtr<LocalStorageCache> mCache;
     72  nsString mDocumentURI;
     73 
     74  // Whether this storage is running in private-browsing window.
     75  bool mIsPrivate : 1;
     76 
     77  void OnChange(const nsAString& aKey, const nsAString& aOldValue,
     78                const nsAString& aNewValue);
     79 };
     80 
     81 }  // namespace mozilla::dom
     82 
     83 #endif  // mozilla_dom_LocalStorage_h