[waffle] Add metrics for guest search engine choice
Record whether saving the DSE is available and what was the selection.
Bug: 372870900
Change-Id: I3e9ca1538d244d3fcc9b3b807660f4140cd0e30c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5923518
Auto-Submit: Christian Dullweber <dullweber@chromium.org>
Reviewed-by: Nicolas Dossou-Gbété <dgn@chromium.org>
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Reviewed-by: Tomasz Wiszkowski <ender@google.com>
Cr-Commit-Position: refs/heads/main@{#1368157}
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.cc b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.cc
index bafcb65..1e1f839 100644
--- a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.cc
+++ b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.cc
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/debug/crash_logging.h"
+#include "base/metrics/histogram_functions.h"
#include "base/not_fatal_until.h"
#include "base/notreached.h"
#include "base/strings/utf_string_conversions.h"
@@ -195,9 +196,18 @@
NOTREACHED(base::NotFatalUntil::M127);
} else {
- if (search_engine_choice_service_
- ->IsProfileEligibleForDseGuestPropagation() &&
- save_guest_mode_selection) {
+ bool is_guest_mode_propagation_allowed =
+ search_engine_choice_service_
+ ->IsProfileEligibleForDseGuestPropagation();
+ if (profile_->IsGuestSession()) {
+ base::UmaHistogramBoolean("Search.SaveGuestModeEligible",
+ is_guest_mode_propagation_allowed);
+ }
+ if (is_guest_mode_propagation_allowed) {
+ base::UmaHistogramBoolean("Search.SaveGuestModeSelection",
+ save_guest_mode_selection);
+ }
+ if (is_guest_mode_propagation_allowed && save_guest_mode_selection) {
search_engine_choice_service_->SetSavedSearchEngineBetweenGuestSessions(
prepopulate_id);
}
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc
index 03eb1f2..6a1c6eea 100644
--- a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc
+++ b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service_unittest.cc
@@ -399,6 +399,48 @@
SearchEngineChoiceDialogService::EntryPoint::kDialog);
EXPECT_FALSE(g_browser_process->local_state()->HasPrefPath(
prefs::kDefaultSearchProviderGuestModePrepopulatedId));
+
+ histogram_tester().ExpectUniqueSample("Search.SaveGuestModeEligible", true,
+ 1);
+ histogram_tester().ExpectUniqueSample("Search.SaveGuestModeSelection", false,
+ 1);
+}
+
+TEST_F(SearchEngineChoiceDialogServiceTest,
+ NotifyChoiceMade_Guest_SavingNotAvailable) {
+ base::test::ScopedFeatureList feature_list{
+ switches::kSearchEngineChoiceGuestExperience};
+
+ EXPECT_FALSE(g_browser_process->local_state()->HasPrefPath(
+ prefs::kDefaultSearchProviderGuestModePrepopulatedId));
+
+ TestingProfile* parent_guest = profile_manager()->CreateGuestProfile();
+ Profile* child_guest = parent_guest->GetOffTheRecordProfile(
+ Profile::OTRProfileID::PrimaryID(), false);
+
+ TemplateURLServiceFactory::GetInstance()->SetTestingFactory(
+ parent_guest,
+ base::BindRepeating(&TemplateURLServiceFactory::BuildInstanceFor));
+
+ search_engines::SearchEngineChoiceServiceFactory::GetForProfile(child_guest)
+ ->SetIsProfileEligibleForDseGuestPropagationForTesting(false);
+
+ SearchEngineChoiceDialogService* search_engine_choice_dialog_service =
+ SearchEngineChoiceDialogServiceFactory::GetForProfile(child_guest);
+ const int kPrepopulatedId =
+ search_engine_choice_dialog_service->GetSearchEngines()
+ .at(0)
+ ->prepopulate_id();
+
+ search_engine_choice_dialog_service->NotifyChoiceMade(
+ kPrepopulatedId, /*save_guest_mode_selection=*/false,
+ SearchEngineChoiceDialogService::EntryPoint::kDialog);
+ EXPECT_FALSE(g_browser_process->local_state()->HasPrefPath(
+ prefs::kDefaultSearchProviderGuestModePrepopulatedId));
+
+ histogram_tester().ExpectUniqueSample("Search.SaveGuestModeEligible", false,
+ 1);
+ histogram_tester().ExpectTotalCount("Search.SaveGuestModeSelection", 0);
}
TEST_F(SearchEngineChoiceDialogServiceTest,
diff --git a/tools/metrics/histograms/metadata/search/histograms.xml b/tools/metrics/histograms/metadata/search/histograms.xml
index 3b15558..d11a06c 100644
--- a/tools/metrics/histograms/metadata/search/histograms.xml
+++ b/tools/metrics/histograms/metadata/search/histograms.xml
@@ -1260,6 +1260,29 @@
</summary>
</histogram>
+<histogram name="Search.SaveGuestModeEligible" enum="BooleanEligible"
+ expires_after="2025-04-06">
+ <owner>dullweber@chromium.org</owner>
+ <owner>chrome-waffle-eng@google.com</owner>
+ <summary>
+ Records whether the guest profile that showed a search engine choice dialog
+ is eligible to save the chosen search engine for future guest sessions. Only
+ eligible profiles show a checkbox that allows users to save their selection.
+ Recorded when users confirm the search engine choice dialog in guest mode.
+ </summary>
+</histogram>
+
+<histogram name="Search.SaveGuestModeSelection" enum="BooleanYesNo"
+ expires_after="2025-04-06">
+ <owner>dullweber@chromium.org</owner>
+ <owner>chrome-waffle-eng@google.com</owner>
+ <summary>
+ Records whether users chose to save the Guest search engine. Recorded for
+ profiles that are eligible for saving the guest search engine when the
+ search engine choice dialog is confirmed.
+ </summary>
+</histogram>
+
<histogram name="Search.SearchEngineCountryDelegate.Connection{Result}Time"
units="ms" expires_after="2025-03-02">
<owner>triploblastic@chromium.org</owner>