75 lines
2.4 KiB
C++
75 lines
2.4 KiB
C++
/* 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_ThirdPartyCookieBlockingExceptions_h
|
|
#define mozilla_net_ThirdPartyCookieBlockingExceptions_h
|
|
|
|
#include "mozilla/MozPromise.h"
|
|
#include "nsEffectiveTLDService.h"
|
|
#include "nsString.h"
|
|
#include "nsTArray.h"
|
|
#include "nsTHashSet.h"
|
|
#include "nsIThirdPartyCookieBlockingExceptionListService.h"
|
|
|
|
class nsIEffectiveTLDService;
|
|
class nsIURI;
|
|
class nsIChannel;
|
|
|
|
namespace mozilla {
|
|
namespace net {
|
|
|
|
class ThirdPartyCookieBlockingExceptions final {
|
|
public:
|
|
// Initializes the foreign cookie blocking exception list.
|
|
void Initialize();
|
|
|
|
// Check if the given top-level and third-party URIs are in the exception
|
|
// list.
|
|
bool CheckExceptionForURIs(nsIURI* aFirstPartyURI, nsIURI* aThirdPartyURI);
|
|
|
|
// Check if the given channel is in the exception list.
|
|
bool CheckExceptionForChannel(nsIChannel* aChannel);
|
|
|
|
void Insert(const nsACString& aException);
|
|
void Remove(const nsACString& aException);
|
|
|
|
void GetExceptions(nsTArray<nsCString>& aExceptions);
|
|
|
|
void Shutdown();
|
|
|
|
bool IsInitialized() const { return mIsInitialized; }
|
|
|
|
private:
|
|
nsCOMPtr<nsIThirdPartyCookieBlockingExceptionListService>
|
|
m3PCBExceptionService;
|
|
|
|
// A helper function to create a key for the exception list.
|
|
static void Create3PCBExceptionKey(const nsACString& aFirstPartySite,
|
|
const nsACString& aThirdPartySite,
|
|
nsACString& aKey) {
|
|
aKey.Truncate();
|
|
aKey.Append(aFirstPartySite);
|
|
aKey.AppendLiteral(",");
|
|
aKey.Append(aThirdPartySite);
|
|
}
|
|
|
|
// Check if the given third-party site is in the wildcard exception list.
|
|
// The wildcard exception list is used to allow third-party cookies under
|
|
// every top-level site.
|
|
bool CheckWildcardException(const nsACString& aThirdPartySite);
|
|
|
|
// Check if the given first-party and third-party sites are in the exception
|
|
// list.
|
|
bool CheckException(const nsACString& aFirstPartySite,
|
|
const nsACString& aThirdPartySite);
|
|
|
|
// The flag that indicates if the 3PCB exception service is initialized.
|
|
bool mIsInitialized = false;
|
|
nsTHashSet<nsCStringHashKey> m3PCBExceptionsSet;
|
|
};
|
|
|
|
} // namespace net
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_net_ThirdPartyCookieBlockingExceptions_h
|