Commit a29e1ff8 authored by Demetrios Papadopoulos's avatar Demetrios Papadopoulos Committed by Commit Bot

SplitSettings: Move OS specific handler init to os_settings_ui.cc.

Also stop subclassing MojoWebUIController from SettingsUI on CrOS,
since it is no longer needed.

Bug: 990166
Change-Id: I4966e2aac58cba46d0245025037b878f77b07397
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1992989Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarChris Palmer <palmer@chromium.org>
Auto-Submit: Demetrios Papadopoulos <dpapad@chromium.org>
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#730042}
parent d2211121
...@@ -121,7 +121,6 @@ ...@@ -121,7 +121,6 @@
#include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h" #include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h"
#include "chrome/browser/ui/webui/chromeos/network_ui.h" #include "chrome/browser/ui/webui/chromeos/network_ui.h"
#include "chrome/browser/ui/webui/settings/chromeos/os_settings_ui.h" #include "chrome/browser/ui/webui/settings/chromeos/os_settings_ui.h"
#include "chrome/browser/ui/webui/settings/settings_ui.h"
#include "chromeos/components/multidevice/debug_webui/proximity_auth_ui.h" #include "chromeos/components/multidevice/debug_webui/proximity_auth_ui.h"
#include "chromeos/services/cellular_setup/public/mojom/cellular_setup.mojom.h" #include "chromeos/services/cellular_setup/public/mojom/cellular_setup.mojom.h"
#include "chromeos/services/multidevice_setup/multidevice_setup_service.h" #include "chromeos/services/multidevice_setup/multidevice_setup_service.h"
...@@ -523,8 +522,8 @@ void PopulateChromeWebUIFrameBinders( ...@@ -523,8 +522,8 @@ void PopulateChromeWebUIFrameBinders(
RegisterWebUIControllerInterfaceBinder< RegisterWebUIControllerInterfaceBinder<
chromeos::network_config::mojom::CrosNetworkConfig, chromeos::network_config::mojom::CrosNetworkConfig,
chromeos::InternetConfigDialogUI, chromeos::InternetDetailDialogUI, chromeos::InternetConfigDialogUI, chromeos::InternetDetailDialogUI,
chromeos::NetworkUI, chromeos::OobeUI, chromeos::settings::OSSettingsUI, chromeos::NetworkUI, chromeos::OobeUI, chromeos::settings::OSSettingsUI>(
settings::SettingsUI>(map); map);
#endif #endif
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
......
...@@ -11,14 +11,28 @@ ...@@ -11,14 +11,28 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include "ash/public/cpp/ash_features.h"
#include "ash/public/cpp/network_config_service.h" #include "ash/public/cpp/network_config_service.h"
#include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h" #include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h"
#include "ash/public/cpp/stylus_utils.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/feature_list.h" #include "base/feature_list.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_process_platform_part.h"
#include "chrome/browser/chromeos/account_manager/account_manager_util.h"
#include "chrome/browser/chromeos/arc/arc_util.h"
#include "chrome/browser/chromeos/crostini/crostini_features.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
#include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h"
#include "chrome/browser/chromeos/plugin_vm/plugin_vm_util.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/ui/web_applications/system_web_app_ui_utils.h" #include "chrome/browser/ui/web_applications/system_web_app_ui_utils.h"
#include "chrome/browser/ui/webui/app_management/app_management.mojom.h" #include "chrome/browser/ui/webui/app_management/app_management.mojom.h"
#include "chrome/browser/ui/webui/app_management/app_management_page_handler.h" #include "chrome/browser/ui/webui/app_management/app_management_page_handler.h"
#include "chrome/browser/ui/webui/chromeos/smb_shares/smb_handler.h"
#include "chrome/browser/ui/webui/chromeos/sync/os_sync_handler.h" #include "chrome/browser/ui/webui/chromeos/sync/os_sync_handler.h"
#include "chrome/browser/ui/webui/managed_ui_handler.h" #include "chrome/browser/ui/webui/managed_ui_handler.h"
#include "chrome/browser/ui/webui/metrics_handler.h" #include "chrome/browser/ui/webui/metrics_handler.h"
...@@ -26,7 +40,25 @@ ...@@ -26,7 +40,25 @@
#include "chrome/browser/ui/webui/settings/about_handler.h" #include "chrome/browser/ui/webui/settings/about_handler.h"
#include "chrome/browser/ui/webui/settings/accessibility_main_handler.h" #include "chrome/browser/ui/webui/settings/accessibility_main_handler.h"
#include "chrome/browser/ui/webui/settings/browser_lifetime_handler.h" #include "chrome/browser/ui/webui/settings/browser_lifetime_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/accessibility_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/change_picture_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/crostini_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/date_time_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_keyboard_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_pointer_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_power_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_stylus_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/google_assistant_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/internet_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/kerberos_accounts_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/parental_controls_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/parental_controls_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/plugin_vm_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/wallpaper_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/wallpaper_handler.h"
#include "chrome/browser/ui/webui/settings/downloads_handler.h" #include "chrome/browser/ui/webui/settings/downloads_handler.h"
#include "chrome/browser/ui/webui/settings/extension_control_handler.h" #include "chrome/browser/ui/webui/settings/extension_control_handler.h"
...@@ -40,7 +72,7 @@ ...@@ -40,7 +72,7 @@
#include "chrome/browser/ui/webui/settings/settings_cookies_view_handler.h" #include "chrome/browser/ui/webui/settings/settings_cookies_view_handler.h"
#include "chrome/browser/ui/webui/settings/settings_localized_strings_provider.h" #include "chrome/browser/ui/webui/settings/settings_localized_strings_provider.h"
#include "chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h" #include "chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h"
#include "chrome/browser/ui/webui/settings/settings_ui.h" #include "chrome/browser/ui/webui/settings/tts_handler.h"
#include "chrome/browser/web_applications/system_web_app_manager.h" #include "chrome/browser/web_applications/system_web_app_manager.h"
#include "chrome/common/chrome_features.h" #include "chrome/common/chrome_features.h"
#include "chrome/common/webui_url_constants.h" #include "chrome/common/webui_url_constants.h"
...@@ -48,11 +80,19 @@ ...@@ -48,11 +80,19 @@
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "chrome/grit/os_settings_resources.h" #include "chrome/grit/os_settings_resources.h"
#include "chrome/grit/os_settings_resources_map.h" #include "chrome/grit/os_settings_resources_map.h"
#include "chromeos/components/account_manager/account_manager.h"
#include "chromeos/components/account_manager/account_manager_factory.h"
#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_features.h"
#include "chromeos/constants/chromeos_pref_names.h"
#include "chromeos/login/auth/password_visibility_utils.h"
#include "chromeos/services/multidevice_setup/public/cpp/prefs.h"
#include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h" #include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h"
#include "components/password_manager/core/common/password_manager_features.h" #include "components/password_manager/core/common/password_manager_features.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_data_source.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "ui/chromeos/resources/grit/ui_chromeos_resources.h"
#include "ui/resources/grit/webui_resources.h"
namespace chromeos { namespace chromeos {
namespace settings { namespace settings {
...@@ -66,7 +106,7 @@ OSSettingsUI::OSSettingsUI(content::WebUI* web_ui) ...@@ -66,7 +106,7 @@ OSSettingsUI::OSSettingsUI(content::WebUI* web_ui)
content::WebUIDataSource* html_source = content::WebUIDataSource* html_source =
content::WebUIDataSource::Create(chrome::kChromeUIOSSettingsHost); content::WebUIDataSource::Create(chrome::kChromeUIOSSettingsHost);
::settings::SettingsUI::InitOSWebUIHandlers(profile, web_ui, html_source); OSSettingsUI::InitOSWebUIHandlers(profile, web_ui, html_source);
// This handler is for chrome://os-settings. // This handler is for chrome://os-settings.
html_source->AddBoolean("isOSSettings", true); html_source->AddBoolean("isOSSettings", true);
...@@ -176,6 +216,181 @@ OSSettingsUI::OSSettingsUI(content::WebUI* web_ui) ...@@ -176,6 +216,181 @@ OSSettingsUI::OSSettingsUI(content::WebUI* web_ui)
OSSettingsUI::~OSSettingsUI() = default; OSSettingsUI::~OSSettingsUI() = default;
void OSSettingsUI::InitOSWebUIHandlers(Profile* profile,
content::WebUI* web_ui,
content::WebUIDataSource* html_source) {
// TODO(jamescook): Sort out how account management is split between Chrome OS
// and browser settings.
if (chromeos::IsAccountManagerAvailable(profile)) {
chromeos::AccountManagerFactory* factory =
g_browser_process->platform_part()->GetAccountManagerFactory();
chromeos::AccountManager* account_manager =
factory->GetAccountManager(profile->GetPath().value());
DCHECK(account_manager);
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::AccountManagerUIHandler>(
account_manager, IdentityManagerFactory::GetForProfile(profile)));
html_source->AddBoolean(
"secondaryGoogleAccountSigninAllowed",
profile->GetPrefs()->GetBoolean(
chromeos::prefs::kSecondaryGoogleAccountSigninAllowed));
}
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::ChangePictureHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::AccessibilityHandler>(web_ui));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::AndroidAppsHandler>(profile));
if (crostini::CrostiniFeatures::Get()->IsUIAllowed(profile,
/*check_policy=*/false)) {
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::CrostiniHandler>(profile));
}
web_ui->AddMessageHandler(
chromeos::settings::CupsPrintersHandler::Create(web_ui));
web_ui->AddMessageHandler(base::WrapUnique(
chromeos::settings::DateTimeHandler::Create(html_source)));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::FingerprintHandler>(profile));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::GoogleAssistantHandler>(profile));
std::unique_ptr<chromeos::settings::KerberosAccountsHandler>
kerberos_accounts_handler =
chromeos::settings::KerberosAccountsHandler::CreateIfKerberosEnabled(
profile);
if (kerberos_accounts_handler) {
// Note that the UI is enabled only if Kerberos is enabled.
web_ui->AddMessageHandler(std::move(kerberos_accounts_handler));
}
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::KeyboardHandler>());
// TODO(crbug/950007): Remove adding WallpaperHandler when
// SplitSettings complete.
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::WallpaperHandler>(web_ui));
if (plugin_vm::IsPluginVmEnabled(profile)) {
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::PluginVmHandler>(profile));
}
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::PointerHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::StorageHandler>(profile,
html_source));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::StylusHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::InternetHandler>(profile));
web_ui->AddMessageHandler(std::make_unique<::settings::TtsHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::smb_dialog::SmbHandler>(profile));
if (!profile->IsGuestSession()) {
chromeos::android_sms::AndroidSmsService* android_sms_service =
chromeos::android_sms::AndroidSmsServiceFactory::GetForBrowserContext(
profile);
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::MultideviceHandler>(
profile->GetPrefs(),
chromeos::multidevice_setup::MultiDeviceSetupClientFactory::
GetForProfile(profile),
android_sms_service
? android_sms_service->android_sms_pairing_state_tracker()
: nullptr,
android_sms_service ? android_sms_service->android_sms_app_manager()
: nullptr));
if (chromeos::settings::ShouldShowParentalControls(profile)) {
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::ParentalControlsHandler>(
profile));
}
}
html_source->AddBoolean(
"multideviceAllowedByPolicy",
chromeos::multidevice_setup::AreAnyMultiDeviceFeaturesAllowed(
profile->GetPrefs()));
html_source->AddBoolean(
"quickUnlockEnabled",
chromeos::quick_unlock::IsPinEnabled(profile->GetPrefs()));
html_source->AddBoolean(
"quickUnlockDisabledByPolicy",
chromeos::quick_unlock::IsPinDisabledByPolicy(profile->GetPrefs()));
html_source->AddBoolean(
"userCannotManuallyEnterPassword",
!chromeos::password_visibility::AccountHasUserFacingPassword(
chromeos::ProfileHelper::Get()
->GetUserByProfile(profile)
->GetAccountId()));
const bool fingerprint_unlock_enabled =
chromeos::quick_unlock::IsFingerprintEnabled(profile);
html_source->AddBoolean("fingerprintUnlockEnabled",
fingerprint_unlock_enabled);
if (fingerprint_unlock_enabled) {
html_source->AddInteger(
"fingerprintReaderLocation",
static_cast<int32_t>(chromeos::quick_unlock::GetFingerprintLocation()));
// To use lottie, the worker-src CSP needs to be updated for the web ui that
// is using it. Since as of now there are only a couple of webuis using
// lottie animations, this update has to be performed manually. As the usage
// increases, set this as the default so manual override is no longer
// required.
html_source->OverrideContentSecurityPolicyWorkerSrc(
"worker-src blob: 'self';");
html_source->AddResourcePath("finger_print.json",
IDR_LOGIN_FINGER_PRINT_TABLET_ANIMATION);
}
html_source->AddBoolean("lockScreenNotificationsEnabled",
ash::features::IsLockScreenNotificationsEnabled());
html_source->AddBoolean(
"lockScreenHideSensitiveNotificationsSupported",
ash::features::IsLockScreenHideSensitiveNotificationsSupported());
html_source->AddBoolean("showTechnologyBadge",
!ash::features::IsSeparateNetworkIconsEnabled());
html_source->AddBoolean("hasInternalStylus",
ash::stylus_utils::HasInternalStylus());
html_source->AddBoolean("showCrostini",
crostini::CrostiniFeatures::Get()->IsUIAllowed(
profile, /*check_policy=*/false));
html_source->AddBoolean(
"allowCrostini", crostini::CrostiniFeatures::Get()->IsUIAllowed(profile));
html_source->AddBoolean("showPluginVm",
plugin_vm::IsPluginVmEnabled(profile));
html_source->AddBoolean("isDemoSession",
chromeos::DemoSession::IsDeviceInDemoMode());
// We have 2 variants of Android apps settings. Default case, when the Play
// Store app exists we show expandable section that allows as to
// enable/disable the Play Store and link to Android settings which is
// available once settings app is registered in the system.
// For AOSP images we don't have the Play Store app. In last case we Android
// apps settings consists only from root link to Android settings and only
// visible once settings app is registered.
html_source->AddBoolean("androidAppsVisible",
arc::IsArcAllowedForProfile(profile));
html_source->AddBoolean("havePlayStoreApp", arc::IsPlayStoreAvailable());
html_source->AddBoolean("enablePowerSettings", true);
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::PowerHandler>(profile->GetPrefs()));
html_source->AddBoolean(
"showParentalControlsSettings",
chromeos::settings::ShouldShowParentalControls(profile));
}
void OSSettingsUI::AddSettingsPageUIHandler( void OSSettingsUI::AddSettingsPageUIHandler(
std::unique_ptr<content::WebUIMessageHandler> handler) { std::unique_ptr<content::WebUIMessageHandler> handler) {
DCHECK(handler); DCHECK(handler);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "ui/webui/mojo_web_ui_controller.h" #include "ui/webui/mojo_web_ui_controller.h"
namespace content { namespace content {
class WebUIDataSource;
class WebUIMessageHandler; class WebUIMessageHandler;
} }
...@@ -28,6 +29,11 @@ class OSSettingsUI : public ui::MojoWebUIController { ...@@ -28,6 +29,11 @@ class OSSettingsUI : public ui::MojoWebUIController {
explicit OSSettingsUI(content::WebUI* web_ui); explicit OSSettingsUI(content::WebUI* web_ui);
~OSSettingsUI() override; ~OSSettingsUI() override;
// Initializes the WebUI message handlers for OS-specific settings.
static void InitOSWebUIHandlers(Profile* profile,
content::WebUI* web_ui,
content::WebUIDataSource* html_source);
// Instantiates implementor of the mojom::CrosNetworkConfig mojo interface // Instantiates implementor of the mojom::CrosNetworkConfig mojo interface
// passing the pending receiver that will be internally bound. // passing the pending receiver that will be internally bound.
void BindInterface( void BindInterface(
......
...@@ -78,61 +78,29 @@ ...@@ -78,61 +78,29 @@
#if defined(OS_WIN) || defined(OS_CHROMEOS) #if defined(OS_WIN) || defined(OS_CHROMEOS)
#include "chrome/browser/ui/webui/settings/languages_handler.h" #include "chrome/browser/ui/webui/settings/languages_handler.h"
#include "chrome/browser/ui/webui/settings/tts_handler.h"
#endif // defined(OS_WIN) || defined(OS_CHROMEOS) #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
#include "ash/public/cpp/network_config_service.h"
#include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h"
#include "ash/public/cpp/stylus_utils.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/browser_process_platform_part.h"
#include "chrome/browser/chromeos/account_manager/account_manager_util.h" #include "chrome/browser/chromeos/account_manager/account_manager_util.h"
#include "chrome/browser/chromeos/android_sms/android_sms_app_manager.h" #include "chrome/browser/chromeos/android_sms/android_sms_app_manager.h"
#include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h" #include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h"
#include "chrome/browser/chromeos/arc/arc_util.h"
#include "chrome/browser/chromeos/crostini/crostini_features.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
#include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h" #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h"
#include "chrome/browser/chromeos/plugin_vm/plugin_vm_util.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/ui/webui/chromeos/smb_shares/smb_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/accessibility_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/change_picture_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/crostini_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/date_time_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_keyboard_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_pointer_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_power_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/device_stylus_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/fingerprint_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/google_assistant_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/internet_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/kerberos_accounts_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/multidevice_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/parental_controls_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/parental_controls_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/plugin_vm_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/wallpaper_handler.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#include "chrome/grit/browser_resources.h"
#include "chromeos/components/account_manager/account_manager.h" #include "chromeos/components/account_manager/account_manager.h"
#include "chromeos/components/account_manager/account_manager_factory.h" #include "chromeos/components/account_manager/account_manager_factory.h"
#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_features.h"
#include "chromeos/constants/chromeos_pref_names.h"
#include "chromeos/login/auth/password_visibility_utils.h" #include "chromeos/login/auth/password_visibility_utils.h"
#include "chromeos/services/multidevice_setup/public/cpp/prefs.h"
#include "chromeos/services/network_config/public/mojom/constants.mojom.h" // nogncheck
#include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h" // nogncheck
#include "components/arc/arc_util.h" #include "components/arc/arc_util.h"
#include "components/prefs/pref_service.h"
#include "components/user_manager/user.h" #include "components/user_manager/user.h"
#include "ui/base/ui_base_features.h" #include "ui/base/ui_base_features.h"
#include "ui/chromeos/resources/grit/ui_chromeos_resources.h"
#include "ui/resources/grit/webui_resources.h"
#else // !defined(OS_CHROMEOS) #else // !defined(OS_CHROMEOS)
#include "chrome/browser/signin/account_consistency_mode_manager.h" #include "chrome/browser/signin/account_consistency_mode_manager.h"
#include "chrome/browser/ui/webui/settings/settings_default_browser_handler.h" #include "chrome/browser/ui/webui/settings/settings_default_browser_handler.h"
...@@ -166,11 +134,7 @@ web_app::AppRegistrar& GetRegistrarForProfile(Profile* profile) { ...@@ -166,11 +134,7 @@ web_app::AppRegistrar& GetRegistrarForProfile(Profile* profile) {
} }
SettingsUI::SettingsUI(content::WebUI* web_ui) SettingsUI::SettingsUI(content::WebUI* web_ui)
#if defined(OS_CHROMEOS)
: ui::MojoWebUIController(web_ui, /*enable_chrome_send =*/true),
#else
: content::WebUIController(web_ui), : content::WebUIController(web_ui),
#endif
webui_load_timer_(web_ui->GetWebContents(), webui_load_timer_(web_ui->GetWebContents(),
"Settings.LoadDocumentTime.MD", "Settings.LoadDocumentTime.MD",
"Settings.LoadCompletedTime.MD") { "Settings.LoadCompletedTime.MD") {
...@@ -374,176 +338,6 @@ void SettingsUI::InitBrowserSettingsWebUIHandlers( ...@@ -374,176 +338,6 @@ void SettingsUI::InitBrowserSettingsWebUIHandlers(
->GetUserByProfile(profile) ->GetUserByProfile(profile)
->GetAccountId())); ->GetAccountId()));
} }
// static
void SettingsUI::InitOSWebUIHandlers(Profile* profile,
content::WebUI* web_ui,
content::WebUIDataSource* html_source) {
// TODO(jamescook): Sort out how account management is split between Chrome OS
// and browser settings.
if (chromeos::IsAccountManagerAvailable(profile)) {
chromeos::AccountManagerFactory* factory =
g_browser_process->platform_part()->GetAccountManagerFactory();
chromeos::AccountManager* account_manager =
factory->GetAccountManager(profile->GetPath().value());
DCHECK(account_manager);
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::AccountManagerUIHandler>(
account_manager, IdentityManagerFactory::GetForProfile(profile)));
html_source->AddBoolean(
"secondaryGoogleAccountSigninAllowed",
profile->GetPrefs()->GetBoolean(
chromeos::prefs::kSecondaryGoogleAccountSigninAllowed));
}
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::ChangePictureHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::AccessibilityHandler>(web_ui));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::AndroidAppsHandler>(profile));
if (crostini::CrostiniFeatures::Get()->IsUIAllowed(profile,
/*check_policy=*/false)) {
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::CrostiniHandler>(profile));
}
web_ui->AddMessageHandler(
chromeos::settings::CupsPrintersHandler::Create(web_ui));
web_ui->AddMessageHandler(base::WrapUnique(
chromeos::settings::DateTimeHandler::Create(html_source)));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::FingerprintHandler>(profile));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::GoogleAssistantHandler>(profile));
std::unique_ptr<chromeos::settings::KerberosAccountsHandler>
kerberos_accounts_handler =
chromeos::settings::KerberosAccountsHandler::CreateIfKerberosEnabled(
profile);
if (kerberos_accounts_handler) {
// Note that the UI is enabled only if Kerberos is enabled.
web_ui->AddMessageHandler(std::move(kerberos_accounts_handler));
}
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::KeyboardHandler>());
// TODO(crbug/950007): Remove adding WallpaperHandler when
// SplitSettings complete.
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::WallpaperHandler>(web_ui));
if (plugin_vm::IsPluginVmEnabled(profile)) {
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::PluginVmHandler>(profile));
}
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::PointerHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::StorageHandler>(profile,
html_source));
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::StylusHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::InternetHandler>(profile));
web_ui->AddMessageHandler(std::make_unique<TtsHandler>());
web_ui->AddMessageHandler(
std::make_unique<chromeos::smb_dialog::SmbHandler>(profile));
if (!profile->IsGuestSession()) {
chromeos::android_sms::AndroidSmsService* android_sms_service =
chromeos::android_sms::AndroidSmsServiceFactory::GetForBrowserContext(
profile);
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::MultideviceHandler>(
profile->GetPrefs(),
chromeos::multidevice_setup::MultiDeviceSetupClientFactory::
GetForProfile(profile),
android_sms_service
? android_sms_service->android_sms_pairing_state_tracker()
: nullptr,
android_sms_service ? android_sms_service->android_sms_app_manager()
: nullptr));
if (chromeos::settings::ShouldShowParentalControls(profile)) {
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::ParentalControlsHandler>(
profile));
}
}
html_source->AddBoolean(
"multideviceAllowedByPolicy",
chromeos::multidevice_setup::AreAnyMultiDeviceFeaturesAllowed(
profile->GetPrefs()));
html_source->AddBoolean(
"quickUnlockEnabled",
chromeos::quick_unlock::IsPinEnabled(profile->GetPrefs()));
html_source->AddBoolean(
"quickUnlockDisabledByPolicy",
chromeos::quick_unlock::IsPinDisabledByPolicy(profile->GetPrefs()));
const bool fingerprint_unlock_enabled =
chromeos::quick_unlock::IsFingerprintEnabled(profile);
html_source->AddBoolean("fingerprintUnlockEnabled",
fingerprint_unlock_enabled);
if (fingerprint_unlock_enabled) {
html_source->AddInteger(
"fingerprintReaderLocation",
static_cast<int32_t>(chromeos::quick_unlock::GetFingerprintLocation()));
// To use lottie, the worker-src CSP needs to be updated for the web ui that
// is using it. Since as of now there are only a couple of webuis using
// lottie animations, this update has to be performed manually. As the usage
// increases, set this as the default so manual override is no longer
// required.
html_source->OverrideContentSecurityPolicyWorkerSrc(
"worker-src blob: 'self';");
html_source->AddResourcePath("finger_print.json",
IDR_LOGIN_FINGER_PRINT_TABLET_ANIMATION);
}
html_source->AddBoolean("lockScreenNotificationsEnabled",
ash::features::IsLockScreenNotificationsEnabled());
html_source->AddBoolean(
"lockScreenHideSensitiveNotificationsSupported",
ash::features::IsLockScreenHideSensitiveNotificationsSupported());
html_source->AddBoolean("showTechnologyBadge",
!ash::features::IsSeparateNetworkIconsEnabled());
html_source->AddBoolean("hasInternalStylus",
ash::stylus_utils::HasInternalStylus());
html_source->AddBoolean("showCrostini",
crostini::CrostiniFeatures::Get()->IsUIAllowed(
profile, /*check_policy=*/false));
html_source->AddBoolean(
"allowCrostini", crostini::CrostiniFeatures::Get()->IsUIAllowed(profile));
html_source->AddBoolean("showPluginVm",
plugin_vm::IsPluginVmEnabled(profile));
html_source->AddBoolean("isDemoSession",
chromeos::DemoSession::IsDeviceInDemoMode());
// We have 2 variants of Android apps settings. Default case, when the Play
// Store app exists we show expandable section that allows as to
// enable/disable the Play Store and link to Android settings which is
// available once settings app is registered in the system.
// For AOSP images we don't have the Play Store app. In last case we Android
// apps settings consists only from root link to Android settings and only
// visible once settings app is registered.
html_source->AddBoolean("androidAppsVisible",
arc::IsArcAllowedForProfile(profile));
html_source->AddBoolean("havePlayStoreApp", arc::IsPlayStoreAvailable());
html_source->AddBoolean("enablePowerSettings", true);
web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::PowerHandler>(profile->GetPrefs()));
html_source->AddBoolean(
"showParentalControlsSettings",
chromeos::settings::ShouldShowParentalControls(profile));
}
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
void SettingsUI::AddSettingsPageUIHandler( void SettingsUI::AddSettingsPageUIHandler(
...@@ -552,14 +346,4 @@ void SettingsUI::AddSettingsPageUIHandler( ...@@ -552,14 +346,4 @@ void SettingsUI::AddSettingsPageUIHandler(
web_ui()->AddMessageHandler(std::move(handler)); web_ui()->AddMessageHandler(std::move(handler));
} }
#if defined(OS_CHROMEOS)
void SettingsUI::BindInterface(
mojo::PendingReceiver<chromeos::network_config::mojom::CrosNetworkConfig>
receiver) {
ash::GetNetworkConfigService(std::move(receiver));
}
WEB_UI_CONTROLLER_TYPE_IMPL(SettingsUI)
#endif // defined(OS_CHROMEOS)
} // namespace settings } // namespace settings
...@@ -8,14 +8,7 @@ ...@@ -8,14 +8,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/webui_load_timer.h" #include "chrome/browser/ui/webui/webui_load_timer.h"
#if defined(OS_CHROMEOS)
#include "chromeos/services/network_config/public/mojom/cros_network_config.mojom-forward.h" // nogncheck
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "ui/webui/mojo_web_ui_controller.h"
#else
#include "content/public/browser/web_ui_controller.h" #include "content/public/browser/web_ui_controller.h"
#endif
class Profile; class Profile;
...@@ -31,13 +24,7 @@ class PrefRegistrySyncable; ...@@ -31,13 +24,7 @@ class PrefRegistrySyncable;
namespace settings { namespace settings {
// The WebUI handler for chrome://settings. // The WebUI handler for chrome://settings.
class SettingsUI class SettingsUI : public content::WebUIController {
#if defined(OS_CHROMEOS)
: public ui::MojoWebUIController
#else
: public content::WebUIController
#endif
{
public: public:
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
...@@ -51,17 +38,6 @@ class SettingsUI ...@@ -51,17 +38,6 @@ class SettingsUI
Profile* profile, Profile* profile,
content::WebUI* web_ui, content::WebUI* web_ui,
content::WebUIDataSource* html_source); content::WebUIDataSource* html_source);
// Initializes the WebUI message handlers for OS-specific settings.
static void InitOSWebUIHandlers(Profile* profile,
content::WebUI* web_ui,
content::WebUIDataSource* html_source);
// Instantiates implementor of the mojom::CrosNetworkConfig mojo interface
// passing the pending receiver that will be internally bound.
void BindInterface(
mojo::PendingReceiver<chromeos::network_config::mojom::CrosNetworkConfig>
receiver);
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
private: private:
...@@ -70,10 +46,6 @@ class SettingsUI ...@@ -70,10 +46,6 @@ class SettingsUI
WebuiLoadTimer webui_load_timer_; WebuiLoadTimer webui_load_timer_;
#if defined(OS_CHROMEOS)
WEB_UI_CONTROLLER_TYPE_DECL();
#endif
DISALLOW_COPY_AND_ASSIGN(SettingsUI); DISALLOW_COPY_AND_ASSIGN(SettingsUI);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment