tor-browser

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

CookieStoreParent.h (5080B)


      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 mozilla_dom_CookieStoreParent_h
      8 #define mozilla_dom_CookieStoreParent_h
      9 
     10 #include "mozilla/MozPromise.h"
     11 #include "mozilla/dom/ContentParent.h"
     12 #include "mozilla/dom/PCookieStoreParent.h"
     13 
     14 namespace mozilla::dom {
     15 
     16 class CookieStoreNotificationWatcher;
     17 
     18 class CookieStoreParent final : public PCookieStoreParent {
     19  friend class PCookieStoreParent;
     20 
     21 public:
     22  using GetRequestPromise =
     23      MozPromise<CopyableTArray<CookieStruct>, nsresult, true>;
     24  using SetDeleteRequestPromise = MozPromise<bool, bool, true>;
     25  using GetSubscriptionsRequestPromise =
     26      MozPromise<CopyableTArray<CookieSubscription>, nsresult, true>;
     27  using SubscribeOrUnsubscribeRequestPromise = MozPromise<bool, nsresult, true>;
     28 
     29  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CookieStoreParent)
     30 
     31  CookieStoreParent();
     32 
     33 private:
     34  ~CookieStoreParent();
     35 
     36  mozilla::ipc::IPCResult RecvGetRequest(
     37      NotNull<RefPtr<nsIURI>> aCookieURI,
     38      const OriginAttributes& aOriginAttributes,
     39      const Maybe<OriginAttributes>& aPartitionedOriginAttributes,
     40      const bool& aThirdPartyContext, const bool& aPartitionForeign,
     41      const bool& aUsingStorageAccess, const bool& aIsOn3PCBExceptionList,
     42      const bool& aMatchName, const nsString& aName, const nsCString& aPath,
     43      const bool& aOnlyFirstMatch, GetRequestResolver&& aResolver);
     44 
     45  mozilla::ipc::IPCResult RecvSetRequest(
     46      NotNull<RefPtr<nsIURI>> aCookieURI,
     47      const OriginAttributes& aOriginAttributes, const bool& aThirdPartyContext,
     48      const bool& aPartitionForeign, const bool& aUsingStorageAccess,
     49      const bool& aIsOn3PCBExceptionList, const nsString& aName,
     50      const nsString& aValue, const bool& aSession, const int64_t& aExpires,
     51      const nsString& aDomain, const nsString& aPath, const int32_t& aSameSite,
     52      const bool& aPartitioned, const nsID& aOperationID,
     53      SetRequestResolver&& aResolver);
     54 
     55  mozilla::ipc::IPCResult RecvDeleteRequest(
     56      NotNull<RefPtr<nsIURI>> aCookieURI,
     57      const OriginAttributes& aOriginAttributes, const bool& aThirdPartyContext,
     58      const bool& aPartitionForeign, const bool& aUsingStorageAccess,
     59      const bool& aIsOn3PCBExceptionList, const nsString& aName,
     60      const nsString& aDomain, const nsString& aPath, const bool& aPartitioned,
     61      const nsID& aOperationID, DeleteRequestResolver&& aResolver);
     62 
     63  mozilla::ipc::IPCResult RecvGetSubscriptionsRequest(
     64      const PrincipalInfo& aPrincipalInfo, const nsCString& aScopeURL,
     65      GetSubscriptionsRequestResolver&& aResolver);
     66 
     67  mozilla::ipc::IPCResult RecvSubscribeOrUnsubscribeRequest(
     68      const PrincipalInfo& aPrincipalInfo, const nsCString& aScopeURL,
     69      const CopyableTArray<CookieSubscription>& aSubscriptions,
     70      bool aSubscription, SubscribeOrUnsubscribeRequestResolver&& aResolver);
     71 
     72  mozilla::ipc::IPCResult RecvClose();
     73 
     74  void GetRequestOnMainThread(
     75      const RefPtr<nsIURI> aCookieURI,
     76      const OriginAttributes& aOriginAttributes,
     77      const Maybe<OriginAttributes>& aPartitionedOriginAttributes,
     78      bool aThirdPartyContext, bool aPartitionForeign, bool aUsingStorageAccess,
     79      bool aIsOn3PCBExceptionList, bool aMatchName, const nsAString& aName,
     80      const nsACString& aPath, bool aOnlyFirstMatch,
     81      nsTArray<CookieStruct>& aResults);
     82 
     83  enum SetReturnType {
     84    eFailure,
     85    eSilentFailure,
     86    eSuccess,
     87  };
     88 
     89  // Returns true if a cookie notification has been generated while completing
     90  // the operation.
     91  SetReturnType SetRequestOnMainThread(
     92      ThreadsafeContentParentHandle* aParent, const RefPtr<nsIURI> aCookieURI,
     93      const nsAString& aDomain, const OriginAttributes& aOriginAttributes,
     94      bool aThirdPartyContext, bool aPartitionForeign, bool aUsingStorageAccess,
     95      bool aIsOn3PCBExceptionList, const nsAString& aName,
     96      const nsAString& aValue, bool aSession, int64_t aExpires,
     97      const nsAString& aPath, int32_t aSameSite, bool aPartitioned,
     98      const nsID& aOperationID, bool& aWaitForNotification);
     99 
    100  // Returns true if a cookie notification has been generated while completing
    101  // the operation.
    102  bool DeleteRequestOnMainThread(
    103      ThreadsafeContentParentHandle* aParent, const RefPtr<nsIURI> aCookieURI,
    104      const nsAString& aDomain, const OriginAttributes& aOriginAttributes,
    105      bool aThirdPartyContext, bool aPartitionForeign, bool aUsingStorageAccess,
    106      bool aIsOn3PCBExceptionList, const nsAString& aName,
    107      const nsAString& aPath, bool aPartitioned, const nsID& aOperationID);
    108 
    109  CookieStoreNotificationWatcher* GetOrCreateNotificationWatcherOnMainThread(
    110      const OriginAttributes& aOriginAttributes);
    111 
    112  RefPtr<CookieStoreNotificationWatcher> mNotificationWatcherOnMainThread;
    113 };
    114 
    115 }  // namespace mozilla::dom
    116 
    117 #endif  // mozilla_dom_CookieStoreParent_h