summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/ui/webui/chromeos/login
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-12-10 16:19:40 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-12-10 16:01:50 +0000
commit51f6c2793adab2d864b3d2b360000ef8db1d3e92 (patch)
tree835b3b4446b012c75e80177cef9fbe6972cc7dbe /chromium/chrome/browser/ui/webui/chromeos/login
parent6036726eb981b6c4b42047513b9d3f4ac865daac (diff)
BASELINE: Update Chromium to 71.0.3578.93
Change-Id: I6a32086c33670e1b033f8b10e6bf1fd4da1d105d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/chrome/browser/ui/webui/chromeos/login')
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc187
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h11
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc48
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h6
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.cc15
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.h12
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_module.h2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_ui.cc5
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc9
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.h2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.cc137
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.h43
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.h2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.cc3
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.h2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.cc3
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.h2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc22
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc2
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc5
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc46
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h41
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc6
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc4
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc72
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.h22
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc74
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h4
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/screenlock_icon_source.h3
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc41
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h3
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.cc461
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h141
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc5
-rw-r--r--chromium/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc13
38 files changed, 673 insertions, 787 deletions
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc
index 8b3d420b688..f1d7e7e852c 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc
@@ -246,6 +246,8 @@ void ArcTermsOfServiceScreenHandler::DoShow() {
Profile* profile = ProfileManager::GetActiveUserProfile();
CHECK(profile);
+ CallJS("clearDemoMode");
+
// Enable ARC to match ArcSessionManager logic. ArcSessionManager expects that
// ARC is enabled (prefs::kArcEnabled = true) on showing Terms of Service. If
// user accepts ToS then prefs::kArcEnabled is left activated. If user skips
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
index 50203401165..9a63d3a5d32 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
@@ -4,12 +4,13 @@
#include "chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h"
+#include "base/metrics/histogram_macros.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/oobe_screen.h"
#include "chrome/browser/chromeos/login/screens/assistant_optin_flow_screen.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/webui/chromeos/assistant_optin/assistant_optin_utils.h"
-#include "chrome/grit/browser_resources.h"
#include "chrome/grit/generated_resources.h"
#include "chromeos/services/assistant/public/mojom/constants.mojom.h"
#include "chromeos/services/assistant/public/proto/settings_ui.pb.h"
@@ -26,6 +27,7 @@ constexpr char kJsScreenPath[] = "login.AssistantOptInFlowScreen";
constexpr char kSkipPressed[] = "skip-pressed";
constexpr char kNextPressed[] = "next-pressed";
constexpr char kFlowFinished[] = "flow-finished";
+constexpr char kReloadRequested[] = "reload-requested";
} // namespace
@@ -45,6 +47,7 @@ AssistantOptInFlowScreenHandler::~AssistantOptInFlowScreenHandler() {
void AssistantOptInFlowScreenHandler::DeclareLocalizedValues(
::login::LocalizedValuesBuilder* builder) {
+ builder->Add("locale", g_browser_process->GetApplicationLocale());
builder->Add("assistantOptinLoading",
IDS_VOICE_INTERACTION_VALUE_PROP_LOADING);
builder->Add("assistantOptinLoadErrorTitle",
@@ -59,33 +62,42 @@ void AssistantOptInFlowScreenHandler::DeclareLocalizedValues(
builder->Add("assistantReadyTitle", IDS_ASSISTANT_READY_SCREEN_TITLE);
builder->Add("assistantReadyMessage", IDS_ASSISTANT_READY_SCREEN_MESSAGE);
builder->Add("assistantReadyButton", IDS_ASSISTANT_DONE_BUTTON);
+ builder->Add("back", IDS_EULA_BACK_BUTTON);
+ builder->Add("next", IDS_EULA_NEXT_BUTTON);
}
void AssistantOptInFlowScreenHandler::RegisterMessages() {
- AddCallback(
- "assistant.ValuePropScreen.userActed",
+ AddPrefixedCallback(
+ "ValuePropScreen.userActed",
&AssistantOptInFlowScreenHandler::HandleValuePropScreenUserAction);
- AddCallback(
- "assistant.ThirdPartyScreen.userActed",
+ AddPrefixedCallback(
+ "ThirdPartyScreen.userActed",
&AssistantOptInFlowScreenHandler::HandleThirdPartyScreenUserAction);
- AddCallback("assistant.GetMoreScreen.userActed",
- &AssistantOptInFlowScreenHandler::HandleGetMoreScreenUserAction);
- AddCallback("assistant.ReadyScreen.userActed",
- &AssistantOptInFlowScreenHandler::HandleReadyScreenUserAction);
- AddCallback("assistant.ValuePropScreen.screenShown",
- &AssistantOptInFlowScreenHandler::HandleValuePropScreenShown);
- AddCallback("assistant.ThirdPartyScreen.screenShown",
- &AssistantOptInFlowScreenHandler::HandleThirdPartyScreenShown);
- AddCallback("assistant.GetMoreScreen.screenShown",
- &AssistantOptInFlowScreenHandler::HandleGetMoreScreenShown);
- AddCallback("assistant.ReadyScreen.screenShown",
- &AssistantOptInFlowScreenHandler::HandleReadyScreenShown);
- AddCallback("assistantOptInFlow.hotwordResult",
- &AssistantOptInFlowScreenHandler::HandleHotwordResult);
- AddCallback("assistantOptInFlow.flowFinished",
- &AssistantOptInFlowScreenHandler::HandleFlowFinished);
- AddCallback("assistantOptInFlow.initialized",
- &AssistantOptInFlowScreenHandler::HandleFlowInitialized);
+ AddPrefixedCallback(
+ "GetMoreScreen.userActed",
+ &AssistantOptInFlowScreenHandler::HandleGetMoreScreenUserAction);
+ AddPrefixedCallback(
+ "ReadyScreen.userActed",
+ &AssistantOptInFlowScreenHandler::HandleReadyScreenUserAction);
+ AddPrefixedCallback(
+ "ValuePropScreen.screenShown",
+ &AssistantOptInFlowScreenHandler::HandleValuePropScreenShown);
+ AddPrefixedCallback(
+ "ThirdPartyScreen.screenShown",
+ &AssistantOptInFlowScreenHandler::HandleThirdPartyScreenShown);
+ AddPrefixedCallback(
+ "GetMoreScreen.screenShown",
+ &AssistantOptInFlowScreenHandler::HandleGetMoreScreenShown);
+ AddPrefixedCallback("ReadyScreen.screenShown",
+ &AssistantOptInFlowScreenHandler::HandleReadyScreenShown);
+ AddPrefixedCallback("LoadingScreen.timeout",
+ &AssistantOptInFlowScreenHandler::HandleLoadingTimeout);
+ AddPrefixedCallback("hotwordResult",
+ &AssistantOptInFlowScreenHandler::HandleHotwordResult);
+ AddPrefixedCallback("flowFinished",
+ &AssistantOptInFlowScreenHandler::HandleFlowFinished);
+ AddPrefixedCallback("initialized",
+ &AssistantOptInFlowScreenHandler::HandleFlowInitialized);
}
void AssistantOptInFlowScreenHandler::Bind(AssistantOptInFlowScreen* screen) {
@@ -101,22 +113,13 @@ void AssistantOptInFlowScreenHandler::Unbind() {
}
void AssistantOptInFlowScreenHandler::Show() {
- // Make sure enable Assistant service since we need it during the flow.
- PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
- prefs->SetBoolean(arc::prefs::kVoiceInteractionEnabled, true);
-
- if (arc::VoiceInteractionControllerClient::Get()->voice_interaction_state() ==
- ash::mojom::VoiceInteractionState::NOT_READY) {
- arc::VoiceInteractionControllerClient::Get()->AddObserver(this);
- } else {
- BindAssistantSettingsManager();
- }
-
if (!page_is_ready() || !screen_) {
show_on_init_ = true;
return;
}
+ SetupAssistantConnection();
+
ShowScreen(kScreenId);
}
@@ -130,6 +133,19 @@ void AssistantOptInFlowScreenHandler::Initialize() {
show_on_init_ = false;
}
+void AssistantOptInFlowScreenHandler::SetupAssistantConnection() {
+ // Make sure enable Assistant service since we need it during the flow.
+ PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
+ prefs->SetBoolean(arc::prefs::kVoiceInteractionEnabled, true);
+
+ if (arc::VoiceInteractionControllerClient::Get()->voice_interaction_state() ==
+ ash::mojom::VoiceInteractionState::NOT_READY) {
+ arc::VoiceInteractionControllerClient::Get()->AddObserver(this);
+ } else {
+ BindAssistantSettingsManager();
+ }
+}
+
void AssistantOptInFlowScreenHandler::ShowNextScreen() {
CallJS("showNextScreen");
}
@@ -137,6 +153,7 @@ void AssistantOptInFlowScreenHandler::ShowNextScreen() {
void AssistantOptInFlowScreenHandler::OnActivityControlOptInResult(
bool opted_in) {
Profile* profile = ProfileManager::GetActiveUserProfile();
+ RecordActivityControlConsent(profile, ui_audit_key_, opted_in);
if (opted_in) {
RecordAssistantOptInStatus(ACTIVITY_CONTROL_ACCEPTED);
settings_manager_->UpdateSettings(
@@ -148,10 +165,8 @@ void AssistantOptInFlowScreenHandler::OnActivityControlOptInResult(
RecordAssistantOptInStatus(ACTIVITY_CONTROL_SKIPPED);
profile->GetPrefs()->SetBoolean(
arc::prefs::kVoiceInteractionActivityControlAccepted, false);
- screen_->OnUserAction(kFlowFinished);
+ HandleFlowFinished();
}
-
- RecordActivityControlConsent(profile, ui_audit_key_, opted_in);
}
void AssistantOptInFlowScreenHandler::OnEmailOptInResult(bool opted_in) {
@@ -196,6 +211,7 @@ void AssistantOptInFlowScreenHandler::SendGetSettingsRequest() {
selector.SerializeAsString(),
base::BindOnce(&AssistantOptInFlowScreenHandler::OnGetSettingsResponse,
weak_factory_.GetWeakPtr()));
+ send_request_time_ = base::TimeTicks::Now();
}
void AssistantOptInFlowScreenHandler::ReloadContent(const base::Value& dict) {
@@ -209,6 +225,11 @@ void AssistantOptInFlowScreenHandler::AddSettingZippy(const std::string& type,
void AssistantOptInFlowScreenHandler::OnGetSettingsResponse(
const std::string& settings) {
+ const base::TimeDelta time_since_request_sent =
+ base::TimeTicks::Now() - send_request_time_;
+ UMA_HISTOGRAM_TIMES("Assistant.OptInFlow.GetSettingsRequestTime",
+ time_since_request_sent);
+
assistant::SettingsUi settings_ui;
settings_ui.ParseFromString(settings);
@@ -223,12 +244,18 @@ void AssistantOptInFlowScreenHandler::OnGetSettingsResponse(
ui_audit_key_ = activity_control_ui.ui_audit_key();
// Process activity control data.
- if (!activity_control_ui.setting_zippy().size()) {
+ bool skip_activity_control = !activity_control_ui.setting_zippy().size();
+ if (skip_activity_control) {
// No need to consent. Move to the next screen.
activity_control_needed_ = false;
PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
- prefs->SetBoolean(arc::prefs::kVoiceInteractionActivityControlAccepted,
- true);
+ prefs->SetBoolean(
+ arc::prefs::kVoiceInteractionActivityControlAccepted,
+ (settings_ui.consent_flow_ui().consent_status() ==
+ assistant::ConsentFlowUi_ConsentStatus_ALREADY_CONSENTED ||
+ settings_ui.consent_flow_ui().consent_status() ==
+ assistant::ConsentFlowUi_ConsentStatus_ASK_FOR_CONSENT));
+ // Skip activity control and users will be in opted out mode.
ShowNextScreen();
} else {
AddSettingZippy("settings",
@@ -236,14 +263,36 @@ void AssistantOptInFlowScreenHandler::OnGetSettingsResponse(
}
// Process third party disclosure data.
- AddSettingZippy("disclosure", CreateDisclosureData(
- third_party_disclosure_ui.disclosures()));
+ bool skip_third_party_disclosure =
+ skip_activity_control && !third_party_disclosure_ui.disclosures().size();
+ if (third_party_disclosure_ui.disclosures().size()) {
+ AddSettingZippy("disclosure", CreateDisclosureData(
+ third_party_disclosure_ui.disclosures()));
+ } else if (skip_third_party_disclosure) {
+ ShowNextScreen();
+ } else {
+ // TODO(llin): Show an error message and log it properly.
+ LOG(ERROR) << "Missing third Party disclosure data.";
+ return;
+ }
// Process get more data.
email_optin_needed_ = settings_ui.has_email_opt_in_ui() &&
settings_ui.email_opt_in_ui().has_title();
- AddSettingZippy("get-more", CreateGetMoreData(email_optin_needed_,
- settings_ui.email_opt_in_ui()));
+ auto get_more_data =
+ CreateGetMoreData(email_optin_needed_, settings_ui.email_opt_in_ui());
+
+ bool skip_get_more =
+ skip_third_party_disclosure && !get_more_data.GetList().size();
+ if (get_more_data.GetList().size()) {
+ AddSettingZippy("get-more", get_more_data);
+ } else if (skip_get_more) {
+ ShowNextScreen();
+ } else {
+ // TODO(llin): Show an error message and log it properly.
+ LOG(ERROR) << "Missing get more data.";
+ return;
+ }
// Pass string constants dictionary.
ReloadContent(GetSettingsUiStrings(settings_ui, activity_control_needed_));
@@ -284,31 +333,18 @@ void AssistantOptInFlowScreenHandler::OnUpdateSettingsResponse(
ShowNextScreen();
}
-void AssistantOptInFlowScreenHandler::HandleHotwordResult(bool enable_hotword) {
- enable_hotword_ = enable_hotword;
-
- if (!email_optin_needed_) {
- // No need to send email optin result. Safe to update hotword pref and
- // restart Assistant here.
- PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
- prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled,
- enable_hotword);
- }
-}
-
-void AssistantOptInFlowScreenHandler::HandleLoadingScreenUserAction(
- const std::string& action) {
- if (action == kSkipPressed) {
- screen_->OnUserAction(kFlowFinished);
- }
-}
-
void AssistantOptInFlowScreenHandler::HandleValuePropScreenUserAction(
const std::string& action) {
if (action == kSkipPressed) {
OnActivityControlOptInResult(false);
} else if (action == kNextPressed) {
OnActivityControlOptInResult(true);
+ } else if (action == kReloadRequested) {
+ if (settings_manager_.is_bound()) {
+ SendGetSettingsRequest();
+ } else {
+ LOG(ERROR) << "Settings mojom failed to setup. Check Assistant service.";
+ }
}
}
@@ -334,7 +370,7 @@ void AssistantOptInFlowScreenHandler::HandleReadyScreenUserAction(
const std::string& action) {
if (action == kNextPressed) {
RecordAssistantOptInStatus(READY_SCREEN_CONTINUED);
- screen_->OnUserAction(kFlowFinished);
+ HandleFlowFinished();
}
}
@@ -354,8 +390,29 @@ void AssistantOptInFlowScreenHandler::HandleReadyScreenShown() {
RecordAssistantOptInStatus(READY_SCREEN_SHOWN);
}
+void AssistantOptInFlowScreenHandler::HandleLoadingTimeout() {
+ ++loading_timeout_counter_;
+}
+
+void AssistantOptInFlowScreenHandler::HandleHotwordResult(bool enable_hotword) {
+ enable_hotword_ = enable_hotword;
+
+ if (!email_optin_needed_) {
+ // No need to send email optin result. Safe to update hotword pref and
+ // restart Assistant here.
+ PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
+ prefs->SetBoolean(arc::prefs::kVoiceInteractionHotwordEnabled,
+ enable_hotword);
+ }
+}
+
void AssistantOptInFlowScreenHandler::HandleFlowFinished() {
- screen_->OnUserAction(kFlowFinished);
+ UMA_HISTOGRAM_EXACT_LINEAR("Assistant.OptInFlow.LoadingTimeoutCount",
+ loading_timeout_counter_, 10);
+ if (screen_)
+ screen_->OnUserAction(kFlowFinished);
+ else
+ CallJS("closeDialog");
}
void AssistantOptInFlowScreenHandler::HandleFlowInitialized() {}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h b/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h
index bcd0ff69667..6ddc11065a2 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h
@@ -36,6 +36,9 @@ class AssistantOptInFlowScreenHandler
void Show() override;
void Hide() override;
+ // Setup Assistant settings manager connection.
+ void SetupAssistantConnection();
+
// Send messages to the page.
void ShowNextScreen();
@@ -65,7 +68,6 @@ class AssistantOptInFlowScreenHandler
void OnUpdateSettingsResponse(const std::string& settings);
// Handler for JS WebUI message.
- void HandleLoadingScreenUserAction(const std::string& action);
void HandleValuePropScreenUserAction(const std::string& action);
void HandleThirdPartyScreenUserAction(const std::string& action);
void HandleGetMoreScreenUserAction(const bool screen_context,
@@ -75,6 +77,7 @@ class AssistantOptInFlowScreenHandler
void HandleThirdPartyScreenShown();
void HandleGetMoreScreenShown();
void HandleReadyScreenShown();
+ void HandleLoadingTimeout();
void HandleHotwordResult(bool enable_hotword);
void HandleFlowFinished();
void HandleFlowInitialized();
@@ -99,6 +102,12 @@ class AssistantOptInFlowScreenHandler
// Whether user chose to enable hotword.
bool enable_hotword_ = true;
+ // Time that get settings request is sent.
+ base::TimeTicks send_request_time_;
+
+ // Counter for the number of loading timeout happens.
+ int loading_timeout_counter_ = 0;
+
assistant::mojom::AssistantSettingsManagerPtr settings_manager_;
base::WeakPtrFactory<AssistantOptInFlowScreenHandler> weak_factory_;
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
index 6137e9ad4e4..d0842f5a8fc 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -16,6 +16,8 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
#include "chrome/browser/chromeos/accessibility/magnification_manager.h"
+#include "chrome/browser/chromeos/login/configuration_keys.h"
+#include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h"
#include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
#include "chrome/browser/chromeos/login/helper.h"
@@ -103,14 +105,13 @@ CoreOobeHandler::CoreOobeHandler(OobeUI* oobe_ui,
TabletModeClient* tablet_mode_client = TabletModeClient::Get();
tablet_mode_client->AddObserver(this);
- OobeConfiguration::Get()->AddObserver(this);
-
// |connector| may be null in tests.
auto* connector = ash_util::GetServiceManagerConnector();
if (connector) {
connector->BindInterface(ash::mojom::kServiceName,
&cros_display_config_ptr_);
}
+ OobeConfiguration::Get()->AddAndFireObserver(this);
}
CoreOobeHandler::~CoreOobeHandler() {
@@ -177,7 +178,6 @@ void CoreOobeHandler::Initialize() {
UpdateDeviceRequisition();
UpdateKeyboardState();
UpdateClientAreaSize();
- UpdateOobeConfiguration();
}
void CoreOobeHandler::GetAdditionalParameters(base::DictionaryValue* dict) {
@@ -226,6 +226,8 @@ void CoreOobeHandler::RegisterMessages() {
AddRawCallback("getPrimaryDisplayNameForTesting",
&CoreOobeHandler::HandleGetPrimaryDisplayNameForTesting);
AddCallback("setupDemoMode", &CoreOobeHandler::HandleSetupDemoMode);
+ AddCallback("startDemoModeSetupForTesting",
+ &CoreOobeHandler::HandleStartDemoModeSetupForTesting);
}
void CoreOobeHandler::ShowSignInError(
@@ -583,11 +585,9 @@ void CoreOobeHandler::UpdateKeyboardState() {
// KeyboardController in the browser process under MASH.
if (!features::IsUsingWindowService()) {
auto* keyboard_controller = keyboard::KeyboardController::Get();
- if (keyboard_controller->enabled()) {
- const bool is_keyboard_shown = keyboard_controller->IsKeyboardVisible();
- ShowControlBar(!is_keyboard_shown);
- SetVirtualKeyboardShown(is_keyboard_shown);
- }
+ const bool is_keyboard_shown = keyboard_controller->IsKeyboardVisible();
+ ShowControlBar(!is_keyboard_shown);
+ SetVirtualKeyboardShown(is_keyboard_shown);
}
}
@@ -602,14 +602,12 @@ void CoreOobeHandler::UpdateClientAreaSize() {
}
void CoreOobeHandler::OnOobeConfigurationChanged() {
- UpdateOobeConfiguration();
-}
-
-void CoreOobeHandler::UpdateOobeConfiguration() {
- if (OobeConfiguration::Get()) {
- CallJSOrDefer("updateOobeConfiguration",
- OobeConfiguration::Get()->GetConfiguration());
- }
+ base::Value configuration(base::Value::Type::DICTIONARY);
+ chromeos::configuration::FilterConfiguration(
+ OobeConfiguration::Get()->GetConfiguration(),
+ chromeos::configuration::ConfigurationHandlerSide::HANDLER_JS,
+ configuration);
+ CallJSOrDefer("updateOobeConfiguration", configuration);
}
void CoreOobeHandler::OnAccessibilityStatusChanged(
@@ -686,6 +684,24 @@ void CoreOobeHandler::HandleSetupDemoMode() {
}
}
+void CoreOobeHandler::HandleStartDemoModeSetupForTesting(
+ const std::string& demo_config) {
+ DemoSession::DemoModeConfig config;
+ if (demo_config == "online") {
+ config = DemoSession::DemoModeConfig::kOnline;
+ } else if (demo_config == "offline") {
+ config = DemoSession::DemoModeConfig::kOffline;
+ } else {
+ NOTREACHED() << "Unknown demo config passed for tests";
+ }
+
+ WizardController* wizard_controller = WizardController::default_controller();
+ if (wizard_controller && !wizard_controller->login_screen_started()) {
+ wizard_controller->SimulateDemoModeSetupForTesting(config);
+ wizard_controller->AdvanceToScreen(OobeScreen::SCREEN_OOBE_DEMO_SETUP);
+ }
+}
+
void CoreOobeHandler::InitDemoModeDetection() {
demo_mode_detector_.InitDetection();
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h b/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
index 933dd72f91f..981e5cf5fa6 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
@@ -149,6 +149,9 @@ class CoreOobeHandler : public BaseWebUIHandler,
const base::Value& callback_id,
std::vector<ash::mojom::DisplayUnitInfoPtr> info_list);
void HandleSetupDemoMode();
+ // Handles demo mode setup for tests. Accepts 'online' and 'offline' as
+ // |demo_config|.
+ void HandleStartDemoModeSetupForTesting(const std::string& demo_config);
// When keyboard_utils.js arrow key down event is reached, raise it
// to tab/shift-tab event.
@@ -169,9 +172,6 @@ class CoreOobeHandler : public BaseWebUIHandler,
// Updates client area size based on the primary screen size.
void UpdateClientAreaSize();
- // Updates OOBE configuration.
- void UpdateOobeConfiguration();
-
// Notification of a change in the accessibility settings.
void OnAccessibilityStatusChanged(
const AccessibilityStatusEventDetails& details);
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.cc
index 0a205aa2534..636546f33ad 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.cc
@@ -7,8 +7,10 @@
#include <algorithm>
#include "base/logging.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/discover_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.h"
+#include "chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.h"
@@ -21,6 +23,11 @@ DiscoverManager::DiscoverManager() {
DiscoverManager::~DiscoverManager() = default;
+// static
+DiscoverManager* DiscoverManager::Get() {
+ return g_browser_process->platform_part()->GetDiscoverManager();
+}
+
bool DiscoverManager::IsCompleted() const {
// Returns true if all of the modules are completed.
return std::all_of(modules_.begin(), modules_.end(),
@@ -38,6 +45,8 @@ void DiscoverManager::CreateModules() {
std::make_unique<DiscoverModuleSyncFiles>();
modules_[DiscoverModuleWelcome::kModuleName] =
std::make_unique<DiscoverModuleWelcome>();
+ modules_[DiscoverModulePinSetup::kModuleName] =
+ std::make_unique<DiscoverModulePinSetup>();
}
std::vector<std::unique_ptr<DiscoverHandler>>
@@ -49,4 +58,10 @@ DiscoverManager::CreateWebUIHandlers() const {
return handlers;
}
+DiscoverModule* DiscoverManager::GetModuleByName(
+ const std::string& module_name) const {
+ const auto it = modules_.find(module_name);
+ return it == modules_.end() ? nullptr : it->second.get();
+}
+
} // namespace chromeos
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.h
index bd0fa047ce8..8ac51beb854 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_manager.h
@@ -25,17 +25,29 @@ class DiscoverManager {
DiscoverManager();
~DiscoverManager();
+ // Returns object instance from platform_parts.
+ static DiscoverManager* Get();
+
// Returns true if there are no modules to be displayed.
bool IsCompleted() const;
// Returns vector of WebUI message handlers for visible modules.
std::vector<std::unique_ptr<DiscoverHandler>> CreateWebUIHandlers() const;
+ template <typename T>
+ T* GetModule() {
+ return static_cast<T*>(GetModuleByName(T::kModuleName));
+ }
+
const ModulesMap& get_modules() const { return modules_; }
private:
// Creates all needed modules.
void CreateModules();
+
+ // Returns module by name.
+ DiscoverModule* GetModuleByName(const std::string& module_name) const;
+
ModulesMap modules_;
DISALLOW_COPY_AND_ASSIGN(DiscoverManager);
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_module.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_module.h
index add727f7049..e97a5ad6811 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_module.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_module.h
@@ -24,7 +24,7 @@ class DiscoverModule {
virtual bool IsCompleted() const = 0;
// Creates and returns WebUI handler for the module.
- virtual std::unique_ptr<DiscoverHandler> CreateWebUIHandler() const = 0;
+ virtual std::unique_ptr<DiscoverHandler> CreateWebUIHandler() = 0;
// Module is also expected to provide static method:
// static const char* kModuleName;
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_ui.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_ui.cc
index 553853e4189..426e67820a7 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_ui.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_ui.cc
@@ -4,7 +4,6 @@
#include "chrome/browser/ui/webui/chromeos/login/discover/discover_ui.h"
-#include "chrome/browser/browser_process.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/discover_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/discover/discover_manager.h"
#include "content/public/browser/web_ui.h"
@@ -17,9 +16,7 @@ DiscoverUI::~DiscoverUI() {}
void DiscoverUI::RegisterMessages(content::WebUI* web_ui) {
std::vector<std::unique_ptr<DiscoverHandler>> handlers =
- g_browser_process->platform_part()
- ->GetDiscoverManager()
- ->CreateWebUIHandlers();
+ DiscoverManager::Get()->CreateWebUIHandlers();
for (auto& handler : handlers) {
handlers_.push_back(handler.get());
web_ui->AddMessageHandler(std::move(handler));
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc
index 8f8fcbf6a6b..986898a589b 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc
@@ -4,7 +4,10 @@
#include "chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.h"
+#include "ash/public/cpp/app_types.h"
+#include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/ash/window_properties.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/browser_navigator_params.h"
@@ -15,6 +18,7 @@
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/generated_resources.h"
#include "content/public/browser/web_contents.h"
+#include "ui/aura/client/aura_constants.h"
#include "ui/gfx/geometry/rect.h"
#include "url/gurl.h"
@@ -79,6 +83,11 @@ void DiscoverWindowManager::ShowChromeDiscoverPageForProfile(Profile* profile) {
.first->second = params.browser->session_id();
DCHECK(params.browser->is_trusted_source());
+ auto* window = params.browser->window()->GetNativeWindow();
+ window->SetProperty(kOverrideWindowIconResourceIdKey, IDR_DISCOVER_APP_192);
+ window->SetProperty(aura::client::kAppType,
+ static_cast<int>(ash::AppType::CHROME_APP));
+
for (DiscoverWindowManagerObserver& observer : observers_)
observer.OnNewDiscoverWindow(params.browser);
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.cc
index cd3e89c41f8..37ea54dd760 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.cc
@@ -70,7 +70,7 @@ bool DiscoverModuleLaunchHelpApp::IsCompleted() const {
}
std::unique_ptr<DiscoverHandler>
-DiscoverModuleLaunchHelpApp::CreateWebUIHandler() const {
+DiscoverModuleLaunchHelpApp::CreateWebUIHandler() {
return std::make_unique<DiscoverModuleLaunchHelpAppHandler>();
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.h
index 7a386aba397..78774b34cdc 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_launch_help_app.h
@@ -19,7 +19,7 @@ class DiscoverModuleLaunchHelpApp : public DiscoverModule {
// DiscoverModule:
bool IsCompleted() const override;
- std::unique_ptr<DiscoverHandler> CreateWebUIHandler() const override;
+ std::unique_ptr<DiscoverHandler> CreateWebUIHandler() override;
// Module name.
static const char kModuleName[];
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.cc
new file mode 100644
index 00000000000..35863208b57
--- /dev/null
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.cc
@@ -0,0 +1,137 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.h"
+
+#include <vector>
+
+#include "base/i18n/number_formatting.h"
+#include "base/values.h"
+#include "chrome/browser/ui/webui/chromeos/login/discover/discover_handler.h"
+#include "chrome/grit/browser_resources.h"
+#include "chrome/grit/generated_resources.h"
+#include "components/login/localized_values_builder.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_ui.h"
+
+namespace chromeos {
+
+namespace {
+
+class DiscoverModulePinSetupHandler : public DiscoverHandler {
+ public:
+ explicit DiscoverModulePinSetupHandler(
+ base::WeakPtr<DiscoverModulePinSetup> module);
+ ~DiscoverModulePinSetupHandler() override = default;
+
+ // BaseWebUIHandler
+ void DeclareLocalizedValues(
+ ::login::LocalizedValuesBuilder* builder) override;
+ void Initialize() override;
+ void RegisterMessages() override;
+
+ private:
+ // Message handlers.
+ void HandleGetUserPassword(const std::string& callbackId);
+
+ base::WeakPtr<DiscoverModulePinSetup> module_;
+
+ DISALLOW_COPY_AND_ASSIGN(DiscoverModulePinSetupHandler);
+};
+
+DiscoverModulePinSetupHandler::DiscoverModulePinSetupHandler(
+ base::WeakPtr<DiscoverModulePinSetup> module)
+ : DiscoverHandler(DiscoverModulePinSetup::kModuleName), module_(module) {}
+
+void DiscoverModulePinSetupHandler::DeclareLocalizedValues(
+ ::login::LocalizedValuesBuilder* builder) {
+ builder->Add("discoverPinSetup", IDS_DISCOVER_PIN_SETUP);
+
+ builder->Add("back", IDS_EULA_BACK_BUTTON);
+ builder->Add("next", IDS_EULA_NEXT_BUTTON);
+ builder->Add("discoverPinSetupDone", IDS_DISCOVER_PIN_SETUP_DONE);
+
+ builder->Add("discoverPinSetupTitle1", IDS_DISCOVER_PIN_SETUP_TITLE1);
+ builder->Add("discoverPinSetupSubtitle1", IDS_DISCOVER_PIN_SETUP_SUBTITLE1);
+ builder->Add("discoverPinSetupSkip", IDS_DISCOVER_PIN_SETUP_SKIP);
+ builder->Add("discoverPinSetupTitle2", IDS_DISCOVER_PIN_SETUP_TITLE2);
+ builder->Add("discoverPinSetupTitle3", IDS_DISCOVER_PIN_SETUP_TITLE3);
+ builder->Add("discoverPinSetupSubtitle3", IDS_DISCOVER_PIN_SETUP_SUBTITLE3);
+ builder->Add("discoverPinSetupPasswordTitle",
+ IDS_DISCOVER_PIN_SETUP_PASSWORD_TITLE);
+ builder->Add("discoverPinSetupPasswordSubTitle",
+ IDS_DISCOVER_PIN_SETUP_PASSWORD_SUBTITLE);
+
+ builder->Add("passwordPromptInvalidPassword",
+ IDS_SETTINGS_PEOPLE_PASSWORD_PROMPT_INVALID_PASSWORD);
+ builder->Add("passwordPromptPasswordLabel",
+ IDS_SETTINGS_PEOPLE_PASSWORD_PROMPT_PASSWORD_LABEL);
+
+ // Format numbers to be used on the pin keyboard.
+ for (int j = 0; j <= 9; j++) {
+ builder->Add("pinKeyboard" + base::IntToString(j),
+ base::FormatNumber(int64_t{j}));
+ }
+ builder->Add("pinKeyboardPlaceholderPin", IDS_PIN_KEYBOARD_HINT_TEXT_PIN);
+ builder->Add("pinKeyboardPlaceholderPinPassword",
+ IDS_PIN_KEYBOARD_HINT_TEXT_PIN_PASSWORD);
+ builder->Add("pinKeyboardDeleteAccessibleName",
+ IDS_PIN_KEYBOARD_DELETE_ACCESSIBLE_NAME);
+ builder->Add("configurePinMismatched",
+ IDS_SETTINGS_PEOPLE_CONFIGURE_PIN_MISMATCHED);
+ builder->Add("configurePinTooShort",
+ IDS_SETTINGS_PEOPLE_CONFIGURE_PIN_TOO_SHORT);
+ builder->Add("configurePinTooLong",
+ IDS_SETTINGS_PEOPLE_CONFIGURE_PIN_TOO_LONG);
+ builder->Add("configurePinWeakPin",
+ IDS_SETTINGS_PEOPLE_CONFIGURE_PIN_WEAK_PIN);
+}
+
+void DiscoverModulePinSetupHandler::Initialize() {}
+
+void DiscoverModulePinSetupHandler::RegisterMessages() {
+ AddCallback("discover.pinSetup.getUserPassword",
+ &DiscoverModulePinSetupHandler::HandleGetUserPassword);
+}
+
+void DiscoverModulePinSetupHandler::HandleGetUserPassword(
+ const std::string& callbackId) {
+ web_ui()->CallJavascriptFunctionUnsafe(
+ "window.discoverReturn", base::Value(callbackId),
+ base::Value(module_->ConsumePrimaryUserPassword()));
+ return;
+}
+
+} // anonymous namespace
+
+/* ***************************************************************** */
+/* Discover PinSetup module implementation below. */
+
+const char DiscoverModulePinSetup::kModuleName[] = "pinSetup";
+
+DiscoverModulePinSetup::DiscoverModulePinSetup() {}
+
+DiscoverModulePinSetup::~DiscoverModulePinSetup() = default;
+
+bool DiscoverModulePinSetup::IsCompleted() const {
+ return false;
+}
+
+std::unique_ptr<DiscoverHandler> DiscoverModulePinSetup::CreateWebUIHandler() {
+ return std::make_unique<DiscoverModulePinSetupHandler>(
+ weak_ptr_factory_.GetWeakPtr());
+}
+
+std::string DiscoverModulePinSetup::ConsumePrimaryUserPassword() {
+ std::string result;
+ std::swap(primary_user_password_, result);
+ return result;
+}
+
+void DiscoverModulePinSetup::SetPrimaryUserPassword(
+ const std::string& password) {
+ primary_user_password_ = password;
+}
+
+} // namespace chromeos
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.h
new file mode 100644
index 00000000000..e0e942162c7
--- /dev/null
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_pin_setup.h
@@ -0,0 +1,43 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_DISCOVER_MODULES_DISCOVER_MODULE_PIN_SETUP_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_DISCOVER_MODULES_DISCOVER_MODULE_PIN_SETUP_H_
+
+#include <memory>
+
+#include "base/containers/flat_map.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/ui/webui/chromeos/login/discover/discover_module.h"
+
+namespace chromeos {
+
+class DiscoverModulePinSetup : public DiscoverModule {
+ public:
+ // Module name.
+ static const char kModuleName[];
+
+ DiscoverModulePinSetup();
+ ~DiscoverModulePinSetup() override;
+
+ // Returns primary user password, or empty string if not known.
+ // Password is kept for newly created user only, and is returned only once.
+ // (Empty string will be returned for subsequent calls.)
+ std::string ConsumePrimaryUserPassword();
+ void SetPrimaryUserPassword(const std::string& password);
+
+ // DiscoverModule:
+ bool IsCompleted() const override;
+ std::unique_ptr<DiscoverHandler> CreateWebUIHandler() override;
+
+ private:
+ std::string primary_user_password_;
+
+ base::WeakPtrFactory<DiscoverModulePinSetup> weak_ptr_factory_{this};
+ DISALLOW_COPY_AND_ASSIGN(DiscoverModulePinSetup);
+};
+
+} // namespace chromeos
+#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_DISCOVER_MODULES_DISCOVER_MODULE_PIN_SETUP_H_
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.cc
index 300586ee25d..cf44c2760b9 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.cc
@@ -56,7 +56,7 @@ bool DiscoverModuleRedeemOffers::IsCompleted() const {
}
std::unique_ptr<DiscoverHandler>
-DiscoverModuleRedeemOffers::CreateWebUIHandler() const {
+DiscoverModuleRedeemOffers::CreateWebUIHandler() {
return std::make_unique<DiscoverModuleRedeemOffersHandler>();
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.h
index ac4d91b82fb..7060b556434 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_redeem_offers.h
@@ -19,7 +19,7 @@ class DiscoverModuleRedeemOffers : public DiscoverModule {
// DiscoverModule:
bool IsCompleted() const override;
- std::unique_ptr<DiscoverHandler> CreateWebUIHandler() const override;
+ std::unique_ptr<DiscoverHandler> CreateWebUIHandler() override;
// Module name.
static const char kModuleName[];
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.cc
index cb910b79fc2..00e8d236293 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.cc
@@ -55,8 +55,7 @@ bool DiscoverModuleSyncFiles::IsCompleted() const {
return false;
}
-std::unique_ptr<DiscoverHandler> DiscoverModuleSyncFiles::CreateWebUIHandler()
- const {
+std::unique_ptr<DiscoverHandler> DiscoverModuleSyncFiles::CreateWebUIHandler() {
return std::make_unique<DiscoverModuleSyncFilesHandler>();
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.h
index 2eccb231799..d1efcc50934 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_sync_files.h
@@ -19,7 +19,7 @@ class DiscoverModuleSyncFiles : public DiscoverModule {
// DiscoverModule:
bool IsCompleted() const override;
- std::unique_ptr<DiscoverHandler> CreateWebUIHandler() const override;
+ std::unique_ptr<DiscoverHandler> CreateWebUIHandler() override;
// Module name.
static const char kModuleName[];
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.cc b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.cc
index c5c8cb6ec14..b5f75cdcd27 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.cc
@@ -57,8 +57,7 @@ bool DiscoverModuleWelcome::IsCompleted() const {
return false;
}
-std::unique_ptr<DiscoverHandler> DiscoverModuleWelcome::CreateWebUIHandler()
- const {
+std::unique_ptr<DiscoverHandler> DiscoverModuleWelcome::CreateWebUIHandler() {
return std::make_unique<DiscoverModuleWelcomeHandler>();
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.h b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.h
index bdde6246ce2..dcb1d6680e3 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/discover/modules/discover_module_welcome.h
@@ -19,7 +19,7 @@ class DiscoverModuleWelcome : public DiscoverModule {
// DiscoverModule:
bool IsCompleted() const override;
- std::unique_ptr<DiscoverHandler> CreateWebUIHandler() const override;
+ std::unique_ptr<DiscoverHandler> CreateWebUIHandler() override;
// Module name.
static const char kModuleName[];
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
index 50ea95bae58..7fc1bc3d1ff 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -562,28 +562,32 @@ void EnrollmentScreenHandler::DeclareLocalizedValues(
builder->Add("oauthEnrollWorking", IDS_ENTERPRISE_ENROLLMENT_WORKING_MESSAGE);
// Do not use AddF for this string as it will be rendered by the JS code.
builder->Add("oauthEnrollAbeSuccess", IDS_ENTERPRISE_ENROLLMENT_ABE_SUCCESS);
+
+ /* Active Directory strings */
builder->Add("oauthEnrollAdMachineNameInput", IDS_AD_DEVICE_NAME_INPUT_LABEL);
- builder->Add("oauthEnrollAdMachineNameInputRegex",
- IDS_AD_DEVICE_NAME_REGEX_INPUT_LABEL);
builder->Add("oauthEnrollAdDomainJoinWelcomeMessage",
IDS_AD_DOMAIN_JOIN_WELCOME_MESSAGE);
- builder->Add("adEnrollmentLoginUsername", IDS_AD_ENROLLMENT_LOGIN_USER);
+ builder->Add("adAuthLoginUsername", IDS_AD_AUTH_LOGIN_USER);
builder->Add("adLoginInvalidUsername", IDS_AD_INVALID_USERNAME);
builder->Add("adLoginPassword", IDS_AD_LOGIN_PASSWORD);
builder->Add("adLoginInvalidPassword", IDS_AD_INVALID_PASSWORD);
builder->Add("adJoinErrorMachineNameInvalid", IDS_AD_DEVICE_NAME_INVALID);
builder->Add("adJoinErrorMachineNameTooLong", IDS_AD_DEVICE_NAME_TOO_LONG);
- builder->Add("adJoinErrorMachineNameDoesntMatchRegex",
- IDS_AD_DEVICE_NAME_DOESNT_MATCH_REGEX);
+ builder->Add("adJoinErrorMachineNameInvalidFormat",
+ IDS_AD_DEVICE_NAME_INVALID_FORMAT);
builder->Add("adJoinMoreOptions", IDS_AD_MORE_OPTIONS_BUTTON);
- builder->Add("adUnlockConfig", IDS_AD_UNLOCK_CONFIG);
- builder->Add("adUnlockButton", IDS_AD_UNLOCK_CONFIG_UNLOCK_BUTTON);
+ builder->Add("adUnlockTitle", IDS_AD_UNLOCK_TITLE_MESSAGE);
+ builder->Add("adUnlockSubtitle", IDS_AD_UNLOCK_SUBTITLE_MESSAGE);
builder->Add("adUnlockPassword", IDS_AD_UNLOCK_CONFIG_PASSWORD);
builder->Add("adUnlockIncorrectPassword", IDS_AD_UNLOCK_INCORRECT_PASSWORD);
builder->Add("adUnlockPasswordSkip", IDS_AD_UNLOCK_PASSWORD_SKIP);
builder->Add("adJoinOrgUnit", IDS_AD_ORG_UNIT_HINT);
builder->Add("adJoinCancel", IDS_AD_CANCEL_BUTTON);
- builder->Add("adJoinConfirm", IDS_AD_CONFIRM_BUTTON);
+ builder->Add("adJoinSave", IDS_AD_SAVE_BUTTON);
+ builder->Add("selectEncryption", IDS_AD_ENCRYPTION_SELECTION_SELECT);
+ builder->Add("selectConfiguration", IDS_AD_CONFIG_SELECTION_SELECT);
+ /* End of Active Directory strings */
+
builder->Add("licenseSelectionCardTitle",
IDS_ENTERPRISE_ENROLLMENT_LICENSE_SELECTION);
builder->Add("licenseSelectionCardExplanation",
@@ -596,8 +600,6 @@ void EnrollmentScreenHandler::DeclareLocalizedValues(
IDS_ENTERPRISE_ENROLLMENT_KIOSK_LICENSE_TYPE);
builder->Add("licenseCountTemplate",
IDS_ENTERPRISE_ENROLLMENT_LICENSES_REMAINING_TEMPLATE);
- builder->Add("selectEncryption", IDS_AD_ENCRYPTION_SELECTION_SELECT);
- builder->Add("selectConfiguration", IDS_AD_CONFIG_SELECTION_SELECT);
}
void EnrollmentScreenHandler::GetAdditionalParameters(
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
index 6b1a1887c5e..cd4fd7f4593 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
@@ -82,8 +82,6 @@ void FingerprintSetupScreenHandler::DeclareLocalizedValues(
IDS_OOBE_FINGERPINT_SETUP_SCREEN_SENSOR_LOCATION_TITLE);
builder->Add("enrollmentProgressScreenTitle",
IDS_OOBE_FINGERPINT_SETUP_SCREEN_ENROLLMENT_PROGRESS_TITLE);
- builder->Add("fingerprintSetupAddFingerprint",
- IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_ADD_FINGERPRINT);
builder->Add("setupFingerprintEnrollmentSuccessTitle",
IDS_OOBE_FINGERPINT_SETUP_SCREEN_ENROLLMENT_SUCCESS_TITLE);
builder->Add("setupFingerprintEnrollmentSuccessDescription",
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
index e3c2649b0a2..951eb55889b 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -177,9 +177,8 @@ void UpdateAuthParams(base::DictionaryValue* params,
CrosSettings* cros_settings = CrosSettings::Get();
bool allow_new_user = true;
cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user);
- params->SetBoolean(
- "guestSignin",
- chrome_user_manager_util::IsGuestSessionAllowed(cros_settings));
+ params->SetBoolean("guestSignin",
+ user_manager::UserManager::Get()->IsGuestSessionAllowed());
// nosignup flow if new users are not allowed.
if (!allow_new_user || is_restrictive_proxy)
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc
new file mode 100644
index 00000000000..fb86a45d1b3
--- /dev/null
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc
@@ -0,0 +1,46 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h"
+
+#include "chrome/browser/chromeos/login/screens/multidevice_setup_screen.h"
+#include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_localized_strings_provider.h"
+#include "chrome/grit/generated_resources.h"
+#include "components/login/localized_values_builder.h"
+
+namespace {
+
+const char kJsScreenPath[] = "login.MultiDeviceSetupScreen";
+
+} // namespace
+
+namespace chromeos {
+
+MultiDeviceSetupScreenHandler::MultiDeviceSetupScreenHandler()
+ : BaseScreenHandler(kScreenId) {
+ set_call_js_prefix(kJsScreenPath);
+}
+
+MultiDeviceSetupScreenHandler::~MultiDeviceSetupScreenHandler() = default;
+
+void MultiDeviceSetupScreenHandler::DeclareLocalizedValues(
+ ::login::LocalizedValuesBuilder* builder) {
+ multidevice_setup::AddLocalizedValuesToBuilder(builder);
+}
+
+void MultiDeviceSetupScreenHandler::Bind(MultiDeviceSetupScreen* screen) {
+ BaseScreenHandler::SetBaseScreen(screen);
+}
+
+void MultiDeviceSetupScreenHandler::Show() {
+ AllowJavascript();
+ ShowScreen(kScreenId);
+ FireWebUIListener("multidevice_setup.initializeSetupFlow");
+}
+
+void MultiDeviceSetupScreenHandler::Hide() {}
+
+void MultiDeviceSetupScreenHandler::Initialize() {}
+
+} // namespace chromeos
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h b/chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h
new file mode 100644
index 00000000000..7df6c393032
--- /dev/null
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h
@@ -0,0 +1,41 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_MULTIDEVICE_SETUP_SCREEN_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_MULTIDEVICE_SETUP_SCREEN_HANDLER_H_
+
+#include "base/macros.h"
+#include "chrome/browser/chromeos/login/screens/multidevice_setup_screen_view.h"
+#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
+
+namespace chromeos {
+
+class MultiDeviceSetupScreen;
+
+// Concrete MultiDeviceSetupScreenView WebUI-based implementation.
+class MultiDeviceSetupScreenHandler : public BaseScreenHandler,
+ public MultiDeviceSetupScreenView {
+ public:
+ MultiDeviceSetupScreenHandler();
+ ~MultiDeviceSetupScreenHandler() override;
+
+ // BaseScreenHandler:
+ void DeclareLocalizedValues(
+ ::login::LocalizedValuesBuilder* builder) override;
+
+ // MultiDeviceSetupScreenView:
+ void Bind(MultiDeviceSetupScreen* screen) override;
+ void Show() override;
+ void Hide() override;
+
+ private:
+ // BaseScreenHandler:
+ void Initialize() override;
+
+ DISALLOW_COPY_AND_ASSIGN(MultiDeviceSetupScreenHandler);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_MULTIDEVICE_SETUP_SCREEN_HANDLER_H_
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc
index 939f64a69a9..fd7e20a72fc 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.cc
@@ -8,7 +8,9 @@
#include "ash/public/interfaces/constants.mojom.h"
#include "base/strings/string_number_conversions.h"
+#include "base/task/post_task.h"
#include "chrome/browser/ui/ash/ash_util.h"
+#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/service_manager_connection.h"
#include "services/service_manager/public/cpp/connector.h"
@@ -62,8 +64,8 @@ void OobeDisplayChooser::TryToPlaceUiOnTouchDisplay() {
display::Screen::GetScreen()->GetPrimaryDisplay();
if (primary_display.is_valid() && !TouchSupportAvailable(primary_display)) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
+ base::PostTaskWithTraits(
+ FROM_HERE, {BrowserThread::UI},
base::BindOnce(&OobeDisplayChooser::MaybeMoveToTouchDisplay,
weak_ptr_factory_.GetWeakPtr()));
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc
index eb08cdc2e10..01d482a0c47 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_display_chooser_unittest.cc
@@ -121,7 +121,7 @@ TEST_F(OobeDisplayChooserTest, PreferTouchAsPrimary) {
// Setup corresponding TouchscreenDevice object
ui::TouchscreenDevice touchscreen =
- ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL,
+ ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_USB,
"Touchscreen", gfx::Size(800, 600), 1);
touchscreen.vendor_id = kWhitelistedId;
ws::InputDeviceClientTestApi().SetTouchscreenDevices({touchscreen});
@@ -164,7 +164,7 @@ TEST_F(OobeDisplayChooserTest, DontSwitchFromTouch) {
// Setup corresponding TouchscreenDevice object
ui::TouchscreenDevice touchscreen =
- ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL,
+ ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_USB,
"Touchscreen", gfx::Size(800, 600), 1);
touchscreen.vendor_id = kWhitelistedId;
ws::InputDeviceClientTestApi().SetTouchscreenDevices({touchscreen});
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index b3a45be6728..6d29d83b006 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -10,6 +10,7 @@
#include "ash/public/cpp/ash_features.h"
#include "ash/public/cpp/ash_switches.h"
+#include "base/bind.h"
#include "base/command_line.h"
#include "base/logging.h"
#include "base/macros.h"
@@ -32,6 +33,7 @@
#include "chrome/browser/extensions/signin/gaia_auth_extension_loader.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/webui/about_ui.h"
#include "chrome/browser/ui/webui/chromeos/login/active_directory_password_change_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.h"
@@ -59,6 +61,7 @@
#include "chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/network_dropdown_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/network_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h"
@@ -66,7 +69,6 @@
#include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
-#include "chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.h"
@@ -78,6 +80,7 @@
#include "chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/user_image_source.h"
+#include "chrome/browser/ui/webui/chromeos/video_source.h"
#include "chrome/browser/ui/webui/test_files_request_filter.h"
#include "chrome/browser/ui/webui/theme_source.h"
#include "chrome/common/chrome_constants.h"
@@ -89,11 +92,14 @@
#include "chrome/grit/chrome_unscaled_resources.h"
#include "chrome/grit/component_extension_resources.h"
#include "chromeos/chromeos_switches.h"
+#include "chromeos/services/multidevice_setup/public/mojom/constants.mojom.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"
#include "components/prefs/pref_service.h"
+#include "content/public/browser/browser_context.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
#include "content/public/common/content_switches.h"
+#include "services/service_manager/public/cpp/connector.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_features.h"
#include "ui/base/webui/web_ui_util.h"
@@ -335,12 +341,6 @@ void OobeUI::ConfigureOobeDisplay() {
AddScreenHandler(std::make_unique<KioskEnableScreenHandler>());
- auto supervised_user_creation_screen_handler =
- std::make_unique<SupervisedUserCreationScreenHandler>();
- supervised_user_creation_screen_view_ =
- supervised_user_creation_screen_handler.get();
- AddScreenHandler(std::move(supervised_user_creation_screen_handler));
-
AddScreenHandler(std::make_unique<WrongHWIDScreenHandler>());
AddScreenHandler(std::make_unique<AutoEnrollmentCheckScreenHandler>());
@@ -426,6 +426,8 @@ void OobeUI::ConfigureOobeDisplay() {
AddScreenHandler(std::make_unique<AssistantOptInFlowScreenHandler>());
+ AddScreenHandler(std::make_unique<MultiDeviceSetupScreenHandler>());
+
// Initialize KioskAppMenuHandler. Note that it is NOT a screen handler.
auto kiosk_app_menu_handler =
std::make_unique<KioskAppMenuHandler>(network_state_informer_);
@@ -434,28 +436,51 @@ void OobeUI::ConfigureOobeDisplay() {
Profile* profile = Profile::FromWebUI(web_ui());
// Set up the chrome://theme/ source, for Chrome logo.
- ThemeSource* theme = new ThemeSource(profile);
- content::URLDataSource::Add(profile, theme);
+ content::URLDataSource::Add(profile, std::make_unique<ThemeSource>(profile));
// Set up the chrome://terms/ data source, for EULA content.
- AboutUIHTMLSource* about_source =
- new AboutUIHTMLSource(chrome::kChromeUITermsHost, profile);
- content::URLDataSource::Add(profile, about_source);
+ content::URLDataSource::Add(
+ profile,
+ std::make_unique<AboutUIHTMLSource>(chrome::kChromeUITermsHost, profile));
// Set up the chrome://userimage/ source.
- UserImageSource* user_image_source = new UserImageSource();
- content::URLDataSource::Add(profile, user_image_source);
+ content::URLDataSource::Add(profile, std::make_unique<UserImageSource>());
// TabHelper is required for OOBE webui to make webview working on it.
content::WebContents* contents = web_ui()->GetWebContents();
extensions::TabHelper::CreateForWebContents(contents);
+ // // Handler for the oobe video assets which will be shown if available.
+ content::URLDataSource::Add(profile,
+ std::make_unique<chromeos::VideoSource>());
+
if (IsRemoraRequisitioned())
oobe_display_chooser_ = std::make_unique<OobeDisplayChooser>();
}
+service_manager::Connector* OobeUI::GetLoggedInUserMojoConnector() {
+ // This function should only be called after the user has logged in.
+ DCHECK(
+ user_manager::UserManager::Get()->IsUserLoggedIn() &&
+ user_manager::UserManager::Get()->GetActiveUser()->is_profile_created());
+ return content::BrowserContext::GetConnectorFor(
+ ProfileManager::GetActiveUserProfile());
+}
+
+void OobeUI::BindMultiDeviceSetup(
+ multidevice_setup::mojom::MultiDeviceSetupRequest request) {
+ GetLoggedInUserMojoConnector()->BindInterface(
+ multidevice_setup::mojom::kServiceName, std::move(request));
+}
+
+void OobeUI::BindPrivilegedHostDeviceSetter(
+ multidevice_setup::mojom::PrivilegedHostDeviceSetterRequest request) {
+ GetLoggedInUserMojoConnector()->BindInterface(
+ multidevice_setup::mojom::kServiceName, std::move(request));
+}
+
OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
- : WebUIController(web_ui) {
+ : ui::MojoWebUIController(web_ui, true /* enable_chrome_send */) {
display_type_ = GetDisplayType(url);
js_calls_container = std::make_unique<JSCallsContainer>();
@@ -480,11 +505,15 @@ OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
content::WebUIDataSource* html_source =
CreateOobeUIDataSource(localized_strings, display_type_);
content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), html_source);
-}
-OobeUI::~OobeUI() {
+ AddHandlerToRegistry(base::BindRepeating(&OobeUI::BindMultiDeviceSetup,
+ base::Unretained(this)));
+ AddHandlerToRegistry(base::BindRepeating(
+ &OobeUI::BindPrivilegedHostDeviceSetter, base::Unretained(this)));
}
+OobeUI::~OobeUI() {}
+
CoreOobeView* OobeUI::GetCoreOobeView() {
return core_handler_;
}
@@ -602,6 +631,10 @@ AssistantOptInFlowScreenView* OobeUI::GetAssistantOptInFlowScreenView() {
return GetView<AssistantOptInFlowScreenHandler>();
}
+MultiDeviceSetupScreenView* OobeUI::GetMultiDeviceSetupScreenView() {
+ return GetView<MultiDeviceSetupScreenHandler>();
+}
+
UserImageView* OobeUI::GetUserImageView() {
return GetView<UserImageScreenHandler>();
}
@@ -610,11 +643,6 @@ ErrorScreen* OobeUI::GetErrorScreen() {
return error_screen_.get();
}
-SupervisedUserCreationScreenHandler*
-OobeUI::GetSupervisedUserCreationScreenView() {
- return supervised_user_creation_screen_view_;
-}
-
GaiaView* OobeUI::GetGaiaScreenView() {
return GetView<GaiaScreenHandler>();
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.h b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
index d40fbf186a4..6ae64eac3b9 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
@@ -18,12 +18,17 @@
#include "chrome/browser/chromeos/settings/shutdown_policy_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h"
-#include "content/public/browser/web_ui_controller.h"
+#include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
+#include "ui/webui/mojo_web_ui_controller.h"
namespace base {
class DictionaryValue;
} // namespace base
+namespace service_manager {
+class Connector;
+} // namespace service_manager
+
namespace chromeos {
class AppDownloadingScreenView;
class AppLaunchSplashScreenView;
@@ -52,6 +57,7 @@ class KioskAutolaunchScreenView;
class KioskEnableScreenView;
class LoginScreenContext;
class MarketingOptInScreenView;
+class MultiDeviceSetupScreenView;
class NativeWindowDelegate;
class NetworkScreenView;
class NetworkStateInformer;
@@ -60,7 +66,6 @@ class RecommendAppsScreenView;
class ResetView;
class SigninScreenHandler;
class SigninScreenHandlerDelegate;
-class SupervisedUserCreationScreenHandler;
class SyncConsentScreenView;
class TermsOfServiceScreenView;
class UserBoardView;
@@ -76,7 +81,7 @@ class WrongHWIDScreenView;
// - welcome screen (setup language/keyboard/network).
// - eula screen (CrOS (+ OEM) EULA content/TPM password/crash reporting).
// - update screen.
-class OobeUI : public content::WebUIController,
+class OobeUI : public ui::MojoWebUIController,
public ShutdownPolicyHandler::Delegate {
public:
// List of known types of OobeUI. Type added as path in chrome://oobe url, for
@@ -127,7 +132,6 @@ class OobeUI : public content::WebUIController,
ErrorScreen* GetErrorScreen();
WrongHWIDScreenView* GetWrongHWIDScreenView();
AutoEnrollmentCheckScreenView* GetAutoEnrollmentCheckScreenView();
- SupervisedUserCreationScreenHandler* GetSupervisedUserCreationScreenView();
AppLaunchSplashScreenView* GetAppLaunchSplashScreenView();
ArcKioskSplashScreenView* GetArcKioskSplashScreenView();
HIDDetectionView* GetHIDDetectionView();
@@ -139,6 +143,7 @@ class OobeUI : public content::WebUIController,
WaitForContainerReadyScreenView* GetWaitForContainerReadyScreenView();
UpdateRequiredView* GetUpdateRequiredScreenView();
AssistantOptInFlowScreenView* GetAssistantOptInFlowScreenView();
+ MultiDeviceSetupScreenView* GetMultiDeviceSetupScreenView();
GaiaView* GetGaiaScreenView();
UserBoardView* GetUserBoardView();
DiscoverScreenView* GetDiscoverScreenView();
@@ -228,6 +233,13 @@ class OobeUI : public content::WebUIController,
// display type.
void ConfigureOobeDisplay();
+ // Adds Mojo bindings for this WebUIController.
+ service_manager::Connector* GetLoggedInUserMojoConnector();
+ void BindMultiDeviceSetup(
+ multidevice_setup::mojom::MultiDeviceSetupRequest request);
+ void BindPrivilegedHostDeviceSetter(
+ multidevice_setup::mojom::PrivilegedHostDeviceSetterRequest request);
+
// Type of UI.
std::string display_type_;
@@ -238,8 +250,6 @@ class OobeUI : public content::WebUIController,
// Reference to CoreOobeHandler that handles common requests of Oobe page.
CoreOobeHandler* core_handler_ = nullptr;
- SupervisedUserCreationScreenHandler* supervised_user_creation_screen_view_ =
- nullptr;
// Reference to SigninScreenHandler that handles sign-in screen requests and
// forwards calls from native code to JS side.
SigninScreenHandler* signin_screen_handler_ = nullptr;
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
index 75924f17d03..df7748287f1 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h"
+#include "base/metrics/histogram_macros.h"
#include "chrome/browser/chromeos/arc/arc_session_manager.h"
#include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h"
#include "chrome/browser/profiles/profile.h"
@@ -23,6 +24,51 @@ constexpr const char kUserActionSkip[] = "recommendAppsSkip";
constexpr const char kUserActionRetry[] = "recommendAppsRetry";
constexpr const char kUserActionInstall[] = "recommendAppsInstall";
+constexpr const int kMaxAppCount = 21;
+
+enum class RecommendAppsScreenState {
+ // These values are persisted to logs. Entries should not be renumbered and
+ // numeric values should never be reused. This should be kept in sync with
+ // RecommendAppsScreenState in enums.xml.
+ SHOW = 0,
+ NO_SHOW = 1,
+ ERROR = 2,
+
+ kMaxValue = ERROR
+};
+
+enum class RecommendAppsScreenAction {
+ // These values are persisted to logs. Entries should not be renumbered and
+ // numeric values should never be reused. This should be kept in sync with
+ // RecommendAppsScreenAction in enums.xml.
+ SKIPPED = 0,
+ RETRIED = 1,
+ SELECTED_NONE = 2,
+ APP_SELECTED = 3,
+
+ kMaxValue = APP_SELECTED
+};
+
+void RecordUmaUserSelectionAppCount(int app_count) {
+ UMA_HISTOGRAM_EXACT_LINEAR("OOBE.RecommendApps.Screen.SelectedAppCount",
+ app_count, kMaxAppCount);
+}
+
+void RecordUmaSelectedRecommendedPercentage(
+ int selected_recommended_percentage) {
+ UMA_HISTOGRAM_PERCENTAGE(
+ "OOBE.RecommendApps.Screen.SelectedRecommendedPercentage",
+ selected_recommended_percentage);
+}
+
+void RecordUmaScreenState(RecommendAppsScreenState state) {
+ UMA_HISTOGRAM_ENUMERATION("OOBE.RecommendApps.Screen.State", state);
+}
+
+void RecordUmaScreenAction(RecommendAppsScreenAction action) {
+ UMA_HISTOGRAM_ENUMERATION("OOBE.RecommendApps.Screen.Action", action);
+}
+
} // namespace
namespace chromeos {
@@ -52,7 +98,7 @@ void RecommendAppsScreenHandler::DeclareLocalizedValues(
void RecommendAppsScreenHandler::RegisterMessages() {
BaseScreenHandler::RegisterMessages();
- AddCallback(kUserActionSkip, &RecommendAppsScreenHandler::HandleSkip);
+ AddCallback(kUserActionSkip, &RecommendAppsScreenHandler::OnUserSkip);
AddCallback(kUserActionRetry, &RecommendAppsScreenHandler::HandleRetry);
AddRawCallback(kUserActionInstall,
&RecommendAppsScreenHandler::HandleInstall);
@@ -86,9 +132,12 @@ void RecommendAppsScreenHandler::Initialize() {}
void RecommendAppsScreenHandler::LoadAppListInUI(const base::Value& app_list) {
if (!page_is_ready()) {
+ RecordUmaScreenState(RecommendAppsScreenState::ERROR);
CallJS("showError");
return;
}
+
+ RecordUmaScreenState(RecommendAppsScreenState::SHOW);
const ui::ResourceBundle& resource_bundle =
ui::ResourceBundle::GetSharedInstance();
base::StringPiece app_list_webview = resource_bundle.GetRawDataResource(
@@ -98,35 +147,58 @@ void RecommendAppsScreenHandler::LoadAppListInUI(const base::Value& app_list) {
}
void RecommendAppsScreenHandler::OnLoadError() {
+ RecordUmaScreenState(RecommendAppsScreenState::ERROR);
CallJS("showError");
}
void RecommendAppsScreenHandler::OnLoadSuccess(const base::Value& app_list) {
+ recommended_app_count_ = static_cast<int>(app_list.GetList().size());
LoadAppListInUI(app_list);
}
void RecommendAppsScreenHandler::OnParseResponseError() {
+ RecordUmaScreenState(RecommendAppsScreenState::NO_SHOW);
+ HandleSkip();
+}
+void RecommendAppsScreenHandler::OnUserSkip() {
+ RecordUmaScreenAction(RecommendAppsScreenAction::SKIPPED);
HandleSkip();
}
+// There are three scenarios that HandleSkip() is called:
+// 1. The user clicks the Skip button.
+// 2. The user doesn't select any apps and click the Install button.
+// 3. The response from the fetcher cannot be parsed.
+// Each case has its own entry point to be logged.
void RecommendAppsScreenHandler::HandleSkip() {
for (auto& observer : observer_list_)
observer.OnSkip();
}
void RecommendAppsScreenHandler::HandleRetry() {
+ RecordUmaScreenAction(RecommendAppsScreenAction::RETRIED);
for (auto& observer : observer_list_)
observer.OnRetry();
}
void RecommendAppsScreenHandler::HandleInstall(const base::ListValue* args) {
+ if (recommended_app_count_ != 0) {
+ int selected_app_count = static_cast<int>(args->GetSize());
+ int selected_recommended_percentage =
+ 100 * selected_app_count / recommended_app_count_;
+ RecordUmaUserSelectionAppCount(selected_app_count);
+ RecordUmaSelectedRecommendedPercentage(selected_recommended_percentage);
+ }
+
// If the user does not select any apps, we should skip the app downloading
// screen.
if (args->GetList().empty()) {
+ RecordUmaScreenAction(RecommendAppsScreenAction::SELECTED_NONE);
HandleSkip();
return;
}
+ RecordUmaScreenAction(RecommendAppsScreenAction::APP_SELECTED);
pref_service_->Set(arc::prefs::kArcFastAppReinstallPackages, *args);
arc::ArcFastAppReinstallStarter* fast_app_reinstall_starter =
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h b/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h
index 723c44bfc42..f935f3cd83c 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h
@@ -43,6 +43,8 @@ class RecommendAppsScreenHandler : public BaseScreenHandler,
void OnLoadSuccess(const base::Value& app_list) override;
void OnParseResponseError() override;
+ void OnUserSkip();
+
// Call the JS function to load the list of apps in the WebView.
void LoadAppListInUI(const base::Value& app_list);
@@ -57,6 +59,8 @@ class RecommendAppsScreenHandler : public BaseScreenHandler,
base::ObserverList<RecommendAppsScreenViewObserver, true>::Unchecked
observer_list_;
+ int recommended_app_count_ = 0;
+
DISALLOW_COPY_AND_ASSIGN(RecommendAppsScreenHandler);
};
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/screenlock_icon_source.h b/chromium/chrome/browser/ui/webui/chromeos/login/screenlock_icon_source.h
index 98e86f8d8d2..d6715f1afa8 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/screenlock_icon_source.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/screenlock_icon_source.h
@@ -18,6 +18,7 @@ class ScreenlockIconSource : public content::URLDataSource {
public:
explicit ScreenlockIconSource(
base::WeakPtr<ScreenlockIconProvider> icon_provider);
+ ~ScreenlockIconSource() override;
// content::URLDataSource implementation.
std::string GetSource() const override;
@@ -32,8 +33,6 @@ class ScreenlockIconSource : public content::URLDataSource {
static std::string GetIconURLForUser(const std::string& username);
private:
- ~ScreenlockIconSource() override;
-
base::WeakPtr<ScreenlockIconProvider> icon_provider_;
DISALLOW_COPY_AND_ASSIGN(ScreenlockIconSource);
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 3ba24b7fc48..e7d6e4c5de3 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -17,7 +17,6 @@
#include "ash/public/interfaces/shutdown.mojom.h"
#include "ash/public/interfaces/tray_action.mojom.h"
#include "ash/shell.h"
-#include "ash/strings/grit/ash_strings.h"
#include "base/bind.h"
#include "base/i18n/number_formatting.h"
#include "base/location.h"
@@ -93,6 +92,7 @@
#include "chromeos/login/auth/user_context.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
+#include "chromeos/strings/grit/chromeos_strings.h"
#include "components/login/localized_values_builder.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
@@ -376,8 +376,6 @@ void SigninScreenHandler::DeclareLocalizedValues(
builder->Add("addUser", IDS_ASH_ADD_USER_BUTTON);
builder->Add("browseAsGuest", IDS_ASH_BROWSE_AS_GUEST_BUTTON);
builder->Add("moreOptions", IDS_MORE_OPTIONS_BUTTON);
- builder->Add("addSupervisedUser",
- IDS_CREATE_LEGACY_SUPERVISED_USER_MENU_LABEL);
builder->Add("cancel", IDS_ASH_SHELF_CANCEL_BUTTON);
builder->Add("signOutUser", IDS_ASH_SHELF_SIGN_OUT_BUTTON);
builder->Add("unlockUser", IDS_ASH_SHELF_UNLOCK_BUTTON);
@@ -506,8 +504,6 @@ void SigninScreenHandler::RegisterMessages() {
AddCallback("completeOfflineAuthentication",
&SigninScreenHandler::HandleCompleteOfflineAuthentication);
AddCallback("launchIncognito", &SigninScreenHandler::HandleLaunchIncognito);
- AddCallback("showSupervisedUserCreationScreen",
- &SigninScreenHandler::HandleShowSupervisedUserCreationScreen);
AddCallback("launchPublicSession",
&SigninScreenHandler::HandleLaunchPublicSession);
AddRawCallback("offlineLogin", &SigninScreenHandler::HandleOfflineLogin);
@@ -854,15 +850,15 @@ void SigninScreenHandler::SetupAndShowOfflineMessage(
std::string());
}
- const bool guest_signin_allowed =
- chrome_user_manager_util::IsGuestSessionAllowed(CrosSettings::Get()) &&
- IsSigninScreenError(error_screen_->GetErrorState());
+ bool guest_signin_allowed = false;
+ bool offline_login_allowed = false;
+ if (IsSigninScreenError(error_screen_->GetErrorState())) {
+ guest_signin_allowed =
+ user_manager::UserManager::Get()->IsGuestSessionAllowed();
+ offline_login_allowed = error_screen_->GetErrorState() !=
+ NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT;
+ }
error_screen_->AllowGuestSignin(guest_signin_allowed);
-
- const bool offline_login_allowed =
- IsSigninScreenError(error_screen_->GetErrorState()) &&
- error_screen_->GetErrorState() !=
- NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT;
error_screen_->AllowOfflineLogin(offline_login_allowed);
if (GetCurrentScreen() != OobeScreen::SCREEN_ERROR_MESSAGE) {
@@ -1265,15 +1261,6 @@ void SigninScreenHandler::HandleLaunchIncognito() {
delegate_->Login(context, SigninSpecifics());
}
-void SigninScreenHandler::HandleShowSupervisedUserCreationScreen() {
- if (!user_manager::UserManager::Get()->AreSupervisedUsersAllowed()) {
- LOG(ERROR) << "Managed users not allowed.";
- return;
- }
- LoginDisplayHost::default_host()->StartWizard(
- OobeScreen::SCREEN_CREATE_SUPERVISED_USER_FLOW);
-}
-
void SigninScreenHandler::HandleLaunchPublicSession(
const AccountId& account_id,
const std::string& locale,
@@ -1629,6 +1616,11 @@ void SigninScreenHandler::HandleMaxIncorrectPasswordAttempts(
}
void SigninScreenHandler::HandleSendFeedback() {
+ if (!LoginFeedback::IsEnabled()) {
+ OnFeedbackFinished();
+ return;
+ }
+
login_feedback_ =
std::make_unique<LoginFeedback>(Profile::FromWebUI(web_ui()));
login_feedback_->Request(
@@ -1637,6 +1629,11 @@ void SigninScreenHandler::HandleSendFeedback() {
}
void SigninScreenHandler::HandleSendFeedbackAndResyncUserData() {
+ if (!LoginFeedback::IsEnabled()) {
+ OnUnrecoverableCryptohomeFeedbackFinished();
+ return;
+ }
+
const std::string description = base::StringPrintf(
"Auto generated feedback for http://crbug.com/547857.\n"
"(uniquifier:%s)",
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
index 9c3a788ca45..c8e234bf48d 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
@@ -73,7 +73,6 @@ class ErrorScreensHistogramHelper;
class GaiaScreenHandler;
class LoginFeedback;
class NativeWindowDelegate;
-class SupervisedUserCreationScreenHandler;
class User;
class UserContext;
@@ -280,7 +279,6 @@ class SigninScreenHandler
friend class GaiaScreenHandler;
friend class ReportDnsCacheClearedOnUIThread;
- friend class SupervisedUserCreationScreenHandler;
friend class LoginDisplayHostMojo;
void ShowImpl();
@@ -391,7 +389,6 @@ class SigninScreenHandler
void HandleUnlockOnLoginSuccess();
void HandleLoginScreenUpdate();
void HandleShowLoadingTimeoutError();
- void HandleShowSupervisedUserCreationScreen();
void HandleFocusPod(const AccountId& account_id, bool is_large_pod);
void HandleNoPodFocused();
void HandleHardlockPod(const std::string& user_id);
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.cc
deleted file mode 100644
index a6e4906ac6c..00000000000
--- a/chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.cc
+++ /dev/null
@@ -1,461 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h"
-
-#include <memory>
-#include <utility>
-
-#include "base/strings/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
-#include "chrome/browser/chromeos/login/oobe_screen.h"
-#include "chrome/browser/chromeos/login/screens/user_selection_screen.h"
-#include "chrome/browser/chromeos/login/supervised/supervised_user_creation_flow.h"
-#include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
-#include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
-#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/ui/ash/wallpaper_controller_client.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/grit/browser_resources.h"
-#include "chrome/grit/generated_resources.h"
-#include "chromeos/audio/chromeos_sounds.h"
-#include "components/account_id/account_id.h"
-#include "components/login/localized_values_builder.h"
-#include "components/user_manager/user_manager.h"
-#include "components/user_manager/user_type.h"
-#include "google_apis/gaia/gaia_auth_util.h"
-#include "media/audio/sounds/sounds_manager.h"
-#include "net/base/data_url.h"
-#include "net/base/escape.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-
-const char kJsScreenPath[] = "login.SupervisedUserCreationScreen";
-
-namespace chromeos {
-
-SupervisedUserCreationScreenHandler::SupervisedUserCreationScreenHandler()
- : BaseScreenHandler(OobeScreen::SCREEN_CREATE_SUPERVISED_USER_FLOW) {
- set_call_js_prefix(kJsScreenPath);
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
- media::SoundsManager* manager = media::SoundsManager::Get();
- manager->Initialize(SOUND_OBJECT_DELETE,
- bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV));
- manager->Initialize(SOUND_CAMERA_SNAP,
- bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV));
-}
-
-SupervisedUserCreationScreenHandler::~SupervisedUserCreationScreenHandler() {
- if (delegate_) {
- delegate_->OnViewDestroyed(this);
- }
-}
-
-void SupervisedUserCreationScreenHandler::DeclareLocalizedValues(
- ::login::LocalizedValuesBuilder* builder) {
- builder->Add(
- "supervisedUserCreationFlowRetryButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATION_ERROR_RETRY_BUTTON_TITLE);
- builder->Add(
- "supervisedUserCreationFlowCancelButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATION_ERROR_CANCEL_BUTTON_TITLE);
- builder->Add(
- "supervisedUserCreationFlowGotitButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATION_GOT_IT_BUTTON_TITLE);
-
- builder->Add("createSupervisedUserIntroTextTitle",
- IDS_CREATE_SUPERVISED_INTRO_TEXT_TITLE);
- builder->Add("createSupervisedUserIntroAlternateText",
- IDS_CREATE_SUPERVISED_INTRO_ALTERNATE_TEXT);
- builder->Add("createSupervisedUserIntroText1",
- IDS_CREATE_SUPERVISED_INTRO_TEXT_1);
- builder->Add("createSupervisedUserIntroManagerItem1",
- IDS_CREATE_SUPERVISED_INTRO_MANAGER_ITEM_1);
- builder->Add("createSupervisedUserIntroManagerItem2",
- IDS_CREATE_SUPERVISED_INTRO_MANAGER_ITEM_2);
- builder->Add("createSupervisedUserIntroManagerItem3",
- IDS_CREATE_SUPERVISED_INTRO_MANAGER_ITEM_3);
- builder->Add("createSupervisedUserIntroText2",
- IDS_CREATE_SUPERVISED_INTRO_TEXT_2);
- builder->AddF("createSupervisedUserIntroText3",
- IDS_CREATE_SUPERVISED_INTRO_TEXT_3,
- base::UTF8ToUTF16(
- chrome::kLegacySupervisedUserManagementDisplayURL));
-
- builder->Add("createSupervisedUserPickManagerTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_PICK_MANAGER_TITLE);
- builder->AddF("createSupervisedUserPickManagerTitleExplanation",
- IDS_CREATE_SUPERVISED_USER_CREATE_PICK_MANAGER_EXPLANATION,
- base::UTF8ToUTF16(
- chrome::kLegacySupervisedUserManagementDisplayURL));
- builder->Add("createSupervisedUserManagerPasswordHint",
- IDS_CREATE_SUPERVISED_USER_CREATE_MANAGER_PASSWORD_HINT);
- builder->Add("createSupervisedUserWrongManagerPasswordText",
- IDS_CREATE_SUPERVISED_USER_MANAGER_PASSWORD_ERROR);
-
- builder->Add("createSupervisedUserNameTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_ACCOUNT_NAME_TITLE);
- builder->Add("createSupervisedUserNameAccessibleTitle",
- IDS_CREATE_SUPERVISED_USER_SETUP_ACCESSIBLE_TITLE);
- builder->Add("createSupervisedUserNameExplanation",
- IDS_CREATE_SUPERVISED_USER_CREATE_ACCOUNT_NAME_EXPLANATION);
- builder->Add("createSupervisedUserNameHint",
- IDS_CREATE_SUPERVISED_USER_CREATE_ACCOUNT_NAME_HINT);
- builder->Add("createSupervisedUserPasswordTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_PASSWORD_TITLE);
- builder->Add("createSupervisedUserPasswordExplanation",
- IDS_CREATE_SUPERVISED_USER_CREATE_PASSWORD_EXPLANATION);
- builder->Add("createSupervisedUserPasswordHint",
- IDS_CREATE_SUPERVISED_USER_CREATE_PASSWORD_HINT);
- builder->Add("createSupervisedUserPasswordConfirmHint",
- IDS_CREATE_SUPERVISED_USER_CREATE_PASSWORD_CONFIRM_HINT);
- builder->Add("supervisedUserCreationFlowProceedButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_CONTINUE_BUTTON_TEXT);
- builder->Add("supervisedUserCreationFlowStartButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_START_BUTTON_TEXT);
- builder->Add("supervisedUserCreationFlowPrevButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_PREVIOUS_BUTTON_TEXT);
- builder->Add("supervisedUserCreationFlowNextButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_NEXT_BUTTON_TEXT);
- builder->Add("supervisedUserCreationFlowHandleErrorButtonTitle",
- IDS_CREATE_SUPERVISED_USER_CREATE_HANDLE_ERROR_BUTTON_TEXT);
- builder->Add("createSupervisedUserPasswordMismatchError",
- IDS_CREATE_SUPERVISED_USER_CREATE_PASSWORD_MISMATCH_ERROR);
-
- builder->Add("createSupervisedUserCreatedText1",
- IDS_CREATE_SUPERVISED_USER_CREATED_1_TEXT_1);
- builder->Add("createSupervisedUserCreatedText2",
- IDS_CREATE_SUPERVISED_USER_CREATED_1_TEXT_2);
- builder->Add("createSupervisedUserCreatedText3",
- IDS_CREATE_SUPERVISED_USER_CREATED_1_TEXT_3);
-
- builder->Add("importExistingSupervisedUserTitle",
- IDS_IMPORT_EXISTING_LEGACY_SUPERVISED_USER_TITLE);
- builder->Add("importSupervisedUserLink",
- IDS_IMPORT_EXISTING_LEGACY_SUPERVISED_USER_TITLE);
- builder->Add("importExistingSupervisedUserText",
- IDS_IMPORT_EXISTING_LEGACY_SUPERVISED_USER_TEXT);
- builder->Add("supervisedUserCreationFlowImportButtonTitle",
- IDS_IMPORT_EXISTING_LEGACY_SUPERVISED_USER_OK);
- builder->Add("createSupervisedUserLink",
- IDS_CREATE_NEW_LEGACY_SUPERVISED_USER_LINK);
- builder->Add("importBubbleText",
- IDS_SUPERVISED_USER_IMPORT_BUBBLE_TEXT);
- builder->Add("importUserExists",
- IDS_SUPERVISED_USER_IMPORT_USER_EXIST);
- builder->Add("importUsernameExists",
- IDS_SUPERVISED_USER_IMPORT_USERNAME_EXIST);
-
- builder->Add("managementURL",
- chrome::kLegacySupervisedUserManagementDisplayURL);
-
- // TODO(antrim) : this is an explicit code duplications with UserImageScreen.
- // It should be removed by issue 251179.
- builder->Add("takePhoto", IDS_OPTIONS_CHANGE_PICTURE_TAKE_PHOTO);
- builder->Add("discardPhoto", IDS_OPTIONS_CHANGE_PICTURE_DISCARD_PHOTO);
- builder->Add("photoCaptureAccessibleText",
- IDS_OPTIONS_PHOTO_CAPTURE_ACCESSIBLE_TEXT);
- builder->Add("photoDiscardAccessibleText",
- IDS_OPTIONS_PHOTO_DISCARD_ACCESSIBLE_TEXT);
-}
-
-void SupervisedUserCreationScreenHandler::Initialize() {}
-
-void SupervisedUserCreationScreenHandler::RegisterMessages() {
- AddCallback("finishLocalSupervisedUserCreation",
- &SupervisedUserCreationScreenHandler::
- HandleFinishLocalSupervisedUserCreation);
- AddCallback("abortLocalSupervisedUserCreation",
- &SupervisedUserCreationScreenHandler::
- HandleAbortLocalSupervisedUserCreation);
- AddCallback("hideLocalSupervisedUserCreation",
- &SupervisedUserCreationScreenHandler::
- HandleHideLocalSupervisedUserCreation);
- AddCallback("checkSupervisedUserName",
- &SupervisedUserCreationScreenHandler::
- HandleCheckSupervisedUserName);
- AddCallback("authenticateManagerInSupervisedUserCreationFlow",
- &SupervisedUserCreationScreenHandler::
- HandleAuthenticateManager);
- AddCallback("specifySupervisedUserCreationFlowUserData",
- &SupervisedUserCreationScreenHandler::
- HandleCreateSupervisedUser);
- AddCallback("managerSelectedOnSupervisedUserCreationFlow",
- &SupervisedUserCreationScreenHandler::
- HandleManagerSelected);
- AddCallback("userSelectedForImportInSupervisedUserCreationFlow",
- &SupervisedUserCreationScreenHandler::
- HandleImportUserSelected);
- AddCallback("importSupervisedUser",
- &SupervisedUserCreationScreenHandler::
- HandleImportSupervisedUser);
- AddCallback("importSupervisedUserWithPassword",
- &SupervisedUserCreationScreenHandler::
- HandleImportSupervisedUserWithPassword);
-
-
- // TODO(antrim) : this is an explicit code duplications with UserImageScreen.
- // It should be removed by issue 251179.
- AddCallback("supervisedUserGetImages",
- &SupervisedUserCreationScreenHandler::HandleGetImages);
-
- AddCallback("supervisedUserPhotoTaken",
- &SupervisedUserCreationScreenHandler::HandlePhotoTaken);
- AddCallback("supervisedUserTakePhoto",
- &SupervisedUserCreationScreenHandler::HandleTakePhoto);
- AddCallback("supervisedUserDiscardPhoto",
- &SupervisedUserCreationScreenHandler::HandleDiscardPhoto);
- AddCallback("supervisedUserSelectImage",
- &SupervisedUserCreationScreenHandler::HandleSelectImage);
- AddCallback("currentSupervisedUserPage",
- &SupervisedUserCreationScreenHandler::
- HandleCurrentSupervisedUserPage);
-}
-
-void SupervisedUserCreationScreenHandler::Show() {
- std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
- std::unique_ptr<base::ListValue> users_list(new base::ListValue());
- const user_manager::UserList& users =
- ChromeUserManager::Get()->GetUsersAllowedForSupervisedUsersCreation();
- std::string owner;
- chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner);
-
- for (user_manager::UserList::const_iterator it = users.begin();
- it != users.end();
- ++it) {
- bool is_owner = ((*it)->GetAccountId().GetUserEmail() == owner);
- auto user_dict = std::make_unique<base::DictionaryValue>();
- UserSelectionScreen::FillUserDictionary(
- *it, is_owner, false, /* is_signin_to_add */
- proximity_auth::mojom::AuthType::OFFLINE_PASSWORD,
- NULL, /* public_session_recommended_locales */
- user_dict.get());
- users_list->Append(std::move(user_dict));
- }
- data->Set("managers", std::move(users_list));
- ShowScreenWithData(OobeScreen::SCREEN_CREATE_SUPERVISED_USER_FLOW,
- data.get());
-
- if (!delegate_)
- return;
-}
-
-void SupervisedUserCreationScreenHandler::Hide() {
-}
-
-void SupervisedUserCreationScreenHandler::ShowIntroPage() {
- CallJS("showIntroPage");
-}
-
-void SupervisedUserCreationScreenHandler::ShowManagerPasswordError() {
- CallJS("showManagerPasswordError");
-}
-
-void SupervisedUserCreationScreenHandler::ShowStatusMessage(
- bool is_progress,
- const base::string16& message) {
- if (is_progress)
- CallJS("showProgress", message);
- else
- CallJS("showStatusError", message);
-}
-
-void SupervisedUserCreationScreenHandler::ShowUsernamePage() {
- CallJS("showUsernamePage");
-}
-
-void SupervisedUserCreationScreenHandler::ShowTutorialPage() {
- CallJS("showTutorialPage");
-}
-
-void SupervisedUserCreationScreenHandler::ShowErrorPage(
- const base::string16& title,
- const base::string16& message,
- const base::string16& button_text) {
- CallJS("showErrorPage", title, message, button_text);
-}
-
-void SupervisedUserCreationScreenHandler::SetDelegate(Delegate* delegate) {
- delegate_ = delegate;
-}
-
-void SupervisedUserCreationScreenHandler::
- HandleFinishLocalSupervisedUserCreation() {
- delegate_->FinishFlow();
-}
-
-void SupervisedUserCreationScreenHandler::
- HandleAbortLocalSupervisedUserCreation() {
- delegate_->AbortFlow();
-}
-
-void SupervisedUserCreationScreenHandler::
- HandleHideLocalSupervisedUserCreation() {
- delegate_->HideFlow();
-}
-
-void SupervisedUserCreationScreenHandler::HandleManagerSelected(
- const AccountId& manager_id) {
- if (!delegate_)
- return;
- WallpaperControllerClient::Get()->ShowUserWallpaper(manager_id);
-}
-
-void SupervisedUserCreationScreenHandler::HandleImportUserSelected(
- const AccountId& account_id) {
- if (!delegate_)
- return;
-}
-
-void SupervisedUserCreationScreenHandler::HandleCheckSupervisedUserName(
- const base::string16& name) {
- std::string user_id;
- if (NULL !=
- ChromeUserManager::Get()->GetSupervisedUserManager()->FindByDisplayName(
- base::CollapseWhitespace(name, true))) {
- CallJS("supervisedUserNameError", name,
- l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATE_USERNAME_ALREADY_EXISTS));
- } else if (net::EscapeForHTML(name) != name) {
- CallJS("supervisedUserNameError", name,
- l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATE_ILLEGAL_USERNAME));
- } else if (delegate_ && delegate_->FindUserByDisplayName(
- base::CollapseWhitespace(name, true), &user_id)) {
- CallJS("supervisedUserSuggestImport", name, user_id);
- } else {
- CallJS("supervisedUserNameOk", name);
- }
-}
-
-void SupervisedUserCreationScreenHandler::HandleCreateSupervisedUser(
- const base::string16& new_raw_user_name,
- const std::string& new_user_password) {
- if (!delegate_)
- return;
- const base::string16 new_user_name =
- base::CollapseWhitespace(new_raw_user_name, true);
- if (NULL !=
- ChromeUserManager::Get()->GetSupervisedUserManager()->FindByDisplayName(
- new_user_name)) {
- CallJS("supervisedUserNameError", new_user_name,
- l10n_util::GetStringFUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATE_USERNAME_ALREADY_EXISTS,
- new_user_name));
- return;
- }
- if (net::EscapeForHTML(new_user_name) != new_user_name) {
- CallJS("supervisedUserNameError", new_user_name,
- l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATE_ILLEGAL_USERNAME));
- return;
- }
-
- if (new_user_password.length() == 0) {
- CallJS("showPasswordError",
- l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATE_PASSWORD_TOO_SHORT));
- return;
- }
-
- ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATION_CREATION_PROGRESS_MESSAGE));
-
- delegate_->CreateSupervisedUser(new_user_name, new_user_password);
-}
-
-void SupervisedUserCreationScreenHandler::HandleImportSupervisedUser(
- const AccountId& account_id) {
- if (!delegate_)
- return;
-
- ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATION_CREATION_PROGRESS_MESSAGE));
-
- delegate_->ImportSupervisedUser(account_id.GetUserEmail());
-}
-
-void SupervisedUserCreationScreenHandler::
- HandleImportSupervisedUserWithPassword(const AccountId& account_id,
- const std::string& password) {
- if (!delegate_)
- return;
-
- ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16(
- IDS_CREATE_SUPERVISED_USER_CREATION_CREATION_PROGRESS_MESSAGE));
-
- delegate_->ImportSupervisedUserWithPassword(account_id.GetUserEmail(),
- password);
-}
-
-void SupervisedUserCreationScreenHandler::HandleAuthenticateManager(
- const AccountId& manager_raw_account_id,
- const std::string& manager_password) {
- const AccountId manager_account_id = AccountId::FromUserEmailGaiaId(
- gaia::SanitizeEmail(manager_raw_account_id.GetUserEmail()),
- manager_raw_account_id.GetGaiaId());
- delegate_->AuthenticateManager(manager_account_id, manager_password);
-}
-
-// TODO(antrim) : this is an explicit code duplications with UserImageScreen.
-// It should be removed by issue 251179.
-void SupervisedUserCreationScreenHandler::HandleGetImages() {
- base::DictionaryValue result;
- result.SetInteger("first", default_user_image::GetFirstDefaultImage());
- std::unique_ptr<base::ListValue> default_images =
- default_user_image::GetAsDictionary(true /* all */);
- result.Set("images", std::move(default_images));
- CallJS("setDefaultImages", result);
-}
-
-void SupervisedUserCreationScreenHandler::HandlePhotoTaken
- (const std::string& image_url) {
- std::string mime_type, charset, raw_data;
- if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data))
- NOTREACHED();
- DCHECK_EQ("image/png", mime_type);
-
- if (delegate_)
- delegate_->OnPhotoTaken(raw_data);
-}
-
-void SupervisedUserCreationScreenHandler::HandleTakePhoto() {
- AccessibilityManager::Get()->PlayEarcon(
- SOUND_CAMERA_SNAP, PlaySoundOption::ONLY_IF_SPOKEN_FEEDBACK_ENABLED);
-}
-
-void SupervisedUserCreationScreenHandler::HandleDiscardPhoto() {
- AccessibilityManager::Get()->PlayEarcon(
- SOUND_OBJECT_DELETE, PlaySoundOption::ONLY_IF_SPOKEN_FEEDBACK_ENABLED);
-}
-
-void SupervisedUserCreationScreenHandler::HandleSelectImage(
- const std::string& image_type,
- const std::string& image_url) {
- if (delegate_)
- delegate_->OnImageSelected(image_type, image_url);
-}
-
-void SupervisedUserCreationScreenHandler::HandleCurrentSupervisedUserPage(
- const std::string& page) {
- if (delegate_)
- delegate_->OnPageSelected(page);
-}
-
-void SupervisedUserCreationScreenHandler::ShowPage(
- const std::string& page) {
- CallJS("showPage", page);
-}
-
-void SupervisedUserCreationScreenHandler::SetCameraPresent(bool present) {
- CallJS("setCameraPresent", present);
-}
-
-void SupervisedUserCreationScreenHandler::ShowExistingSupervisedUsers(
- const base::ListValue* users) {
- CallJS("setExistingSupervisedUsers", *users);
-}
-
-} // namespace chromeos
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h b/chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h
deleted file mode 100644
index d81551add56..00000000000
--- a/chromium/chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISED_USER_CREATION_SCREEN_HANDLER_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISED_USER_CREATION_SCREEN_HANDLER_H_
-
-#include <string>
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "base/strings/string16.h"
-#include "chrome/browser/chromeos/login/users/default_user_image/default_user_images.h"
-#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
-#include "content/public/browser/web_ui.h"
-
-namespace base {
-class ListValue;
-}
-
-namespace chromeos {
-
-class SupervisedUserCreationScreenHandler : public BaseScreenHandler {
- public:
- class Delegate {
- public:
- virtual ~Delegate() {}
-
- // This method is called, when view is being destroyed. Note, if Delegate
- // is destroyed earlier then it has to call SetDelegate(nullptr).
- virtual void OnViewDestroyed(SupervisedUserCreationScreenHandler* view) = 0;
-
- // Starts supervised user creation flow, with manager identified by
- // |manager_id| and |manager_password|.
- virtual void AuthenticateManager(const AccountId& manager_account_id,
- const std::string& manager_password) = 0;
-
- // Starts supervised user creation flow, with supervised user that would
- // have |display_name| and authenticated by the |supervised_user_password|.
- virtual void CreateSupervisedUser(
- const base::string16& display_name,
- const std::string& supervised_user_password) = 0;
-
- // Look up if user with name |display_name| already exist and can be
- // imported. Returns user ID in |out_id|. Returns true if user was found,
- // false otherwise.
- virtual bool FindUserByDisplayName(const base::string16& display_name,
- std::string *out_id) const = 0;
-
- // Starts supervised user import flow for user identified with |user_id|.
- virtual void ImportSupervisedUser(const std::string& user_id) = 0;
- // Starts supervised user import flow for user identified with |user_id| and
- // additional |password|.
- virtual void ImportSupervisedUserWithPassword(
- const std::string& user_id, const std::string& password) = 0;
-
- virtual void AbortFlow() = 0;
- virtual void FinishFlow() = 0;
- virtual void HideFlow() = 0;
-
- virtual void OnPhotoTaken(const std::string& raw_data) = 0;
- virtual void OnImageSelected(const std::string& image_type,
- const std::string& image_url) = 0;
- virtual void OnImageAccepted() = 0;
- virtual void OnPageSelected(const std::string& page) = 0;
- };
-
- SupervisedUserCreationScreenHandler();
- ~SupervisedUserCreationScreenHandler() override;
-
- virtual void Show();
- virtual void Hide();
- virtual void SetDelegate(Delegate* delegate);
-
- void ShowManagerPasswordError();
-
- void ShowIntroPage();
- void ShowUsernamePage();
-
- // Shows progress or error message close in the button area. |is_progress| is
- // true for progress messages and false for error messages.
- void ShowStatusMessage(bool is_progress, const base::string16& message);
- void ShowTutorialPage();
-
- void ShowErrorPage(const base::string16& title,
- const base::string16& message,
- const base::string16& button_text);
-
- // Navigates to specified page.
- void ShowPage(const std::string& page);
-
- void SetCameraPresent(bool enabled);
-
- void ShowExistingSupervisedUsers(const base::ListValue* users);
-
- // BaseScreenHandler implementation:
- void DeclareLocalizedValues(
- ::login::LocalizedValuesBuilder* builder) override;
- void Initialize() override;
-
- // WebUIMessageHandler implementation:
- void RegisterMessages() override;
-
- private:
- // WebUI message handlers.
- void HandleCheckSupervisedUserName(const base::string16& name);
-
- void HandleManagerSelected(const AccountId& manager_id);
- void HandleImportUserSelected(const AccountId& account_id);
-
- void HandleFinishLocalSupervisedUserCreation();
- void HandleAbortLocalSupervisedUserCreation();
- void HandleHideLocalSupervisedUserCreation();
- void HandleRetryLocalSupervisedUserCreation(const base::ListValue* args);
- void HandleCurrentSupervisedUserPage(const std::string& current_page);
-
- void HandleAuthenticateManager(const AccountId& manager_account_id,
- const std::string& manager_password);
- void HandleCreateSupervisedUser(const base::string16& new_raw_user_name,
- const std::string& new_user_password);
- void HandleImportSupervisedUser(const AccountId& account_id);
- void HandleImportSupervisedUserWithPassword(const AccountId& account_id,
- const std::string& password);
-
- void HandleGetImages();
- void HandlePhotoTaken(const std::string& image_url);
- void HandleTakePhoto();
- void HandleDiscardPhoto();
- void HandleSelectImage(const std::string& image_url,
- const std::string& image_type);
-
- void UpdateText(const std::string& element_id, const base::string16& text);
-
- Delegate* delegate_ = nullptr;
-
- DISALLOW_COPY_AND_ASSIGN(SupervisedUserCreationScreenHandler);
-};
-
-} // namespace chromeos
-
-#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISED_USER_CREATION_SCREEN_HANDLER_H_
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc
index cec38d8690f..973fea5dfa4 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc
@@ -55,6 +55,11 @@ void UpdateScreenHandler::DeclareLocalizedValues(
builder->Add("cancelledUpdateMessage", IDS_EMPTY_STRING);
#endif
+ builder->Add("updateOverCellularPromptTitle",
+ IDS_UPDATE_OVER_CELLULAR_PROMPT_TITLE);
+ builder->Add("updateOverCellularPromptMessage",
+ IDS_UPDATE_OVER_CELLULAR_PROMPT_MESSAGE);
+
// For Material Design OOBE
builder->Add("updatingScreenTitle", IDS_UPDATING_SCREEN_TITLE);
}
diff --git a/chromium/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc b/chromium/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
index b5b0c3fa9fd..98e01775b7c 100644
--- a/chromium/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
+++ b/chromium/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
@@ -147,18 +147,11 @@ void WelcomeScreenHandler::DeclareLocalizedValues(
builder->Add("keyboardDropdownTitle", IDS_KEYBOARD_DROPDOWN_TITLE);
builder->Add("keyboardDropdownLabel", IDS_KEYBOARD_DROPDOWN_LABEL);
- builder->Add("highContrastOptionOff", IDS_HIGH_CONTRAST_OPTION_OFF);
- builder->Add("highContrastOptionOn", IDS_HIGH_CONTRAST_OPTION_ON);
+ builder->Add("a11ySettingToggleOptionOff",
+ IDS_A11Y_SETTING_TOGGLE_OPTION_OFF);
+ builder->Add("a11ySettingToggleOptionOn", IDS_A11Y_SETTING_TOGGLE_OPTION_ON);
builder->Add("largeCursorOptionOff", IDS_LARGE_CURSOR_OPTION_OFF);
builder->Add("largeCursorOptionOn", IDS_LARGE_CURSOR_OPTION_ON);
- builder->Add("screenMagnifierOptionOff", IDS_SCREEN_MAGNIFIER_OPTION_OFF);
- builder->Add("screenMagnifierOptionOn", IDS_SCREEN_MAGNIFIER_OPTION_ON);
- builder->Add("spokenFeedbackOptionOff", IDS_SPOKEN_FEEDBACK_OPTION_OFF);
- builder->Add("spokenFeedbackOptionOn", IDS_SPOKEN_FEEDBACK_OPTION_ON);
- builder->Add("selectToSpeakOptionOff", IDS_SELECT_TO_SPEAK_OPTION_OFF);
- builder->Add("selectToSpeakOptionOn", IDS_SELECT_TO_SPEAK_OPTION_ON);
- builder->Add("virtualKeyboardOptionOff", IDS_VIRTUAL_KEYBOARD_OPTION_OFF);
- builder->Add("virtualKeyboardOptionOn", IDS_VIRTUAL_KEYBOARD_OPTION_ON);
builder->Add("timezoneDropdownTitle", IDS_TIMEZONE_DROPDOWN_TITLE);
builder->Add("timezoneButtonText", IDS_TIMEZONE_BUTTON_TEXT);