1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_TPCD_HEURISTICS_OPENER_HEURISTIC_UTILS_H_
#define CONTENT_BROWSER_TPCD_HEURISTICS_OPENER_HEURISTIC_UTILS_H_
#include <map>
#include <set>
#include <string>
#include <utility>
#include "base/types/optional_ref.h"
#include "content/common/content_export.h"
class GURL;
namespace content {
class BtmRedirectContext;
struct CookieAccessDetails;
// Common identity providers that open pop-ups, to help estimate the impact of
// third-party cookie blocking and prioritize mitigations. These values are
// emitted in metrics and should not be renumbered.
enum class PopupProvider {
kUnknown = 0,
kGoogle = 1,
};
CONTENT_EXPORT PopupProvider GetPopupProvider(const GURL& popup_url);
// These values are emitted in metrics and should not be renumbered. This one
// type is used for both of the IsAdTagged and HasSameSiteIframe UKM enums.
enum class OptionalBool {
kUnknown = 0,
kFalse = 1,
kTrue = 2,
};
inline OptionalBool ToOptionalBool(bool b) {
return b ? OptionalBool::kTrue : OptionalBool::kFalse;
}
// Returns whether the provided cookie access was ad-tagged, based on the cookie
// settings overrides. Returns Unknown if kSkipTpcdMitigationsForAdsHeuristics
// is false and the override is not set regardless.
CONTENT_EXPORT OptionalBool
IsAdTaggedCookieForHeuristics(const CookieAccessDetails& details);
// Returns a map of (site, (url, has_current_interaction)) for all URLs in the
// current redirect chain that satisfy the redirect heuristic. This performs
// all checks except for the presence of a past interaction, which should be
// checked by the caller using the BTM database. If `allowed_sites` is present,
// only sites in `allowed_sites` should be included.
CONTENT_EXPORT std::map<std::string, std::pair<GURL, bool>>
GetRedirectHeuristicURLs(
const BtmRedirectContext& committed_redirect_context,
const GURL& first_party_url,
base::optional_ref<std::set<std::string>> allowed_sites,
bool require_current_interaction);
} // namespace content
#endif // CONTENT_BROWSER_TPCD_HEURISTICS_OPENER_HEURISTIC_UTILS_H_
|