From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- netwerk/url-classifier/UrlClassifierCommon.h | 103 +++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 netwerk/url-classifier/UrlClassifierCommon.h (limited to 'netwerk/url-classifier/UrlClassifierCommon.h') diff --git a/netwerk/url-classifier/UrlClassifierCommon.h b/netwerk/url-classifier/UrlClassifierCommon.h new file mode 100644 index 0000000000..c1d92ef981 --- /dev/null +++ b/netwerk/url-classifier/UrlClassifierCommon.h @@ -0,0 +1,103 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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_UrlClassifierCommon_h +#define mozilla_net_UrlClassifierCommon_h + +#include "mozilla/Logging.h" +#include "nsString.h" + +#include + +class nsIChannel; +class nsIURI; + +#define UC_LOG(args) MOZ_LOG(UrlClassifierCommon::sLog, LogLevel::Info, args) +#define UC_LOG_DEBUG(args) \ + MOZ_LOG(UrlClassifierCommon::sLog, LogLevel::Debug, args) +#define UC_LOG_WARN(args) \ + MOZ_LOG(UrlClassifierCommon::sLog, LogLevel::Warning, args) +#define UC_LOG_LEAK(args) \ + MOZ_LOG(UrlClassifierCommon::sLogLeak, LogLevel::Info, args) + +#define UC_LOG_ENABLED() \ + MOZ_LOG_TEST(UrlClassifierCommon::sLog, LogLevel::Info) || \ + MOZ_LOG_TEST(UrlClassifierCommon::sLogLeak, LogLevel::Info) + +namespace mozilla { +namespace net { + +class UrlClassifierCommon final { + public: + static const nsCString::size_type sMaxSpecLength; + + static LazyLogModule sLog; + static LazyLogModule sLogLeak; + + static bool AddonMayLoad(nsIChannel* aChannel, nsIURI* aURI); + + static bool ShouldEnableProtectionForChannel(nsIChannel* aChannel); + + static nsresult SetBlockedContent(nsIChannel* channel, nsresult aErrorCode, + const nsACString& aList, + const nsACString& aProvider, + const nsACString& aFullHash); + + static nsresult SetTrackingInfo(nsIChannel* channel, + const nsTArray& aLists, + const nsTArray& aFullHashes); + + // Use this function only when you are looking for a pairwise entitylist uri + // with the format: http://toplevel.page/?resource=channel.uri.domain + static nsresult CreatePairwiseEntityListURI(nsIChannel* aChannel, + nsIURI** aURI); + + static void AnnotateChannel(nsIChannel* aChannel, + uint32_t aClassificationFlags, + uint32_t aLoadingState); + + static bool IsAllowListed(nsIChannel* aChannel); + + static bool IsTrackingClassificationFlag(uint32_t aFlag, bool aIsPrivate); + + static bool IsSocialTrackingClassificationFlag(uint32_t aFlag); + + static bool IsCryptominingClassificationFlag(uint32_t aFlag, bool aIsPrivate); + + // Join the table names in 1 single string. + static void TablesToString(const nsTArray& aList, + nsACString& aString); + + struct ClassificationData { + nsCString mPrefix; + uint32_t mFlag; + }; + + // Checks if the entries in aList are part of the ClassificationData vector + // and it returns the corresponding flags. If none of them is found, the + // default flag is returned. + static uint32_t TablesToClassificationFlags( + const nsTArray& aList, + const std::vector& aData, uint32_t aDefaultFlag); + + static bool IsPassiveContent(nsIChannel* aChannel); + + static void SetClassificationFlagsHelper(nsIChannel* aChannel, + uint32_t aClassificationFlags, + bool aIsThirdParty); + + private: + static uint32_t TableToClassificationFlag( + const nsACString& aTable, const std::vector& aData); + + friend class AsyncUrlChannelClassifier; + static nsresult GetTopWindowURI(nsIChannel* aChannel, nsIURI** aURI); +}; + +} // namespace net +} // namespace mozilla + +#endif // mozilla_net_UrlClassifierCommon_h -- cgit v1.2.3