From 7fd7b83e2baabef07ddf1cc28f35ca1fbabacff4 Mon Sep 17 00:00:00 2001 From: Claudio DeSouza Date: Tue, 13 Aug 2024 12:16:30 +0100 Subject: [PATCH] No more `UmaHistogramEnumeration` override variants This function used to have two variants, one taking a string value, and another taking a pointer. The two variants are now a single one using a string view arg. This dispenses of two overrides for each variant, and this change corrects that. Chromium change: https://chromium.googlesource.com/chromium/src/+/bb5cb56e8987de4ee255ae9f67ed83009e24ed04 commit bb5cb56e8987de4ee255ae9f67ed83009e24ed04 Author: Alex Turner Date: Mon Aug 12 17:12:42 2024 +0000 Add std::string_view versions of base::UmaHistogram* functions Defines an additional overload of these functions that uses std::string_view. We keep the existing const char* and const std::string& versions to avoid code bloat, but move some to a separate header. Introduces linting to keep those two versions synchronized. Also makes consequential changes to histogram classes to permit these new overloads. (Note that these changes cannot be easily moved to a separate header so are kept in the main class declarations.) Bug: 358538894 --- build/BUILD.gn | 3 +-- chromium_src/base/metrics/histogram_functions.h | 7 ++----- patches/base-metrics-histogram_functions.h.patch | 14 +++----------- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/build/BUILD.gn b/build/BUILD.gn index 7e6ee7af22f..f79480c7799 100644 --- a/build/BUILD.gn +++ b/build/BUILD.gn @@ -21,8 +21,7 @@ if (is_redirect_cc_build) { config("base_build_without_redirect_cc") { defines = [ "BRAVE_GET_TARGET_FOR_DEFAULT_APP_SETTINGS=", - "BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_CHAR_POINTER_ARG=", - "BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_STRING_ARG=", + "BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION=", "BRAVE_SCOPED_ALLOW_BASE_SYNC_PRIMITIVES_H=", "BRAVE_INTERNAL_TRACE_LIST_BUILTIN_CATEGORIES(X)=", ] diff --git a/chromium_src/base/metrics/histogram_functions.h b/chromium_src/base/metrics/histogram_functions.h index f56b8731999..0ad7bc851be 100644 --- a/chromium_src/base/metrics/histogram_functions.h +++ b/chromium_src/base/metrics/histogram_functions.h @@ -12,14 +12,11 @@ // PageActionIconType values are less than T::kMaxValue and it casts the sample // to an unsigned int, so we fail the DCHECK. This override only performs the // DCHECK if the sample is non-negative. -#define BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_STRING_ARG \ - if (static_cast(sample) >= 0) -#define BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_CHAR_POINTER_ARG \ +#define BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION \ if (static_cast(sample) >= 0) #include "src/base/metrics/histogram_functions.h" // IWYU pragma: export -#undef BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_STRING_ARG -#undef BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_CHAR_POINTER_ARG +#undef BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION #endif // BRAVE_CHROMIUM_SRC_BASE_METRICS_HISTOGRAM_FUNCTIONS_H_ diff --git a/patches/base-metrics-histogram_functions.h.patch b/patches/base-metrics-histogram_functions.h.patch index c6739ffcc9f..fff78e9226e 100644 --- a/patches/base-metrics-histogram_functions.h.patch +++ b/patches/base-metrics-histogram_functions.h.patch @@ -1,20 +1,12 @@ diff --git a/base/metrics/histogram_functions.h b/base/metrics/histogram_functions.h -index 0036558c99046529998829e575773fd6e8eb7aaa..fa4b0fab23b5a0af57407401a5e78ca460fc12e2 100644 +index 84d8945c4e027c6c362c365657becb8345e4ef74..ddc1a795964b3e953945642f9b58a62f0c873d1b 100644 --- a/base/metrics/histogram_functions.h +++ b/base/metrics/histogram_functions.h -@@ -75,6 +75,7 @@ void UmaHistogramEnumeration(const std::string& name, T sample) { +@@ -79,6 +79,7 @@ void UmaHistogramEnumeration(std::string_view name, T sample) { static_assert(static_cast(T::kMaxValue) <= static_cast(INT_MAX) - 1, "Enumeration's kMaxValue is out of range of INT_MAX!"); -+ BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_STRING_ARG - DCHECK_LE(static_cast(sample), - static_cast(T::kMaxValue)); - return UmaHistogramExactLinear(name, static_cast(sample), -@@ -89,6 +90,7 @@ void UmaHistogramEnumeration(const char* name, T sample) { - static_assert(static_cast(T::kMaxValue) <= - static_cast(INT_MAX) - 1, - "Enumeration's kMaxValue is out of range of INT_MAX!"); -+ BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION_CHAR_POINTER_ARG ++ BRAVE_HISTOGRAM_FUNCTIONS_UMA_HISTOGRAM_ENUMERATION DCHECK_LE(static_cast(sample), static_cast(T::kMaxValue)); return UmaHistogramExactLinear(name, static_cast(sample),