[waffle]Save the guest DSE prepopulated id in a local state pref

We save the prepopulated id of the search engine that is chosen in the
search engine choice dialog while in a guest session.

This will later be used to decide whether the dialog should be
displayed and to set the default search engine in guest mode.

NO_IFTTT=Formatting changes triggered IFTTT

Fixed: b:364233322
Change-Id: Ibb5aa5377d82e26173d6819bed2fdfd737bfdbaf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5832487
Reviewed-by: Nicolas Dossou-Gbété <[email protected]>
Reviewed-by: David Roger <[email protected]>
Commit-Queue: Jack Yammine <[email protected]>
Auto-Submit: Jack Yammine <[email protected]>
Reviewed-by: Arthur Sonzogni <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1351921}
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index f4bb519..5dc4b0f 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -170,6 +170,7 @@
 #include "components/safe_browsing/content/common/file_type_policies_prefs.h"
 #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #include "components/saved_tab_groups/pref_names.h"
+#include "components/search_engines/search_engine_choice/search_engine_choice_service.h"
 #include "components/search_engines/template_url_prepopulate_data.h"
 #include "components/security_interstitials/content/insecure_form_blocking_page.h"
 #include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h"
@@ -1581,6 +1582,7 @@
 #endif
   RegisterScreenshotPrefs(registry);
   safe_browsing::RegisterLocalStatePrefs(registry);
+  search_engines::SearchEngineChoiceService::RegisterLocalStatePrefs(registry);
   secure_origin_allowlist::RegisterPrefs(registry);
   segmentation_platform::SegmentationPlatformService::RegisterLocalStatePrefs(
       registry);
diff --git a/chrome/browser/resources/search_engine_choice/app.html.ts b/chrome/browser/resources/search_engine_choice/app.html.ts
index 7921895..d455e8a 100644
--- a/chrome/browser/resources/search_engine_choice/app.html.ts
+++ b/chrome/browser/resources/search_engine_choice/app.html.ts
@@ -44,7 +44,9 @@
   </cr-radio-group>
 </div>
 <div id="buttonContainer">
-  <cr-checkbox ?hidden="${!this.showGuestCheckbox_}">
+  <cr-checkbox ?hidden="${!this.showGuestCheckbox_}"
+      ?checked="${this.saveGuestModeSearchEngineChoice_}"
+      @checked-changed="${this.onCheckboxStateChange_}">
     $i18n{guestCheckboxText}
   </cr-checkbox>
   <cr-button class="action-button" id="actionButton"
@@ -57,7 +59,8 @@
   </cr-button>
 </div>
 
-${this.showInfoDialog_ ? html`
+${
+      this.showInfoDialog_ ? html`
   <cr-dialog id="infoDialog" show-on-attach>
     <div slot="title">
       <img class="info-dialog-illustration" alt="">
@@ -75,6 +78,7 @@
       </cr-button>
     </div>
   </cr-dialog>
-` : ''}
+` :
+                             ''}
 <!--_html_template_end_-->`;
 }
diff --git a/chrome/browser/resources/search_engine_choice/app.ts b/chrome/browser/resources/search_engine_choice/app.ts
index 70a283d..0fc6092 100644
--- a/chrome/browser/resources/search_engine_choice/app.ts
+++ b/chrome/browser/resources/search_engine_choice/app.ts
@@ -4,6 +4,7 @@
 
 import 'chrome://resources/cr_components/localized_link/localized_link.js';
 import 'chrome://resources/cr_elements/cr_button/cr_button.js';
+import 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.js';
 import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
 import 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.js';
 import 'chrome://resources/cr_elements/cr_radio_group/cr_radio_group.js';
@@ -77,6 +78,7 @@
   protected actionButtonText_: string = '';
   protected showGuestCheckbox_: boolean =
       loadTimeData.getBoolean('showGuestCheckbox');
+  protected saveGuestModeSearchEngineChoice_: boolean = false;
 
   private resizeObserver_: ResizeObserver|null = null;
   private pageHandler_: PageHandlerRemote =
@@ -193,9 +195,15 @@
     this.pageHandler_.handleLearnMoreLinkClicked();
   }
 
+  protected onCheckboxStateChange_(e: CustomEvent<{value: boolean}>) {
+    this.saveGuestModeSearchEngineChoice_ = e.detail.value;
+  }
+
   protected onActionButtonClicked_() {
     if (this.hasUserScrolledToTheBottom_) {
-      this.pageHandler_.handleSearchEngineChoiceSelected(this.selectedChoice_);
+      this.pageHandler_.handleSearchEngineChoiceSelected(
+          this.selectedChoice_,
+          this.showGuestCheckbox_ && this.saveGuestModeSearchEngineChoice_);
       return;
     }
 
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_dialog_browsertest.cc b/chrome/browser/search_engine_choice/search_engine_choice_dialog_browsertest.cc
index 97e9ae6..ce7324b9 100644
--- a/chrome/browser/search_engine_choice/search_engine_choice_dialog_browsertest.cc
+++ b/chrome/browser/search_engine_choice/search_engine_choice_dialog_browsertest.cc
@@ -85,10 +85,12 @@
         });
 
     ON_CALL(*this, NotifyChoiceMade)
-        .WillByDefault([this](int prepopulate_id, EntryPoint entry_point) {
+        .WillByDefault([this](int prepopulate_id,
+                              bool save_guest_mode_selection,
+                              EntryPoint entry_point) {
           number_of_browsers_with_dialogs_open_ = 0;
-          SearchEngineChoiceDialogService::NotifyChoiceMade(prepopulate_id,
-                                                            entry_point);
+          SearchEngineChoiceDialogService::NotifyChoiceMade(
+              prepopulate_id, save_guest_mode_selection, entry_point);
         });
   }
   ~MockSearchEngineChoiceDialogService() override = default;
@@ -111,7 +113,7 @@
   }
 
   MOCK_METHOD(bool, RegisterDialog, (Browser&, base::OnceClosure), (override));
-  MOCK_METHOD(void, NotifyChoiceMade, (int, EntryPoint), (override));
+  MOCK_METHOD(void, NotifyChoiceMade, (int, bool, EntryPoint), (override));
 
  private:
   unsigned int number_of_browsers_with_dialogs_open_ = 0;
@@ -411,7 +413,8 @@
   // Simulate a dialog closing event for the first profile and test that the
   // dialogs for that profile are closed.
   first_profile_service->NotifyChoiceMade(
-      /*prepopulate_id=*/1, EntryPoint::kDialog);
+      /*prepopulate_id=*/1, /*save_guest_mode_selection=*/false,
+      EntryPoint::kDialog);
   CheckDefaultWasSetRecorded();
   EXPECT_FALSE(first_profile_service->IsShowingDialog(
       *first_browser_with_first_profile));
@@ -499,6 +502,7 @@
   // Choose the first search engine to close the dialog.
   TemplateURL* first_search_engine = service->GetSearchEngines().at(0);
   service->NotifyChoiceMade(first_search_engine->prepopulate_id(),
+                            /*save_guest_mode_selection=*/false,
                             EntryPoint::kDialog);
 }
 
@@ -656,7 +660,8 @@
 
   EXPECT_NE(default_search_engine_id, kBingId);
   // Set the pref and simulate a dialog closing event.
-  service->NotifyChoiceMade(kBingId, EntryPoint::kDialog);
+  service->NotifyChoiceMade(kBingId, /*save_guest_mode_selection=*/false,
+                            EntryPoint::kDialog);
   EXPECT_FALSE(service->IsShowingDialog(*browser()));
   histogram_tester().ExpectUniqueSample(
       search_engines::kSearchEngineChoiceScreenDefaultSearchEngineTypeHistogram,
@@ -679,7 +684,7 @@
 
   // Complete the choice for the first guest profile.
   first_service->NotifyChoiceMade(
-      TemplateURLPrepopulateData::bing.id,
+      TemplateURLPrepopulateData::bing.id, /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kDialog);
   EXPECT_FALSE(first_service->IsShowingDialog(*first_guest_session));
 
@@ -778,7 +783,8 @@
     // The first item was Google, pick the second then.
     prepopulate_id = service->GetSearchEngines().at(1)->prepopulate_id();
   }
-  service->NotifyChoiceMade(prepopulate_id, EntryPoint::kDialog);
+  service->NotifyChoiceMade(prepopulate_id, /*save_guest_mode_selection=*/false,
+                            EntryPoint::kDialog);
 
   // Choice prefs have been written.
   ASSERT_NE(profile->GetPrefs()->GetInt64(
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 559bb36..ba4282e 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
@@ -133,8 +133,10 @@
       search_engine_choice_service_(search_engine_choice_service),
       template_url_service_(template_url_service) {}
 
-void SearchEngineChoiceDialogService::NotifyChoiceMade(int prepopulate_id,
-                                                       EntryPoint entry_point) {
+void SearchEngineChoiceDialogService::NotifyChoiceMade(
+    int prepopulate_id,
+    bool save_guest_mode_selection,
+    EntryPoint entry_point) {
   int country_id = search_engine_choice_service_->GetCountryId();
   SCOPED_CRASH_KEY_STRING32(
       "ChoiceService", "choice_country",
@@ -193,6 +195,12 @@
 
     NOTREACHED(base::NotFatalUntil::M127);
   } else {
+    if (base::FeatureList::IsEnabled(
+            switches::kSearchEngineChoiceGuestExperience) &&
+        profile_->IsGuestSession() && save_guest_mode_selection) {
+      g_browser_process->local_state()->SetInt64(
+          prefs::kDefaultSearchProviderGuestModePrepopulatedId, prepopulate_id);
+    }
     template_url_service_->SetUserSelectedDefaultSearchProvider(
         selected_engine, search_engines::ChoiceMadeLocation::kChoiceScreen);
   }
diff --git a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h
index e6767d08..9df7097 100644
--- a/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h
+++ b/chrome/browser/search_engine_choice/search_engine_choice_dialog_service.h
@@ -73,9 +73,13 @@
   // corresponding preferences.
   // `prepopulate_id` is the `prepopulate_id` of the search engine found in
   // `components/search_engines/template_url_data.h`. It will always be > 0.
-  // `entry_point` is the view in which the UI is rendered.
-  // Virtual to be able to mock in tests.
-  virtual void NotifyChoiceMade(int prepopulate_id, EntryPoint entry_point);
+  // `save_guest_mode_selection` will save the guest mode selection so that the
+  // users are not prompted at every guest session launch.
+  // `entry_point` is the view in which the UI is rendered. Virtual to be able
+  // to mock in tests.
+  virtual void NotifyChoiceMade(int prepopulate_id,
+                                bool save_guest_mode_selection,
+                                EntryPoint entry_point);
 
   // Informs the service that the learn more link was clicked. This is used to
   // record histograms. `entry_point` is the view in which the UI is rendered.
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 366fa01..a6dbdd5 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
@@ -293,6 +293,7 @@
 
   search_engine_choice_dialog_service->NotifyChoiceMade(
       TemplateURLPrepopulateData::google.id,
+      /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kDialog);
   histogram_tester().ExpectBucketCount(
       search_engines::kSearchEngineChoiceScreenEventsHistogram,
@@ -309,6 +310,7 @@
 
   search_engine_choice_dialog_service->NotifyChoiceMade(
       TemplateURLPrepopulateData::google.id,
+      /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kFirstRunExperience);
   histogram_tester().ExpectBucketCount(
       search_engines::kSearchEngineChoiceScreenEventsHistogram,
@@ -324,6 +326,7 @@
 
   search_engine_choice_dialog_service->NotifyChoiceMade(
       TemplateURLPrepopulateData::google.id,
+      /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kProfileCreation);
   histogram_tester().ExpectBucketCount(
       search_engines::kSearchEngineChoiceScreenEventsHistogram,
@@ -336,6 +339,55 @@
 }
 
 TEST_F(SearchEngineChoiceDialogServiceTest,
+       NotifyChoiceMade_Guest_SaveSelection) {
+  base::test::ScopedFeatureList feature_list{
+      switches::kSearchEngineChoiceGuestExperience};
+
+  EXPECT_FALSE(g_browser_process->local_state()->HasPrefPath(
+      prefs::kDefaultSearchProviderGuestModePrepopulatedId));
+
+  SearchEngineChoiceDialogService* search_engine_choice_dialog_service =
+      SearchEngineChoiceDialogServiceFactory::GetForProfile(profile());
+  profile()->SetGuestSession(/*guest=*/true);
+
+  const int kPrepopulatedId =
+      search_engine_choice_dialog_service->GetSearchEngines()
+          .at(0)
+          ->prepopulate_id();
+
+  search_engine_choice_dialog_service->NotifyChoiceMade(
+      kPrepopulatedId, /*save_guest_mode_selection=*/true,
+      SearchEngineChoiceDialogService::EntryPoint::kDialog);
+  EXPECT_EQ(g_browser_process->local_state()->GetInt64(
+                prefs::kDefaultSearchProviderGuestModePrepopulatedId),
+            kPrepopulatedId);
+}
+
+TEST_F(SearchEngineChoiceDialogServiceTest,
+       NotifyChoiceMade_Guest_DontSaveSelection) {
+  base::test::ScopedFeatureList feature_list{
+      switches::kSearchEngineChoiceGuestExperience};
+
+  EXPECT_FALSE(g_browser_process->local_state()->HasPrefPath(
+      prefs::kDefaultSearchProviderGuestModePrepopulatedId));
+
+  SearchEngineChoiceDialogService* search_engine_choice_dialog_service =
+      SearchEngineChoiceDialogServiceFactory::GetForProfile(profile());
+  profile()->SetGuestSession(/*guest=*/true);
+
+  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));
+}
+
+TEST_F(SearchEngineChoiceDialogServiceTest,
        DoNotDisplayDialogIfPolicyIsSetDynamically) {
   SearchEngineChoiceDialogService* search_engine_choice_dialog_service =
       GetSearchEngineChoiceDialogService();
@@ -368,7 +420,8 @@
   int prepopulate_id =
       parent_profile_choice_service->GetSearchEngines().at(0)->prepopulate_id();
   parent_profile_choice_service->NotifyChoiceMade(
-      prepopulate_id, SearchEngineChoiceDialogService::EntryPoint::kDialog);
+      prepopulate_id, /*save_guest_mode_selection=*/false,
+      SearchEngineChoiceDialogService::EntryPoint::kDialog);
 
   EXPECT_EQ(TemplateURLServiceFactory::GetForProfile(profile())
                 ->GetDefaultSearchProvider()
@@ -395,7 +448,8 @@
                            .at(0)
                            ->prepopulate_id();
   incognito_profile_choice_service->NotifyChoiceMade(
-      prepopulate_id, SearchEngineChoiceDialogService::EntryPoint::kDialog);
+      prepopulate_id, /*save_guest_mode_selection=*/false,
+      SearchEngineChoiceDialogService::EntryPoint::kDialog);
 
   EXPECT_EQ(TemplateURLServiceFactory::GetForProfile(incognito_profile)
                 ->GetDefaultSearchProvider()
@@ -430,7 +484,8 @@
       search_engine_choice_service->GetSearchEngines().at(0)->prepopulate_id();
 
   search_engine_choice_service->NotifyChoiceMade(
-      prepopulated_id, SearchEngineChoiceDialogService::EntryPoint::kDialog);
+      prepopulated_id, /*save_guest_mode_selection=*/false,
+      SearchEngineChoiceDialogService::EntryPoint::kDialog);
   EXPECT_TRUE(search_engine_choice_service->CanSuppressPrivacySandboxPromo());
 }
 
@@ -442,7 +497,7 @@
       search_engine_choice_service->GetSearchEngines().at(0)->prepopulate_id();
 
   search_engine_choice_service->NotifyChoiceMade(
-      prepopulated_id,
+      prepopulated_id, /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kFirstRunExperience);
   EXPECT_FALSE(search_engine_choice_service->CanSuppressPrivacySandboxPromo());
 }
@@ -455,7 +510,7 @@
       search_engine_choice_service->GetSearchEngines().at(0)->prepopulate_id();
 
   search_engine_choice_service->NotifyChoiceMade(
-      prepopulated_id,
+      prepopulated_id, /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kProfileCreation);
   EXPECT_FALSE(search_engine_choice_service->CanSuppressPrivacySandboxPromo());
 }
diff --git a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper_browsertest.cc b/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper_browsertest.cc
index d10192c0..cecdc11 100644
--- a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper_browsertest.cc
+++ b/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper_browsertest.cc
@@ -603,7 +603,7 @@
       SearchEngineChoiceDialogServiceFactory::GetForProfile(
           browser()->profile());
   search_engine_choice_dialog_service->NotifyChoiceMade(
-      /*prepopulate_id=*/1,
+      /*prepopulate_id=*/1, /*save_guest_mode_selection=*/false,
       SearchEngineChoiceDialogService::EntryPoint::kDialog);
 
   // Make sure that the Privacy Sandbox prompt doesn't get displayed on the next
diff --git a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice.mojom b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice.mojom
index 678b9a52..8580b11 100644
--- a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice.mojom
+++ b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice.mojom
@@ -21,17 +21,19 @@
     kAtTheBottomWithErrorMargin = 1,
     kNotAtTheBottom = 2,
   };
-// LINT.ThenChange(/tools/metrics/histograms/enums.xml:SearchEngineChoiceScrollState)
+
+  // LINT.ThenChange(/tools/metrics/histograms/enums.xml:SearchEngineChoiceScrollState)
 
   // Displays the Search Engine Choice dialog.
   // Triggered by the `displayDialog()` call in
   // `chrome/browser/resources/search_engine_choice/app.ts`
   DisplayDialog();
 
-  // Changes the search engine based on the user's choice.
-  // Triggered by the `handleSearchEngineChoiceSelected()` call in
-  // `chrome/browser/resources/search_engine_choice/app.ts`
-  HandleSearchEngineChoiceSelected(int32 prepopulate_id);
+  // Updates the search engine based on the user's selection.
+  // If `save_guest_mode_selection` is true, also saves the search engine
+  // preference for future guest mode sessions.
+  HandleSearchEngineChoiceSelected(
+      int32 prepopulate_id, bool save_guest_mode_selection);
 
   // Notifies the `SearchEngineChoiceDialogService` that the learn more link was
   // clicked.
diff --git a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.cc b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.cc
index ef8964a..2099951 100644
--- a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.cc
+++ b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.cc
@@ -11,7 +11,7 @@
 SearchEngineChoiceHandler::SearchEngineChoiceHandler(
     mojo::PendingReceiver<search_engine_choice::mojom::PageHandler> receiver,
     base::OnceCallback<void()> display_dialog_callback,
-    base::OnceCallback<void(int)> handle_choice_selected_callback,
+    base::OnceCallback<void(int, bool)> handle_choice_selected_callback,
     base::RepeatingCallback<void()> handle_learn_more_clicked_callback,
     base::OnceCallback<void()> handle_more_button_clicked_callback)
     : receiver_(this, std::move(receiver)),
@@ -37,9 +37,11 @@
 }
 
 void SearchEngineChoiceHandler::HandleSearchEngineChoiceSelected(
-    int prepopulate_id) {
+    int prepopulate_id,
+    bool save_guest_mode_selection) {
   if (handle_choice_selected_callback_) {
-    std::move(handle_choice_selected_callback_).Run(prepopulate_id);
+    std::move(handle_choice_selected_callback_)
+        .Run(prepopulate_id, save_guest_mode_selection);
   }
 }
 
diff --git a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.h b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.h
index 932a759..23393a5c2 100644
--- a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.h
+++ b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_handler.h
@@ -16,7 +16,7 @@
   explicit SearchEngineChoiceHandler(
       mojo::PendingReceiver<search_engine_choice::mojom::PageHandler> receiver,
       base::OnceCallback<void()> display_dialog_callback,
-      base::OnceCallback<void(int)> handle_choice_selected_callback,
+      base::OnceCallback<void(int, bool)> handle_choice_selected_callback,
       base::RepeatingCallback<void()> handle_learn_more_clicked_callback,
       base::OnceCallback<void()> handle_more_button_clicked_callback);
 
@@ -28,7 +28,9 @@
 
   // search_engine_choice::mojom::PageHandler:
   void DisplayDialog() override;
-  void HandleSearchEngineChoiceSelected(int32_t prepopulate_id) override;
+  void HandleSearchEngineChoiceSelected(
+      int32_t prepopulate_id,
+      bool save_guest_mode_selection) override;
   void HandleLearnMoreLinkClicked() override;
   void HandleMoreButtonClicked() override;
   void RecordScrollState(search_engine_choice::mojom::PageHandler_ScrollState
@@ -37,7 +39,7 @@
  private:
   mojo::Receiver<search_engine_choice::mojom::PageHandler> receiver_;
   base::OnceCallback<void()> display_dialog_callback_;
-  base::OnceCallback<void(int)> handle_choice_selected_callback_;
+  base::OnceCallback<void(int, bool)> handle_choice_selected_callback_;
   base::RepeatingCallback<void()> handle_learn_more_clicked_callback_;
   base::OnceCallback<void()> handle_more_button_clicked_callback_;
 };
diff --git a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.cc b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.cc
index d92938b8..c320671 100644
--- a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.cc
+++ b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.cc
@@ -162,7 +162,9 @@
   }
 }
 
-void SearchEngineChoiceUI::HandleSearchEngineChoiceMade(int prepopulate_id) {
+void SearchEngineChoiceUI::HandleSearchEngineChoiceMade(
+    int prepopulate_id,
+    bool save_guest_mode_selection) {
   if (entry_point_ != SearchEngineChoiceDialogService::EntryPoint::kDialog) {
     // If this callback is null, then this method has already been called, which
     // is a bug. (Or the initialization was skipped, but that would point to
@@ -173,8 +175,8 @@
 
   SearchEngineChoiceDialogService* search_engine_choice_dialog_service =
       SearchEngineChoiceDialogServiceFactory::GetForProfile(&profile_.get());
-  search_engine_choice_dialog_service->NotifyChoiceMade(prepopulate_id,
-                                                        entry_point_);
+  search_engine_choice_dialog_service->NotifyChoiceMade(
+      prepopulate_id, save_guest_mode_selection, entry_point_);
 
   // Notify that the choice was made.
   if (on_choice_made_callback_) {
diff --git a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h
index c1f65729..776a314 100644
--- a/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h
+++ b/chrome/browser/ui/webui/search_engine_choice/search_engine_choice_ui.h
@@ -51,7 +51,8 @@
       override;
 
   // Notifies the search engine choice service that a choice has been made.
-  void HandleSearchEngineChoiceMade(int prepopulate_id);
+  void HandleSearchEngineChoiceMade(int prepopulate_id,
+                                    bool save_guest_mode_selection);
 
   // Notifies the search engine choice service that the learn more link was
   // clicked.