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