CookieServiceChild.h (2970B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef mozilla_net_CookieServiceChild_h__ 7 #define mozilla_net_CookieServiceChild_h__ 8 9 #include "CookieKey.h" 10 #include "mozilla/net/PCookieServiceChild.h" 11 #include "nsClassHashtable.h" 12 #include "nsICookieService.h" 13 #include "mozIThirdPartyUtil.h" 14 #include "nsWeakReference.h" 15 #include "nsThreadUtils.h" 16 17 class nsIEffectiveTLDService; 18 class nsILoadInfo; 19 20 namespace mozilla { 21 namespace net { 22 23 class Cookie; 24 class CookieStruct; 25 26 class CookieServiceChild final : public PCookieServiceChild, 27 public nsICookieService, 28 public nsSupportsWeakReference { 29 friend class PCookieServiceChild; 30 31 public: 32 NS_DECL_ISUPPORTS 33 NS_DECL_NSICOOKIESERVICE 34 35 typedef nsTArray<RefPtr<Cookie>> CookiesList; 36 typedef nsClassHashtable<CookieKey, CookiesList> CookiesMap; 37 38 CookieServiceChild(); 39 40 void Init(); 41 42 static already_AddRefed<CookieServiceChild> GetSingleton(); 43 44 RefPtr<GenericPromise> TrackCookieLoad(nsIChannel* aChannel); 45 46 mozilla::ipc::IPCResult RecvRemoveCookie(const CookieStruct& aCookie, 47 const OriginAttributes& aAttrs, 48 const Maybe<nsID>& aOperationID); 49 50 mozilla::ipc::IPCResult RecvAddCookie(const CookieStruct& aCookie, 51 const OriginAttributes& aAttrs, 52 const Maybe<nsID>& aOperationID); 53 54 private: 55 ~CookieServiceChild(); 56 57 enum class CookieNotificationAction { 58 NoActionNeeded, 59 CookieAdded, 60 CookieChanged, 61 CookieDeleted, 62 }; 63 64 CookieNotificationAction RecordDocumentCookie(Cookie* aCookie, 65 const OriginAttributes& aAttrs); 66 67 void NotifyObservers(Cookie* aCookie, const OriginAttributes& aAttrs, 68 CookieNotificationAction aAction, 69 const Maybe<nsID>& aOperationID = Nothing()); 70 71 static bool RequireThirdPartyCheck(nsILoadInfo* aLoadInfo); 72 73 mozilla::ipc::IPCResult RecvTrackCookiesLoad( 74 nsTArray<CookieStructTable>&& aCookiesListTable); 75 76 mozilla::ipc::IPCResult RecvRemoveAll(); 77 78 mozilla::ipc::IPCResult RecvRemoveBatchDeletedCookies( 79 nsTArray<CookieStruct>&& aCookiesList, 80 nsTArray<OriginAttributes>&& aAttrsList); 81 82 void RemoveSingleCookie(const CookieStruct& aCookie, 83 const OriginAttributes& aAttrs, 84 const Maybe<nsID>& aOperationID); 85 86 CookiesMap mCookiesMap; 87 nsCOMPtr<mozIThirdPartyUtil> mThirdPartyUtil; 88 nsCOMPtr<nsIEffectiveTLDService> mTLDService; 89 }; 90 91 } // namespace net 92 } // namespace mozilla 93 94 #endif // mozilla_net_CookieServiceChild_h__