From ca06ea91620f45f68d085780d93ab19f94e296dd Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Tue, 21 Mar 2023 10:47:28 +0000 Subject: [PATCH] Bug 1823341 - Make toolkit/components/antitracking buildable outside of a unified build environment r=andi Depends on D172968 Differential Revision: https://phabricator.services.mozilla.com/D172969 --- extensions/permissions/PermissionManager.h | 2 ++ .../antitracking/AntiTrackingUtils.cpp | 1 + .../antitracking/ContentBlockingAllowList.cpp | 4 ++++ .../antitracking/ContentBlockingLog.cpp | 2 ++ .../antitracking/ContentBlockingNotifier.cpp | 2 ++ .../ContentBlockingTelemetryService.cpp | 2 ++ .../DynamicFpiRedirectHeuristic.cpp | 2 ++ .../PartitioningExceptionList.cpp | 1 + .../antitracking/PartitioningExceptionList.h | 4 +++- .../antitracking/RejectForeignAllowList.cpp | 4 ++++ .../antitracking/RejectForeignAllowList.h | 1 + .../antitracking/SettingsChangeObserver.h | 2 ++ .../components/antitracking/StorageAccess.cpp | 22 +++++++++++++++---- .../components/antitracking/StorageAccess.h | 5 +++++ .../antitracking/StorageAccessAPIHelper.cpp | 7 ++++-- .../antitracking/StoragePrincipalHelper.cpp | 18 ++++++++++----- .../antitracking/StoragePrincipalHelper.h | 1 + .../TemporaryAccessGrantObserver.cpp | 1 + .../TemporaryAccessGrantObserver.h | 2 ++ toolkit/components/antitracking/moz.build | 2 -- 20 files changed, 70 insertions(+), 15 deletions(-) diff --git a/extensions/permissions/PermissionManager.h b/extensions/permissions/PermissionManager.h index 2f2a2dac26ae..a92d583e4950 100644 --- a/extensions/permissions/PermissionManager.h +++ b/extensions/permissions/PermissionManager.h @@ -12,6 +12,7 @@ #include "nsIObserver.h" #include "nsWeakReference.h" #include "nsCOMPtr.h" +#include "nsIURI.h" #include "nsTHashtable.h" #include "nsTArray.h" #include "nsString.h" @@ -20,6 +21,7 @@ #include "mozilla/Atomics.h" #include "mozilla/Monitor.h" #include "mozilla/MozPromise.h" +#include "mozilla/OriginAttributes.h" #include "mozilla/StaticMutex.h" #include "mozilla/ThreadBound.h" #include "mozilla/Variant.h" diff --git a/toolkit/components/antitracking/AntiTrackingUtils.cpp b/toolkit/components/antitracking/AntiTrackingUtils.cpp index 3ef0ca8b7b54..d40cd71c4894 100644 --- a/toolkit/components/antitracking/AntiTrackingUtils.cpp +++ b/toolkit/components/antitracking/AntiTrackingUtils.cpp @@ -22,6 +22,7 @@ #include "nsEffectiveTLDService.h" #include "nsGlobalWindowInner.h" #include "nsIChannel.h" +#include "nsICookieService.h" #include "nsIHttpChannel.h" #include "nsIPermission.h" #include "nsIURI.h" diff --git a/toolkit/components/antitracking/ContentBlockingAllowList.cpp b/toolkit/components/antitracking/ContentBlockingAllowList.cpp index fe7973863e6b..25806cd1e749 100644 --- a/toolkit/components/antitracking/ContentBlockingAllowList.cpp +++ b/toolkit/components/antitracking/ContentBlockingAllowList.cpp @@ -9,11 +9,15 @@ #include "mozilla/dom/BrowsingContext.h" #include "mozilla/dom/Document.h" +#include "mozilla/BasePrincipal.h" #include "mozilla/PermissionManager.h" #include "mozilla/ScopeExit.h" #include "nsContentUtils.h" +#include "nsGlobalWindowInner.h" +#include "nsICookieJarSettings.h" #include "nsIHttpChannel.h" #include "nsIHttpChannelInternal.h" +#include "nsNetUtil.h" using namespace mozilla; diff --git a/toolkit/components/antitracking/ContentBlockingLog.cpp b/toolkit/components/antitracking/ContentBlockingLog.cpp index d47e8832e48c..de5287444605 100644 --- a/toolkit/components/antitracking/ContentBlockingLog.cpp +++ b/toolkit/components/antitracking/ContentBlockingLog.cpp @@ -9,6 +9,8 @@ #include "nsIEffectiveTLDService.h" #include "nsITrackingDBService.h" +#include "nsNetCID.h" +#include "nsNetUtil.h" #include "nsServiceManagerUtils.h" #include "nsTArray.h" #include "mozilla/BasePrincipal.h" diff --git a/toolkit/components/antitracking/ContentBlockingNotifier.cpp b/toolkit/components/antitracking/ContentBlockingNotifier.cpp index a909f2422004..5de57f91b274 100644 --- a/toolkit/components/antitracking/ContentBlockingNotifier.cpp +++ b/toolkit/components/antitracking/ContentBlockingNotifier.cpp @@ -12,6 +12,7 @@ #include "mozilla/StaticPrefs_privacy.h" #include "mozilla/dom/BrowserChild.h" #include "mozilla/dom/BrowsingContext.h" +#include "mozilla/dom/Document.h" #include "mozilla/dom/ContentParent.h" #include "mozilla/dom/WindowGlobalParent.h" #include "nsIClassifiedChannel.h" @@ -24,6 +25,7 @@ #include "mozIThirdPartyUtil.h" using namespace mozilla; +using namespace mozilla::dom; using mozilla::dom::BrowsingContext; using mozilla::dom::ContentChild; using mozilla::dom::Document; diff --git a/toolkit/components/antitracking/ContentBlockingTelemetryService.cpp b/toolkit/components/antitracking/ContentBlockingTelemetryService.cpp index 228b4005a852..fd199043097b 100644 --- a/toolkit/components/antitracking/ContentBlockingTelemetryService.cpp +++ b/toolkit/components/antitracking/ContentBlockingTelemetryService.cpp @@ -13,8 +13,10 @@ #include "mozilla/Telemetry.h" #include "AntiTrackingLog.h" +#include "prtime.h" #include "nsIObserverService.h" +#include "nsIPermission.h" #include "nsTArray.h" using namespace mozilla; diff --git a/toolkit/components/antitracking/DynamicFpiRedirectHeuristic.cpp b/toolkit/components/antitracking/DynamicFpiRedirectHeuristic.cpp index aa7c77d6eff3..c4b3ea3d2eb4 100644 --- a/toolkit/components/antitracking/DynamicFpiRedirectHeuristic.cpp +++ b/toolkit/components/antitracking/DynamicFpiRedirectHeuristic.cpp @@ -11,9 +11,11 @@ #include "StorageAccessAPIHelper.h" #include "mozilla/net/HttpBaseChannel.h" +#include "mozilla/net/UrlClassifierCommon.h" #include "mozilla/Telemetry.h" #include "nsContentUtils.h" #include "nsIChannel.h" +#include "nsICookieJarSettings.h" #include "nsICookieService.h" #include "nsIEffectiveTLDService.h" #include "nsINavHistoryService.h" diff --git a/toolkit/components/antitracking/PartitioningExceptionList.cpp b/toolkit/components/antitracking/PartitioningExceptionList.cpp index 583710d5d297..91cc40133c71 100644 --- a/toolkit/components/antitracking/PartitioningExceptionList.cpp +++ b/toolkit/components/antitracking/PartitioningExceptionList.cpp @@ -8,6 +8,7 @@ #include "AntiTrackingLog.h" #include "nsContentUtils.h" +#include "nsServiceManagerUtils.h" #include "mozilla/ClearOnShutdown.h" #include "mozilla/StaticPtr.h" diff --git a/toolkit/components/antitracking/PartitioningExceptionList.h b/toolkit/components/antitracking/PartitioningExceptionList.h index d53e943f81eb..250a636340fe 100644 --- a/toolkit/components/antitracking/PartitioningExceptionList.h +++ b/toolkit/components/antitracking/PartitioningExceptionList.h @@ -7,8 +7,10 @@ #ifndef mozilla_PartitioningExceptionList_h #define mozilla_PartitioningExceptionList_h +#include "nsCOMPtr.h" #include "nsIPartitioningExceptionListService.h" -#include "nsTArrayForwardDeclare.h" +#include "nsTArray.h" +#include "nsString.h" class nsIChannel; class nsIPrincipal; diff --git a/toolkit/components/antitracking/RejectForeignAllowList.cpp b/toolkit/components/antitracking/RejectForeignAllowList.cpp index b7117d77af87..3af049455800 100644 --- a/toolkit/components/antitracking/RejectForeignAllowList.cpp +++ b/toolkit/components/antitracking/RejectForeignAllowList.cpp @@ -6,9 +6,13 @@ #include "RejectForeignAllowList.h" #include "mozilla/dom/Document.h" +#include "mozilla/BasePrincipal.h" #include "mozilla/ClearOnShutdown.h" #include "mozilla/StaticPtr.h" +#include "nsIHttpChannel.h" +#include "nsIURI.h" #include "nsNetUtil.h" +#include "nsScriptSecurityManager.h" #define REJECTFOREIGNALLOWLIST_PREF "privacy.rejectForeign.allowList"_ns #define REJECTFOREIGNALLOWLIST_NAME "RejectForeignAllowList"_ns diff --git a/toolkit/components/antitracking/RejectForeignAllowList.h b/toolkit/components/antitracking/RejectForeignAllowList.h index 98ea9143c28f..f767bf88fc3b 100644 --- a/toolkit/components/antitracking/RejectForeignAllowList.h +++ b/toolkit/components/antitracking/RejectForeignAllowList.h @@ -8,6 +8,7 @@ #define mozilla_RejectForeignAllowList_h #include "nsIUrlClassifierExceptionListService.h" +#include "nsIPrincipal.h" class nsIHttpChannel; class nsIURI; diff --git a/toolkit/components/antitracking/SettingsChangeObserver.h b/toolkit/components/antitracking/SettingsChangeObserver.h index 9449665fda33..961942deacaa 100644 --- a/toolkit/components/antitracking/SettingsChangeObserver.h +++ b/toolkit/components/antitracking/SettingsChangeObserver.h @@ -9,6 +9,8 @@ #include "nsIObserver.h" +#include + namespace mozilla { class SettingsChangeObserver final : public nsIObserver { diff --git a/toolkit/components/antitracking/StorageAccess.cpp b/toolkit/components/antitracking/StorageAccess.cpp index 0e0c81caa840..c825a7739565 100644 --- a/toolkit/components/antitracking/StorageAccess.cpp +++ b/toolkit/components/antitracking/StorageAccess.cpp @@ -6,19 +6,32 @@ #include "StorageAccess.h" +#include "mozilla/BasePrincipal.h" +#include "mozilla/Components.h" #include "mozilla/dom/Document.h" #include "mozilla/net/CookieJarSettings.h" +#include "mozilla/PermissionManager.h" #include "mozilla/StaticPrefs_browser.h" #include "mozilla/StaticPrefs_network.h" #include "mozilla/StaticPrefs_privacy.h" #include "mozilla/StorageAccess.h" #include "nsContentUtils.h" +#include "nsGlobalWindowInner.h" #include "nsICookiePermission.h" #include "nsICookieService.h" #include "nsICookieJarSettings.h" +#include "nsIHttpChannel.h" #include "nsIPermission.h" #include "nsIWebProgressListener.h" +#include "nsIClassifiedChannel.h" +#include "nsNetUtil.h" +#include "nsScriptSecurityManager.h" #include "nsSandboxFlags.h" +#include "AntiTrackingUtils.h" +#include "AntiTrackingLog.h" +#include "ContentBlockingAllowList.h" +#include "mozIThirdPartyUtil.h" +#include "RejectForeignAllowList.h" using namespace mozilla; using namespace mozilla::dom; @@ -26,7 +39,7 @@ using mozilla::net::CookieJarSettings; // This internal method returns ACCESS_DENY if the access is denied, // ACCESS_DEFAULT if unknown, some other access code if granted. -uint32_t CheckCookiePermissionForPrincipal( +uint32_t mozilla::detail::CheckCookiePermissionForPrincipal( nsICookieJarSettings* aCookieJarSettings, nsIPrincipal* aPrincipal) { MOZ_ASSERT(aCookieJarSettings); MOZ_ASSERT(aPrincipal); @@ -46,6 +59,7 @@ uint32_t CheckCookiePermissionForPrincipal( return cookiePermission; } + /* * Checks if storage for a given principal is permitted by the user's * preferences. If aWindow is non-null, its principal must be passed as @@ -470,7 +484,7 @@ bool ShouldAllowAccessFor(nsPIDOMWindowInner* aWindow, nsIURI* aURI, return false; } - uint32_t cookiePermission = CheckCookiePermissionForPrincipal( + uint32_t cookiePermission = detail::CheckCookiePermissionForPrincipal( document->CookieJarSettings(), document->NodePrincipal()); if (cookiePermission != nsICookiePermission::ACCESS_DEFAULT) { LOG( @@ -651,7 +665,7 @@ bool ShouldAllowAccessFor(nsIChannel* aChannel, nsIURI* aURI, } uint32_t cookiePermission = - CheckCookiePermissionForPrincipal(cookieJarSettings, channelPrincipal); + detail::CheckCookiePermissionForPrincipal(cookieJarSettings, channelPrincipal); if (cookiePermission != nsICookiePermission::ACCESS_DEFAULT) { LOG( ("CheckCookiePermissionForPrincipal() returned a non-default access " @@ -869,7 +883,7 @@ bool ApproximateAllowAccessForWithoutChannel( return true; } - uint32_t cookiePermission = CheckCookiePermissionForPrincipal( + uint32_t cookiePermission = detail::CheckCookiePermissionForPrincipal( parentDocument->CookieJarSettings(), parentDocument->NodePrincipal()); if (cookiePermission != nsICookiePermission::ACCESS_DEFAULT) { LOG( diff --git a/toolkit/components/antitracking/StorageAccess.h b/toolkit/components/antitracking/StorageAccess.h index 775a82b7556c..24d8e0535739 100644 --- a/toolkit/components/antitracking/StorageAccess.h +++ b/toolkit/components/antitracking/StorageAccess.h @@ -158,6 +158,11 @@ bool ShouldAllowAccessFor(nsIChannel* aChannel, nsIURI* aURI, bool ShouldAllowAccessFor(nsIPrincipal* aPrincipal, nsICookieJarSettings* aCookieJarSettings); +namespace detail { +uint32_t CheckCookiePermissionForPrincipal( + nsICookieJarSettings* aCookieJarSettings, nsIPrincipal* aPrincipal); +} + } // namespace mozilla #endif // mozilla_StorageAccess_h diff --git a/toolkit/components/antitracking/StorageAccessAPIHelper.cpp b/toolkit/components/antitracking/StorageAccessAPIHelper.cpp index 7d3535d955fe..c3403abbb4b2 100644 --- a/toolkit/components/antitracking/StorageAccessAPIHelper.cpp +++ b/toolkit/components/antitracking/StorageAccessAPIHelper.cpp @@ -16,10 +16,12 @@ #include "mozilla/dom/BrowsingContextGroup.h" #include "mozilla/dom/ContentChild.h" #include "mozilla/dom/ContentParent.h" +#include "mozilla/dom/Document.h" #include "mozilla/dom/WindowContext.h" #include "mozilla/dom/WindowGlobalParent.h" #include "mozilla/net/CookieJarSettings.h" #include "mozilla/PermissionManager.h" +#include "mozilla/StaticPrefs_network.h" #include "mozilla/StaticPrefs_privacy.h" #include "mozilla/Telemetry.h" #include "mozIThirdPartyUtil.h" @@ -37,6 +39,7 @@ #include "nsIWebProgressListener.h" #include "nsScriptSecurityManager.h" #include "RejectForeignAllowList.h" +#include "StorageAccess.h" namespace mozilla { @@ -450,7 +453,7 @@ StorageAccessAPIHelper::CompleteAllowAccessFor( // we'll return to the content process we need to inform when this // function is done. So we don't need to create an extra IPC for the case. if (aReason != ContentBlockingNotifier::eOpener) { - ContentParent* cp = aParentContext->Canonical()->GetContentParent(); + dom::ContentParent* cp = aParentContext->Canonical()->GetContentParent(); Unused << cp->SendOnAllowAccessFor(aParentContext, trackingOrigin, aCookieBehavior, aReason); } @@ -741,7 +744,7 @@ StorageAccessAPIHelper::CheckCookiesPermittedDecidesStorageAccessAPI( nsIPrincipal* aRequestingPrincipal) { MOZ_ASSERT(aCookieJarSettings); MOZ_ASSERT(aRequestingPrincipal); - uint32_t cookiePermission = CheckCookiePermissionForPrincipal( + uint32_t cookiePermission = detail::CheckCookiePermissionForPrincipal( aCookieJarSettings, aRequestingPrincipal); if (cookiePermission == nsICookiePermission::ACCESS_ALLOW || cookiePermission == nsICookiePermission::ACCESS_SESSION) { diff --git a/toolkit/components/antitracking/StoragePrincipalHelper.cpp b/toolkit/components/antitracking/StoragePrincipalHelper.cpp index f478f0ccdf31..abd3adf64cd6 100644 --- a/toolkit/components/antitracking/StoragePrincipalHelper.cpp +++ b/toolkit/components/antitracking/StoragePrincipalHelper.cpp @@ -7,13 +7,19 @@ #include "StoragePrincipalHelper.h" #include "mozilla/ipc/PBackgroundSharedTypes.h" +#include "mozilla/dom/Document.h" #include "mozilla/dom/WorkerPrivate.h" +#include "mozilla/net/CookieJarSettings.h" #include "mozilla/ScopeExit.h" #include "mozilla/StaticPrefs_privacy.h" #include "mozilla/StorageAccess.h" #include "nsContentUtils.h" +#include "nsICookieJarSettings.h" +#include "nsICookieService.h" #include "nsIDocShell.h" #include "nsIEffectiveTLDService.h" +#include "nsIPrivateBrowsingChannel.h" +#include "AntiTrackingUtils.h" namespace mozilla { @@ -324,7 +330,7 @@ nsresult StoragePrincipalHelper::GetPrincipal(nsPIDOMWindowInner* aWindow, MOZ_ASSERT(aWindow); MOZ_ASSERT(aPrincipal); - nsCOMPtr doc = aWindow->GetExtantDoc(); + nsCOMPtr doc = aWindow->GetExtantDoc(); NS_ENSURE_STATE(doc); nsCOMPtr outPrincipal; @@ -369,7 +375,7 @@ bool StoragePrincipalHelper::ShouldUsePartitionPrincipalForServiceWorker( return false; } - RefPtr document = aDocShell->GetExtantDocument(); + RefPtr document = aDocShell->GetExtantDocument(); // If we cannot get the document from the docShell, we turn to get its // parent's document. @@ -390,8 +396,8 @@ bool StoragePrincipalHelper::ShouldUsePartitionPrincipalForServiceWorker( // If there was no document, we create one cookieJarSettings here in order // to get the cookieBehavior. We don't need a real value for RFP because // we are only using this object to check default cookie behavior. - cookieJarSettings = CookieJarSettings::Create( - CookieJarSettings::eRegular, /* shouldResistFingerpreinting */ false); + cookieJarSettings = net::CookieJarSettings::Create( + net::CookieJarSettings::eRegular, /* shouldResistFingerpreinting */ false); } // We only support partitioned service workers when dFPI is enabled. @@ -483,7 +489,7 @@ bool StoragePrincipalHelper::GetOriginAttributes( // static bool StoragePrincipalHelper::GetRegularPrincipalOriginAttributes( - Document* aDocument, OriginAttributes& aAttributes) { + dom::Document* aDocument, OriginAttributes& aAttributes) { aAttributes = mozilla::OriginAttributes(); if (!aDocument) { return false; @@ -536,7 +542,7 @@ bool StoragePrincipalHelper::GetOriginAttributesForNetworkState( // static void StoragePrincipalHelper::GetOriginAttributesForNetworkState( - Document* aDocument, OriginAttributes& aAttributes) { + dom::Document* aDocument, OriginAttributes& aAttributes) { aAttributes = aDocument->NodePrincipal()->OriginAttributesRef(); if (!StaticPrefs::privacy_partition_network_state()) { diff --git a/toolkit/components/antitracking/StoragePrincipalHelper.h b/toolkit/components/antitracking/StoragePrincipalHelper.h index b3c429d6fee8..f813417eb632 100644 --- a/toolkit/components/antitracking/StoragePrincipalHelper.h +++ b/toolkit/components/antitracking/StoragePrincipalHelper.h @@ -9,6 +9,7 @@ #include #include "ErrorList.h" +#include "nsStringFwd.h" /** * StoragePrincipal diff --git a/toolkit/components/antitracking/TemporaryAccessGrantObserver.cpp b/toolkit/components/antitracking/TemporaryAccessGrantObserver.cpp index 75df9e841624..a22b0caee849 100644 --- a/toolkit/components/antitracking/TemporaryAccessGrantObserver.cpp +++ b/toolkit/components/antitracking/TemporaryAccessGrantObserver.cpp @@ -7,6 +7,7 @@ #include "TemporaryAccessGrantObserver.h" #include "mozilla/PermissionManager.h" +#include "mozilla/Services.h" #include "nsIObserverService.h" #include "nsTHashtable.h" #include "nsXULAppAPI.h" diff --git a/toolkit/components/antitracking/TemporaryAccessGrantObserver.h b/toolkit/components/antitracking/TemporaryAccessGrantObserver.h index 3f96e2307104..09ff93311a7e 100644 --- a/toolkit/components/antitracking/TemporaryAccessGrantObserver.h +++ b/toolkit/components/antitracking/TemporaryAccessGrantObserver.h @@ -11,6 +11,8 @@ #include "nsCOMPtr.h" #include "nsHashKeys.h" #include "nsHashtablesFwd.h" +#include "nsTHashMap.h" +#include "nsINamed.h" #include "nsIObserver.h" #include "nsString.h" #include "PLDHashTable.h" diff --git a/toolkit/components/antitracking/moz.build b/toolkit/components/antitracking/moz.build index 5468f671d179..94073953bf6b 100644 --- a/toolkit/components/antitracking/moz.build +++ b/toolkit/components/antitracking/moz.build @@ -94,6 +94,4 @@ XPCSHELL_TESTS_MANIFESTS += ["test/xpcshell/xpcshell.ini"] TEST_DIRS += ["test/gtest"] -REQUIRES_UNIFIED_BUILD = True - SPHINX_TREES["anti-tracking"] = "docs"