diff --git a/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.cc b/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.cc index 9ab1bb091d3..d2663da8579 100644 --- a/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.cc +++ b/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.cc @@ -20,6 +20,7 @@ #include "brave/components/ai_chat/core/common/buildflags/buildflags.h" #include "brave/components/brave_news/common/buildflags/buildflags.h" #include "brave/components/brave_rewards/core/buildflags/buildflags.h" +#include "brave/components/brave_search_conversion/pref_names.h" #include "brave/components/brave_talk/buildflags/buildflags.h" #include "brave/components/brave_vpn/common/buildflags/buildflags.h" #include "brave/components/constants/pref_names.h" @@ -130,6 +131,35 @@ void NewTabPageInitializer::Initialize() { std::make_unique(GetProfile())); } +// static +void NewTabPageInitializer::MigrateProfilePrefs(PrefService* prefs) { + // Added 2026-03: Migrate "hide all widgets" into individual widget prefs. + if (prefs->GetBoolean(kNewTabPageHideAllWidgets)) { + prefs->SetBoolean(kNewTabPageHideAllWidgets, false); + prefs->SetBoolean(kNewTabPageShowRewards, false); +#if BUILDFLAG(ENABLE_BRAVE_TALK) + prefs->SetBoolean(brave_talk::prefs::kNewTabPageShowBraveTalk, false); +#endif +#if BUILDFLAG(ENABLE_BRAVE_VPN) + prefs->SetBoolean(kNewTabPageShowBraveVPN, false); +#endif + } + prefs->ClearPref(kNewTabPageHideAllWidgets); + + // Added 2026-04: Set chat input visibility to hidden if the user has + // explicitly hidden the search input. + using brave_search_conversion::prefs::kMigratedNTPChatInputFromSearch; + using brave_search_conversion::prefs::kShowNTPChatInput; + using brave_search_conversion::prefs::kShowNTPSearchBox; + if (!prefs->GetBoolean(kMigratedNTPChatInputFromSearch)) { + prefs->SetBoolean(kMigratedNTPChatInputFromSearch, true); + if (auto* user_value = prefs->GetUserPrefValue(kShowNTPSearchBox); + user_value && !user_value->GetBool()) { + prefs->SetBoolean(kShowNTPChatInput, false); + } + } +} + Profile* NewTabPageInitializer::GetProfile() { return Profile::FromWebUI(&web_ui_.get()); } diff --git a/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.h b/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.h index 749955d74e6..c99cd80ef48 100644 --- a/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.h +++ b/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.h @@ -20,6 +20,7 @@ namespace regional_capabilities { class RegionalCapabilitiesService; } +class PrefService; class Profile; namespace brave_new_tab_page_refresh { @@ -41,6 +42,9 @@ class NewTabPageInitializer { void Initialize(); + // Migrates profile prefs associated with the NTP. + static void MigrateProfilePrefs(PrefService* prefs); + private: Profile* GetProfile(); diff --git a/chromium_src/chrome/browser/prefs/browser_prefs.cc b/chromium_src/chrome/browser/prefs/browser_prefs.cc index b2ad59b81a1..113d543e78c 100644 --- a/chromium_src/chrome/browser/prefs/browser_prefs.cc +++ b/chromium_src/chrome/browser/prefs/browser_prefs.cc @@ -18,7 +18,6 @@ #include "brave/components/brave_shields/content/browser/ad_block_service.h" #include "brave/components/brave_shields/core/browser/brave_shields_p3a.h" #include "brave/components/brave_sync/brave_sync_prefs.h" -#include "brave/components/brave_talk/buildflags/buildflags.h" #include "brave/components/brave_vpn/common/buildflags/buildflags.h" #include "brave/components/brave_wallet/common/buildflags/buildflags.h" #include "brave/components/constants/pref_names.h" @@ -59,12 +58,9 @@ #include "brave/browser/brave_rewards/rewards_prefs_util.h" #endif -#if BUILDFLAG(ENABLE_BRAVE_TALK) -#include "brave/components/brave_talk/pref_names.h" -#endif - #if !BUILDFLAG(IS_ANDROID) #include "brave/browser/ui/tabs/brave_tab_prefs.h" +#include "brave/browser/ui/webui/brave_new_tab_page_refresh/new_tab_page_initializer.h" #include "brave/browser/ui/webui/welcome_page/brave_welcome_ui_prefs.h" #endif @@ -258,18 +254,10 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, #endif // Added 2026-03 - if (profile_prefs->GetBoolean(kNewTabPageHideAllWidgets)) { - profile_prefs->SetBoolean(kNewTabPageHideAllWidgets, false); - profile_prefs->SetBoolean(kNewTabPageShowRewards, false); -#if BUILDFLAG(ENABLE_BRAVE_TALK) - profile_prefs->SetBoolean(brave_talk::prefs::kNewTabPageShowBraveTalk, - false); +#if !BUILDFLAG(IS_ANDROID) + brave_new_tab_page_refresh::NewTabPageInitializer::MigrateProfilePrefs( + profile_prefs); #endif -#if BUILDFLAG(ENABLE_BRAVE_VPN) - profile_prefs->SetBoolean(kNewTabPageShowBraveVPN, false); -#endif - } - profile_prefs->ClearPref(kNewTabPageHideAllWidgets); // END_MIGRATE_OBSOLETE_PROFILE_PREFS } diff --git a/components/brave_search_conversion/pref_names.h b/components/brave_search_conversion/pref_names.h index c9f7612b0c1..138be95a3f3 100644 --- a/components/brave_search_conversion/pref_names.h +++ b/components/brave_search_conversion/pref_names.h @@ -29,6 +29,9 @@ inline constexpr char kShowNTPSearchBox[] = inline constexpr char kShowNTPChatInput[] = "brave.brave_search.show-ntp-chat"; +inline constexpr char kMigratedNTPChatInputFromSearch[] = + "brave.brave_search.migrated-ntp-chat-from-search"; + inline constexpr char kLastUsedNTPSearchEngine[] = "brave.brave_search.last-used-ntp-search-engine"; diff --git a/components/brave_search_conversion/utils.cc b/components/brave_search_conversion/utils.cc index 5a7d06e5547..9c496ff67ee 100644 --- a/components/brave_search_conversion/utils.cc +++ b/components/brave_search_conversion/utils.cc @@ -172,6 +172,7 @@ void RegisterPrefs(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kDismissed, false); registry->RegisterBooleanPref(prefs::kShowNTPSearchBox, true); registry->RegisterBooleanPref(prefs::kShowNTPChatInput, true); + registry->RegisterBooleanPref(prefs::kMigratedNTPChatInputFromSearch, false); registry->RegisterStringPref(prefs::kLastUsedNTPSearchEngine, "search.brave.com"); registry->RegisterBooleanPref(prefs::kPromptEnableSuggestions, true);