Files
brave-core/browser/brave_local_state_prefs.cc

298 lines
11 KiB
C++

/* Copyright (c) 2019 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "brave/browser/brave_local_state_prefs.h"
#include <string>
#include "base/values.h"
#include "brave/browser/brave_stats/buildflags.h"
#include "brave/browser/metrics/buildflags/buildflags.h"
#include "brave/browser/metrics/metrics_reporting_util.h"
#include "brave/browser/misc_metrics/process_misc_metrics.h"
#include "brave/browser/misc_metrics/uptime_monitor_impl.h"
#include "brave/browser/search_engines/search_engine_tracker.h"
#include "brave/browser/updater/buildflags.h"
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
#include "brave/components/brave_ads/buildflags/buildflags.h"
#include "brave/components/brave_origin/brave_origin_prefs.h"
#include "brave/components/brave_referrals/browser/brave_referrals_service.h"
#include "brave/components/brave_search/browser/backup_results_metrics.h"
#include "brave/components/brave_search_conversion/p3a.h"
#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_vpn/common/buildflags/buildflags.h"
#include "brave/components/brave_wallet/common/buildflags/buildflags.h"
#include "brave/components/constants/pref_names.h"
#include "brave/components/l10n/common/prefs.h"
#include "brave/components/misc_metrics/general_browser_usage.h"
#include "brave/components/misc_metrics/page_metrics.h"
#include "brave/components/misc_metrics/privacy_hub_metrics.h"
#include "brave/components/misc_metrics/quick_search_metrics.h"
#include "brave/components/ntp_background_images/browser/ntp_background_images_service.h"
#include "brave/components/ntp_background_images/common/view_counter_pref_registry.h"
#include "brave/components/p3a/metric_log_store.h"
#include "brave/components/p3a/p3a_service.h"
#include "brave/components/p3a/rotation_scheduler.h"
#include "brave/components/playlist/core/common/buildflags/buildflags.h"
#include "brave/components/skus/browser/skus_utils.h"
#include "brave/components/speedreader/common/buildflags/buildflags.h"
#include "brave/components/tor/buildflags/buildflags.h"
#include "brave/components/web_discovery/buildflags/buildflags.h"
#include "build/build_config.h"
#include "chrome/common/pref_names.h"
#include "components/metrics/metrics_pref_names.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/webui/chrome_urls/pref_names.h"
#include "third_party/widevine/cdm/buildflags.h"
#if BUILDFLAG(ENABLE_BRAVE_STATS_UPDATER)
#include "brave/browser/brave_stats/brave_stats_updater.h"
#endif
#if BUILDFLAG(ENABLE_PLAYLIST)
#include "brave/browser/playlist/playlist_service_factory.h"
#endif
#if BUILDFLAG(ENABLE_AI_CHAT)
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
#include "brave/components/ai_chat/core/common/pref_names.h"
#endif
#if BUILDFLAG(ENABLE_BRAVE_ADS)
#include "brave/browser/brave_ads/analytics/p3a/brave_stats_helper.h"
#include "brave/components/brave_ads/core/public/prefs/obsolete_pref_util.h"
#include "brave/components/brave_ads/core/public/prefs/pref_registry.h"
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
#include "brave/browser/day_zero_browser_ui_expt/day_zero_browser_ui_expt_manager.h"
#endif
#if BUILDFLAG(ENABLE_TOR)
#include "brave/components/tor/tor_profile_service.h"
#endif
#include "brave/browser/ui/webui/new_tab_page/brave_new_tab_message_handler.h"
#if !BUILDFLAG(IS_ANDROID)
#include "brave/browser/p3a/p3a_core_metrics.h"
#include "brave/browser/search_engines/pref_names.h"
#include "brave/browser/themes/brave_dark_mode_utils.h"
#include "brave/browser/ui/whats_new/whats_new_util.h"
#include "chrome/browser/first_run/first_run.h"
#endif // !BUILDFLAG(IS_ANDROID)
#if defined(TOOLKIT_VIEWS)
#include "brave/browser/onboarding/onboarding_tab_helper.h"
#include "brave/browser/ui/tabs/brave_tab_prefs.h"
#include "brave/components/sidebar/browser/pref_names.h"
#endif
#if BUILDFLAG(ENABLE_BRAVE_VPN)
#include "brave/components/brave_vpn/common/brave_vpn_utils.h"
#endif
#if BUILDFLAG(ENABLE_WEB_DISCOVERY_NATIVE)
#include "brave/components/web_discovery/browser/web_discovery_service.h"
#endif
#if BUILDFLAG(ENABLE_WIDEVINE)
#include "brave/browser/widevine/widevine_utils.h"
#endif
#if BUILDFLAG(ENABLE_SPEEDREADER)
#include "brave/components/speedreader/speedreader_service.h"
#endif
#if BUILDFLAG(IS_WIN)
#include "brave/components/windows_recall/windows_recall.h"
#endif
#if BUILDFLAG(ENABLE_OMAHA4)
#include "brave/browser/updater/updater_p3a.h"
#endif
#if BUILDFLAG(ENABLE_BRAVE_WALLET)
#include "brave/components/brave_wallet/browser/pref_names.h"
#include "brave/components/decentralized_dns/core/utils.h"
#endif
#if !BUILDFLAG(IS_IOS)
#include "brave/components/brave_shields/core/common/pref_names.h"
#endif
namespace brave {
void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
#if !BUILDFLAG(IS_ANDROID)
// Added 10/2022
registry->RegisterBooleanPref(kDefaultBrowserPromptEnabled, true);
// Added 10/2025
dark_mode::RegisterBraveDarkModeLocalStatePrefs(registry);
#endif
misc_metrics::UptimeMonitorImpl::RegisterPrefsForMigration(registry);
#if BUILDFLAG(ENABLE_BRAVE_WALLET)
brave_wallet::RegisterLocalStatePrefsForMigration(registry);
#endif
brave_search_conversion::p3a::RegisterLocalStatePrefsForMigration(registry);
brave_shields::RegisterPrefsForAdBlockServiceForMigration(registry);
#if BUILDFLAG(ENABLE_BRAVE_STATS_UPDATER)
brave_stats::RegisterLocalStatePrefsForMigration(registry);
#endif
p3a::MetricLogStore::RegisterLocalStatePrefsForMigration(registry);
p3a::RotationScheduler::RegisterLocalStatePrefsForMigration(registry);
#if BUILDFLAG(ENABLE_BRAVE_ADS)
brave_ads::RegisterLocalStatePrefsForMigration(registry);
#endif
#if BUILDFLAG(ENABLE_BRAVE_VPN)
brave_vpn::RegisterLocalStatePrefsForMigration(registry);
#endif
ntp_background_images::NTPBackgroundImagesService::
RegisterLocalStatePrefsForMigration(registry);
}
void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
brave_shields::RegisterPrefsForAdBlockService(registry);
// `kStatsReportingEnabled` is the user/policy-facing opt-in for anonymous
// usage pings. It is read by other systems (privacy settings UI, policy
// map, referrals service, SERP tab helper, Brave Origin service) that
// remain compiled in even when the stats updater itself is excluded, so
// it must always be registered.
registry->RegisterBooleanPref(kStatsReportingEnabled, true);
#if BUILDFLAG(ENABLE_BRAVE_STATS_UPDATER)
brave_stats::RegisterLocalStatePrefs(registry);
#endif
brave_origin::RegisterLocalStatePrefs(registry);
ntp_background_images::RegisterLocalStatePrefs(registry);
RegisterPrefsForBraveReferralsService(registry);
brave_l10n::RegisterLocalStatePrefsForMigration(registry);
#if BUILDFLAG(IS_MAC)
// Turn off super annoying 'Hold to quit'
registry->SetDefaultPrefValue(prefs::kConfirmToQuitEnabled,
base::Value(false));
#endif
#if BUILDFLAG(ENABLE_TOR)
tor::TorProfileService::RegisterLocalStatePrefs(registry);
#endif
registry->SetDefaultPrefValue(
metrics::prefs::kMetricsReportingEnabled,
base::Value(GetDefaultPrefValueForMetricsReporting()));
p3a::P3AService::RegisterPrefs(registry,
#if !BUILDFLAG(IS_ANDROID)
first_run::IsChromeFirstRun());
#else
// BraveP3AService::RegisterPrefs
// doesn't use this arg on Android
false);
#endif // !BUILDFLAG(IS_ANDROID)
brave_shields::RegisterShieldsP3ALocalPrefs(registry);
#if !BUILDFLAG(IS_ANDROID)
BraveNewTabMessageHandler::RegisterLocalStatePrefs(registry);
BraveWindowTracker::RegisterPrefs(registry);
whats_new::RegisterLocalStatePrefs(registry);
registry->RegisterBooleanPref(kEnableSearchSuggestionsByDefault, false);
#endif
#if defined(TOOLKIT_VIEWS)
onboarding::RegisterLocalStatePrefs(registry);
registry->RegisterBooleanPref(sidebar::kTargetUserForSidebarEnabledTest,
false);
brave_tabs::RegisterLocalStatePrefs(registry);
#endif
#if BUILDFLAG(ENABLE_CRASH_DIALOG)
registry->RegisterBooleanPref(kDontAskForCrashReporting, false);
#endif
#if BUILDFLAG(ENABLE_WIDEVINE)
RegisterWidevineLocalstatePrefs(registry);
#endif
#if BUILDFLAG(ENABLE_BRAVE_WALLET)
decentralized_dns::RegisterLocalStatePrefs(registry);
#endif
RegisterLocalStatePrefsForMigration(registry);
brave_search_conversion::p3a::RegisterLocalStatePrefs(registry);
SearchEngineTrackerFactory::RegisterLocalStatePrefs(registry);
#if BUILDFLAG(ENABLE_BRAVE_VPN)
brave_vpn::RegisterLocalStatePrefs(registry);
#endif
#if BUILDFLAG(ENABLE_AI_CHAT)
ai_chat::prefs::RegisterLocalStatePrefs(registry);
#endif
skus::RegisterLocalStatePrefs(registry);
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
DayZeroBrowserUIExptManager::RegisterLocalStatePrefs(registry);
#endif
registry->RegisterStringPref(::prefs::kBraveVpnDnsConfig, std::string());
#if BUILDFLAG(ENABLE_BRAVE_WALLET)
brave_wallet::RegisterLocalStatePrefs(registry);
#endif
misc_metrics::ProcessMiscMetrics::RegisterPrefs(registry);
misc_metrics::PageMetrics::RegisterPrefs(registry);
#if BUILDFLAG(ENABLE_AI_CHAT)
ai_chat::AIChatMetrics::RegisterPrefs(registry);
#endif
#if BUILDFLAG(ENABLE_BRAVE_ADS)
brave_ads::BraveStatsHelper::RegisterLocalStatePrefs(registry);
brave_ads::RegisterLocalStatePrefs(registry);
#endif
misc_metrics::GeneralBrowserUsage::RegisterPrefs(registry);
#if BUILDFLAG(IS_ANDROID)
misc_metrics::QuickSearchMetrics::RegisterPrefs(registry);
#endif
brave_search::BackupResultsMetrics::RegisterPrefs(registry);
#if BUILDFLAG(ENABLE_PLAYLIST)
playlist::PlaylistServiceFactory::RegisterLocalStatePrefs(registry);
#endif
#if BUILDFLAG(ENABLE_WEB_DISCOVERY_NATIVE)
web_discovery::WebDiscoveryService::RegisterLocalStatePrefs(registry);
#endif
#if BUILDFLAG(ENABLE_SPEEDREADER)
speedreader::SpeedreaderService::RegisterLocalStatePrefs(registry);
#endif
// Enable seeing internal pages by default (without going to chrome-urls page
// and clicking "Enable internal debugging pages" button).
registry->SetDefaultPrefValue(chrome_urls::kInternalOnlyUisEnabled,
base::Value(true));
#if BUILDFLAG(IS_WIN)
windows_recall::RegisterLocalStatePrefs(registry);
#endif
#if BUILDFLAG(ENABLE_OMAHA4)
brave_updater::RegisterLocalStatePrefs(registry);
#endif
#if !BUILDFLAG(IS_IOS)
registry->RegisterBooleanPref(
brave_shields::prefs::kAllowElementBlockerInPrivateMode, false);
#endif
}
} // namespace brave