Files
tubestation/netwerk/cookie/CookieService.h
Stanca Serban 3eac2f1354 Backed out 8 changesets (bug 1915355) for causing xpcshell failures.
Backed out changeset d292c3a2592d (bug 1915355)
Backed out changeset 3386ee00459e (bug 1915355)
Backed out changeset 98848e63dfbf (bug 1915355)
Backed out changeset b668d0c685e8 (bug 1915355)
Backed out changeset 08acd8256071 (bug 1915355)
Backed out changeset 3ae9463ee988 (bug 1915355)
Backed out changeset 2dd416f1b847 (bug 1915355)
Backed out changeset 17107bbcf8c8 (bug 1915355)
2025-01-08 23:36:08 +02:00

139 lines
4.8 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_net_CookieService_h
#define mozilla_net_CookieService_h
#include "nsICookieService.h"
#include "nsICookieManager.h"
#include "nsIObserver.h"
#include "nsWeakReference.h"
#include "Cookie.h"
#include "CookieCommons.h"
#include "nsString.h"
#include "nsIMemoryReporter.h"
#include "mozilla/MemoryReporting.h"
class nsIConsoleReportCollector;
class nsICookieJarSettings;
class nsIEffectiveTLDService;
class nsIURI;
class nsIChannel;
class mozIThirdPartyUtil;
namespace mozilla {
namespace net {
class CookiePersistentStorage;
class CookiePrivateStorage;
class CookieStorage;
/******************************************************************************
* CookieService:
* class declaration
******************************************************************************/
class CookieService final : public nsICookieService,
public nsICookieManager,
public nsIObserver,
public nsSupportsWeakReference,
public nsIMemoryReporter {
private:
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIOBSERVER
NS_DECL_NSICOOKIESERVICE
NS_DECL_NSICOOKIEMANAGER
NS_DECL_NSIMEMORYREPORTER
static already_AddRefed<CookieService> GetSingleton();
CookieService();
static already_AddRefed<nsICookieService> GetXPCOMSingleton();
nsresult Init();
/**
* Start watching the observer service for messages indicating that an app has
* been uninstalled. When an app is uninstalled, we get the cookie service
* (thus instantiating it, if necessary) and clear all the cookies for that
* app.
*/
static CookieStatus CheckPrefs(
nsIConsoleReportCollector* aCRC, nsICookieJarSettings* aCookieJarSettings,
nsIURI* aHostURI, bool aIsForeign, bool aIsThirdPartyTrackingResource,
bool aIsThirdPartySocialTrackingResource,
bool aStorageAccessPermissionGranted, const nsACString& aCookieHeader,
const int aNumOfCookies, const OriginAttributes& aOriginAttrs,
uint32_t* aRejectedReason);
void GetCookiesForURI(nsIURI* aHostURI, nsIChannel* aChannel, bool aIsForeign,
bool aIsThirdPartyTrackingResource,
bool aIsThirdPartySocialTrackingResource,
bool aStorageAccessPermissionGranted,
uint32_t aRejectedReason, bool aIsSafeTopLevelNav,
bool aIsSameSiteForeign, bool aHadCrossSiteRedirects,
bool aHttpBound,
bool aAllowSecureCookiesToInsecureOrigin,
const nsTArray<OriginAttributes>& aOriginAttrsList,
nsTArray<RefPtr<Cookie>>& aCookieList);
/**
* This method is a helper that allows calling nsICookieManager::Remove()
* with OriginAttributes parameter.
*/
nsresult Remove(const nsACString& aHost, const OriginAttributes& aAttrs,
const nsACString& aName, const nsACString& aPath,
const nsID* aOperationID);
bool SetCookiesFromIPC(const nsACString& aBaseDomain,
const OriginAttributes& aAttrs, nsIURI* aHostURI,
bool aFromHttp, bool aIsThirdParty,
const nsTArray<CookieStruct>& aCookies,
dom::BrowsingContext* aBrowsingContext);
protected:
virtual ~CookieService();
bool IsInitialized() const;
void InitCookieStorages();
void CloseCookieStorages();
nsresult NormalizeHost(nsCString& aHost);
void NotifyAccepted(nsIChannel* aChannel);
nsresult GetCookiesWithOriginAttributes(
const OriginAttributesPattern& aPattern, const nsCString& aBaseDomain,
bool aSorted, nsTArray<RefPtr<nsICookie>>& aResult);
nsresult RemoveCookiesWithOriginAttributes(
const OriginAttributesPattern& aPattern, const nsCString& aBaseDomain);
protected:
CookieStorage* PickStorage(const OriginAttributes& aAttrs);
CookieStorage* PickStorage(const OriginAttributesPattern& aAttrs);
nsresult RemoveCookiesFromExactHost(const nsACString& aHost,
const OriginAttributesPattern& aPattern);
// cached members.
nsCOMPtr<mozIThirdPartyUtil> mThirdPartyUtil;
nsCOMPtr<nsIEffectiveTLDService> mTLDService;
// we have two separate Cookie Storages: one for normal browsing and one for
// private browsing.
RefPtr<CookieStorage> mPersistentStorage;
RefPtr<CookieStorage> mPrivateStorage;
};
} // namespace net
} // namespace mozilla
#endif // mozilla_net_CookieService_h