Commit c4358727 authored by Lucas Tenório's avatar Lucas Tenório Committed by Commit Bot

Add skeleton for Supervision Onboarding page.

This new OOBE/Login page will handle custom setup needed for
supervised/child accounts. At the moment this version does nothing and
simply shows a placeholder screen. It will only be shown if the user
has the "EnableSupervisionOnboardingScreens" feature enabled.

Bug: 958995
Change-Id: I2ddec65ddd25d7850a04b166ba332a86e47688e2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1594112
Commit-Queue: Lucas Tenório <ltenorio@chromium.org>
Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Reviewed-by: default avatarToni Baržić <tbarzic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#657423}
parent 000c3cfa
...@@ -1309,6 +1309,8 @@ source_set("chromeos") { ...@@ -1309,6 +1309,8 @@ source_set("chromeos") {
"login/screens/recommend_apps_screen.h", "login/screens/recommend_apps_screen.h",
"login/screens/reset_screen.cc", "login/screens/reset_screen.cc",
"login/screens/reset_screen.h", "login/screens/reset_screen.h",
"login/screens/supervision_onboarding_screen.cc",
"login/screens/supervision_onboarding_screen.h",
"login/screens/supervision_transition_screen.cc", "login/screens/supervision_transition_screen.cc",
"login/screens/supervision_transition_screen.h", "login/screens/supervision_transition_screen.h",
"login/screens/sync_consent_screen.cc", "login/screens/sync_consent_screen.cc",
......
// Copyright 2019 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/chromeos/login/screens/supervision_onboarding_screen.h"
#include "base/logging.h"
#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
#include "chromeos/constants/chromeos_features.h"
namespace chromeos {
namespace {
constexpr const char kFinishedUserAction[] = "setup-finished";
} // namespace
SupervisionOnboardingScreen::SupervisionOnboardingScreen(
SupervisionOnboardingScreenView* view,
const base::RepeatingClosure& exit_callback)
: BaseScreen(SupervisionOnboardingScreenView::kScreenId),
view_(view),
exit_callback_(exit_callback) {
if (view_)
view_->Bind(this);
}
SupervisionOnboardingScreen::~SupervisionOnboardingScreen() {
if (view_)
view_->Unbind();
}
void SupervisionOnboardingScreen::Show() {
// TODO(ltenorio): Show this screen only for supervised accounts when the
// test support is improved by b/959244.
if (view_ && base::FeatureList::IsEnabled(
features::kEnableSupervisionOnboardingScreens)) {
view_->Show();
return;
}
Exit();
}
void SupervisionOnboardingScreen::Hide() {
if (view_)
view_->Hide();
}
void SupervisionOnboardingScreen::OnUserAction(const std::string& action_id) {
if (action_id == kFinishedUserAction) {
Exit();
return;
}
BaseScreen::OnUserAction(action_id);
}
void SupervisionOnboardingScreen::OnViewDestroyed(
SupervisionOnboardingScreenView* view) {
if (view_ == view)
view_ = nullptr;
}
void SupervisionOnboardingScreen::Exit() {
exit_callback_.Run();
}
} // namespace chromeos
// Copyright 2019 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_CHROMEOS_LOGIN_SCREENS_SUPERVISION_ONBOARDING_SCREEN_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SUPERVISION_ONBOARDING_SCREEN_H_
#include <string>
#include "base/callback.h"
#include "base/macros.h"
#include "chrome/browser/chromeos/login/screens/base_screen.h"
namespace chromeos {
class SupervisionOnboardingScreenView;
class SupervisionOnboardingScreen : public BaseScreen {
public:
SupervisionOnboardingScreen(SupervisionOnboardingScreenView* view,
const base::RepeatingClosure& exit_callback);
~SupervisionOnboardingScreen() override;
// BaseScreen:
void Show() override;
void Hide() override;
void OnUserAction(const std::string& action_id) override;
// Called when view is destroyed so there's no dead reference to it.
void OnViewDestroyed(SupervisionOnboardingScreenView* view);
// Called when supervision onboarding has finished, exits the screen.
void Exit();
private:
SupervisionOnboardingScreenView* view_;
base::RepeatingClosure exit_callback_;
DISALLOW_COPY_AND_ASSIGN(SupervisionOnboardingScreen);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SUPERVISION_ONBOARDING_SCREEN_H_
// Copyright 2019 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/chromeos/login/screens/supervision_onboarding_screen.h"
#include <initializer_list>
#include <memory>
#include "base/bind.h"
#include "base/run_loop.h"
#include "base/strings/string_piece.h"
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/chromeos/login/login_wizard.h"
#include "chrome/browser/chromeos/login/mixin_based_in_process_browser_test.h"
#include "chrome/browser/chromeos/login/oobe_screen.h"
#include "chrome/browser/chromeos/login/test/js_checker.h"
#include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
#include "chromeos/constants/chromeos_features.h"
namespace chromeos {
namespace {
constexpr char kTestUser[] = "test-user1@gmail.com";
chromeos::OobeUI* GetOobeUI() {
auto* host = chromeos::LoginDisplayHost::default_host();
return host ? host->GetOobeUI() : nullptr;
}
} // namespace
class SupervisionOnboardingTest : public MixinBasedInProcessBrowserTest {
public:
SupervisionOnboardingTest() = default;
~SupervisionOnboardingTest() override = default;
void SetUpOnMainThread() override {
login_manager_.LoginAndWaitForActiveSession(
LoginManagerMixin::CreateDefaultUserContext(test_user_));
ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW);
WizardController::default_controller()
->screen_manager()
->DeleteScreenForTesting(SupervisionOnboardingScreenView::kScreenId);
auto supervision_onboarding_screen =
std::make_unique<SupervisionOnboardingScreen>(
GetOobeUI()->GetView<SupervisionOnboardingScreenHandler>(),
base::BindRepeating(&SupervisionOnboardingTest::HandleScreenExit,
base::Unretained(this)));
supervision_onboarding_screen_ = supervision_onboarding_screen.get();
WizardController::default_controller()
->screen_manager()
->SetScreenForTesting(std::move(supervision_onboarding_screen));
MixinBasedInProcessBrowserTest::SetUpOnMainThread();
}
void TurnOnFeature() {
feature_list_.InitAndEnableFeature(
features::kEnableSupervisionOnboardingScreens);
}
void ShowAndWaitForScreen() {
supervision_onboarding_screen_->Show();
OobeScreenWaiter screen_waiter(SupervisionOnboardingScreenView::kScreenId);
screen_waiter.set_assert_next_screen();
screen_waiter.Wait();
}
void ClickButton(const std::string& button_id) {
std::initializer_list<base::StringPiece> button_path = {
"supervision-onboarding", button_id};
test::OobeJS().CreateEnabledWaiter(true, button_path)->Wait();
test::OobeJS().TapOnPath(button_path);
}
void WaitForScreenExit() {
if (screen_exited_)
return;
base::RunLoop run_loop;
screen_exit_callback_ = run_loop.QuitClosure();
run_loop.Run();
}
SupervisionOnboardingScreen* supervision_onboarding_screen_;
base::test::ScopedFeatureList feature_list_;
private:
void HandleScreenExit() {
ASSERT_FALSE(screen_exited_);
screen_exited_ = true;
if (screen_exit_callback_)
std::move(screen_exit_callback_).Run();
}
bool screen_exited_ = false;
base::OnceClosure screen_exit_callback_;
const LoginManagerMixin::TestUserInfo test_user_{
AccountId::FromUserEmailGaiaId(kTestUser, kTestUser)};
LoginManagerMixin login_manager_{&mixin_host_, {test_user_}};
};
IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest,
ExitImmediatelyWhenFeatureIsOff) {
supervision_onboarding_screen_->Show();
WaitForScreenExit();
}
IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest, NextButtonExitsScreen) {
TurnOnFeature();
ShowAndWaitForScreen();
ClickButton("next-button");
WaitForScreenExit();
}
IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest, BackButtonExitsScreen) {
TurnOnFeature();
ShowAndWaitForScreen();
ClickButton("back-button");
WaitForScreenExit();
}
IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest, SkipButtonExitsScreen) {
TurnOnFeature();
ShowAndWaitForScreen();
ClickButton("skip-button");
WaitForScreenExit();
}
} // namespace chromeos
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#include "chrome/browser/chromeos/login/screens/network_screen.h" #include "chrome/browser/chromeos/login/screens/network_screen.h"
#include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h" #include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h"
#include "chrome/browser/chromeos/login/screens/reset_screen.h" #include "chrome/browser/chromeos/login/screens/reset_screen.h"
#include "chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h"
#include "chrome/browser/chromeos/login/screens/supervision_transition_screen.h" #include "chrome/browser/chromeos/login/screens/supervision_transition_screen.h"
#include "chrome/browser/chromeos/login/screens/sync_consent_screen.h" #include "chrome/browser/chromeos/login/screens/sync_consent_screen.h"
#include "chrome/browser/chromeos/login/screens/update_required_screen.h" #include "chrome/browser/chromeos/login/screens/update_required_screen.h"
...@@ -115,6 +116,7 @@ ...@@ -115,6 +116,7 @@
#include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h" #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/reset_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/sync_consent_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/terms_of_service_screen_handler.h"
...@@ -507,6 +509,10 @@ std::vector<std::unique_ptr<BaseScreen>> WizardController::CreateScreens() { ...@@ -507,6 +509,10 @@ std::vector<std::unique_ptr<BaseScreen>> WizardController::CreateScreens() {
oobe_ui->GetView<DeviceDisabledScreenHandler>())); oobe_ui->GetView<DeviceDisabledScreenHandler>()));
append(std::make_unique<EncryptionMigrationScreen>( append(std::make_unique<EncryptionMigrationScreen>(
oobe_ui->GetView<EncryptionMigrationScreenHandler>())); oobe_ui->GetView<EncryptionMigrationScreenHandler>()));
append(std::make_unique<SupervisionOnboardingScreen>(
oobe_ui->GetView<SupervisionOnboardingScreenHandler>(),
base::BindRepeating(&WizardController::OnSupervisionOnboardingScreenExit,
weak_factory_.GetWeakPtr())));
append(std::make_unique<SupervisionTransitionScreen>( append(std::make_unique<SupervisionTransitionScreen>(
oobe_ui->GetView<SupervisionTransitionScreenHandler>(), oobe_ui->GetView<SupervisionTransitionScreenHandler>(),
base::BindRepeating(&WizardController::OnSupervisionTransitionScreenExit, base::BindRepeating(&WizardController::OnSupervisionTransitionScreenExit,
...@@ -673,6 +679,10 @@ void WizardController::ShowEncryptionMigrationScreen() { ...@@ -673,6 +679,10 @@ void WizardController::ShowEncryptionMigrationScreen() {
SetCurrentScreen(GetScreen(EncryptionMigrationScreenView::kScreenId)); SetCurrentScreen(GetScreen(EncryptionMigrationScreenView::kScreenId));
} }
void WizardController::ShowSupervisionOnboardingScreen() {
SetCurrentScreen(GetScreen(SupervisionOnboardingScreenView::kScreenId));
}
void WizardController::ShowSupervisionTransitionScreen() { void WizardController::ShowSupervisionTransitionScreen() {
SetCurrentScreen(GetScreen(SupervisionTransitionScreenView::kScreenId)); SetCurrentScreen(GetScreen(SupervisionTransitionScreenView::kScreenId));
} }
...@@ -1110,7 +1120,7 @@ void WizardController::OnAssistantOptInFlowScreenExit() { ...@@ -1110,7 +1120,7 @@ void WizardController::OnAssistantOptInFlowScreenExit() {
void WizardController::OnMultiDeviceSetupScreenExit() { void WizardController::OnMultiDeviceSetupScreenExit() {
OnScreenExit(MultiDeviceSetupScreenView::kScreenId, 0 /* exit_code */); OnScreenExit(MultiDeviceSetupScreenView::kScreenId, 0 /* exit_code */);
OnOobeFlowFinished(); ShowSupervisionOnboardingScreen();
} }
void WizardController::OnResetScreenExit() { void WizardController::OnResetScreenExit() {
...@@ -1138,6 +1148,12 @@ void WizardController::OnDeviceModificationCanceled() { ...@@ -1138,6 +1148,12 @@ void WizardController::OnDeviceModificationCanceled() {
} }
} }
void WizardController::OnSupervisionOnboardingScreenExit() {
OnScreenExit(SupervisionOnboardingScreenView::kScreenId, 0 /* exit_code */);
OnOobeFlowFinished();
}
void WizardController::OnSupervisionTransitionScreenExit() { void WizardController::OnSupervisionTransitionScreenExit() {
OnScreenExit(SupervisionTransitionScreenView::kScreenId, 0 /* exit_code */); OnScreenExit(SupervisionTransitionScreenView::kScreenId, 0 /* exit_code */);
...@@ -1451,6 +1467,8 @@ void WizardController::AdvanceToScreen(OobeScreenId screen) { ...@@ -1451,6 +1467,8 @@ void WizardController::AdvanceToScreen(OobeScreenId screen) {
ShowFingerprintSetupScreen(); ShowFingerprintSetupScreen();
} else if (screen == MarketingOptInScreenView::kScreenId) { } else if (screen == MarketingOptInScreenView::kScreenId) {
ShowMarketingOptInScreen(); ShowMarketingOptInScreen();
} else if (screen == SupervisionOnboardingScreenView::kScreenId) {
ShowSupervisionOnboardingScreen();
} else if (screen == SupervisionTransitionScreenView::kScreenId) { } else if (screen == SupervisionTransitionScreenView::kScreenId) {
ShowSupervisionTransitionScreen(); ShowSupervisionTransitionScreen();
} else if (screen != OobeScreen::SCREEN_TEST_NO_WINDOW) { } else if (screen != OobeScreen::SCREEN_TEST_NO_WINDOW) {
......
...@@ -179,6 +179,7 @@ class WizardController : public BaseScreenDelegate { ...@@ -179,6 +179,7 @@ class WizardController : public BaseScreenDelegate {
void ShowHIDDetectionScreen(); void ShowHIDDetectionScreen();
void ShowDeviceDisabledScreen(); void ShowDeviceDisabledScreen();
void ShowEncryptionMigrationScreen(); void ShowEncryptionMigrationScreen();
void ShowSupervisionOnboardingScreen();
void ShowSupervisionTransitionScreen(); void ShowSupervisionTransitionScreen();
void ShowUpdateRequiredScreen(); void ShowUpdateRequiredScreen();
void ShowAssistantOptInFlowScreen(); void ShowAssistantOptInFlowScreen();
...@@ -227,6 +228,7 @@ class WizardController : public BaseScreenDelegate { ...@@ -227,6 +228,7 @@ class WizardController : public BaseScreenDelegate {
void OnMultiDeviceSetupScreenExit(); void OnMultiDeviceSetupScreenExit();
void OnResetScreenExit(); void OnResetScreenExit();
void OnDeviceModificationCanceled(); void OnDeviceModificationCanceled();
void OnSupervisionOnboardingScreenExit();
void OnSupervisionTransitionScreenExit(); void OnSupervisionTransitionScreenExit();
void OnOobeFlowFinished(); void OnOobeFlowFinished();
......
...@@ -31,5 +31,6 @@ ...@@ -31,5 +31,6 @@
<include src="marketing_opt_in.html"> <include src="marketing_opt_in.html">
<include src="../assistant_optin/assistant_optin_flow.html"> <include src="../assistant_optin/assistant_optin_flow.html">
<include src="multidevice_setup_first_run.html"> <include src="multidevice_setup_first_run.html">
<include src="supervision_onboarding.html">
<script src="chrome://oobe/custom_elements.js"></script> <script src="chrome://oobe/custom_elements.js"></script>
...@@ -37,3 +37,4 @@ ...@@ -37,3 +37,4 @@
// <include src="marketing_opt_in.js"> // <include src="marketing_opt_in.js">
// <include src="../assistant_optin/assistant_optin_flow.js"> // <include src="../assistant_optin/assistant_optin_flow.js">
// <include src="multidevice_setup_first_run.js"> // <include src="multidevice_setup_first_run.js">
// <include src="supervision_onboarding.js">
...@@ -43,5 +43,6 @@ ...@@ -43,5 +43,6 @@
<include src="marketing_opt_in.html"> <include src="marketing_opt_in.html">
<include src="../assistant_optin/assistant_optin_flow.html"> <include src="../assistant_optin/assistant_optin_flow.html">
<include src="multidevice_setup_first_run.html"> <include src="multidevice_setup_first_run.html">
<include src="supervision_onboarding.html">
<script src="chrome://oobe/custom_elements.js"></script> <script src="chrome://oobe/custom_elements.js"></script>
...@@ -54,3 +54,4 @@ ...@@ -54,3 +54,4 @@
// <include src="marketing_opt_in.js"> // <include src="marketing_opt_in.js">
// <include src="../assistant_optin/assistant_optin_flow.js"> // <include src="../assistant_optin/assistant_optin_flow.js">
// <include src="multidevice_setup_first_run.js"> // <include src="multidevice_setup_first_run.js">
// <include src="supervision_onboarding.js">
...@@ -26,3 +26,6 @@ ...@@ -26,3 +26,6 @@
<include src="screen_discover.html"> <include src="screen_discover.html">
<include src="screen_marketing_opt_in.html"> <include src="screen_marketing_opt_in.html">
<include src="screen_multidevice_setup.html"> <include src="screen_multidevice_setup.html">
<supervision-onboarding id="supervision-onboarding" class="step right hidden"
full-screen-dialog hidden>
</supervision-onboarding>
...@@ -36,3 +36,6 @@ ...@@ -36,3 +36,6 @@
<include src="screen_discover.html"> <include src="screen_discover.html">
<include src="screen_marketing_opt_in.html"> <include src="screen_marketing_opt_in.html">
<include src="screen_multidevice_setup.html"> <include src="screen_multidevice_setup.html">
<supervision-onboarding id="supervision-onboarding" class="step right hidden"
full-screen-dialog hidden>
</supervision-onboarding>
<!-- Copyright 2019 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. -->
<link rel="import" href="chrome://resources/html/polymer.html">
<link rel="import" href="chrome://oobe/custom_elements.html">
<!--
UI for the Supervision Onboarding flow that's displayed for the first login
or OOBE of supervised users. -->
<dom-module id="supervision-onboarding">
<template>
<link rel="stylesheet" href="oobe_flex_layout.css">
<oobe-dialog id="supervision-onboarding-dialog" has-buttons>
<iron-icon src="chrome://oobe/supervision_icon.png" slot="oobe-icon"
aria-hidden="true">
</iron-icon>
<h1 slot="title">Placeholder Supervision Onboarding flow</h1>
<div slot="bottom-buttons" class="flex layout horizontal">
<oobe-back-button id="back-button"
on-tap="onBack_">
Back
</oobe-back-button>
<div class="flex">
</div>
<oobe-text-button id="skip-button"
border on-tap="onSkip_">
Skip
</oobe-text-button>
<oobe-text-button id="next-button"
inverse on-tap="onNext_">
Next
</oobe-text-button>
</div>
</oobe-dialog>
</template>
</dom-module>
// Copyright 2019 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.
/**
* @fileoverview Supervision Onboarding polymer element. It forwards user input
* to the C++ handler.
*/
Polymer({
is: 'supervision-onboarding',
behaviors: [LoginScreenBehavior],
/** @override */
ready: function() {
this.initializeLoginScreen('SupervisionOnboardingScreen', {
commonScreenSize: true,
resetAllowed: true,
});
},
/** @private */
onBack_: function() {
this.exitSetupFlow_();
},
/** @private */
onSkip_: function() {
this.exitSetupFlow_();
},
/** @private */
onNext_: function() {
this.exitSetupFlow_();
},
/** @private */
exitSetupFlow_: function() {
chrome.send('login.SupervisionOnboardingScreen.userActed',
['setup-finished']);
}
});
...@@ -1676,6 +1676,8 @@ jumbo_split_static_library("ui") { ...@@ -1676,6 +1676,8 @@ jumbo_split_static_library("ui") {
"webui/chromeos/login/reset_screen_handler.h", "webui/chromeos/login/reset_screen_handler.h",
"webui/chromeos/login/signin_screen_handler.cc", "webui/chromeos/login/signin_screen_handler.cc",
"webui/chromeos/login/signin_screen_handler.h", "webui/chromeos/login/signin_screen_handler.h",
"webui/chromeos/login/supervision_onboarding_screen_handler.cc",
"webui/chromeos/login/supervision_onboarding_screen_handler.h",
"webui/chromeos/login/supervision_transition_screen_handler.cc", "webui/chromeos/login/supervision_transition_screen_handler.cc",
"webui/chromeos/login/supervision_transition_screen_handler.h", "webui/chromeos/login/supervision_transition_screen_handler.h",
"webui/chromeos/login/sync_consent_screen_handler.cc", "webui/chromeos/login/sync_consent_screen_handler.cc",
......
...@@ -67,6 +67,7 @@ ...@@ -67,6 +67,7 @@
#include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h" #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/reset_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/sync_consent_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/terms_of_service_screen_handler.h"
...@@ -417,6 +418,9 @@ void OobeUI::ConfigureOobeDisplay() { ...@@ -417,6 +418,9 @@ void OobeUI::ConfigureOobeDisplay() {
AddScreenHandler(std::make_unique<EncryptionMigrationScreenHandler>( AddScreenHandler(std::make_unique<EncryptionMigrationScreenHandler>(
js_calls_container_.get())); js_calls_container_.get()));
AddScreenHandler(std::make_unique<SupervisionOnboardingScreenHandler>(
js_calls_container_.get()));
AddScreenHandler(std::make_unique<SupervisionTransitionScreenHandler>( AddScreenHandler(std::make_unique<SupervisionTransitionScreenHandler>(
js_calls_container_.get())); js_calls_container_.get()));
......
// Copyright 2019 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/supervision_onboarding_screen_handler.h"
#include "base/bind.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/oobe_screen.h"
#include "chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/ash/login_screen_client.h"
#include "components/login/localized_values_builder.h"
namespace chromeos {
constexpr StaticOobeScreenId SupervisionOnboardingScreenView::kScreenId;
SupervisionOnboardingScreenHandler::SupervisionOnboardingScreenHandler(
JSCallsContainer* js_calls_container)
: BaseScreenHandler(kScreenId, js_calls_container) {
set_user_acted_method_path("login.SupervisionOnboardingScreen.userActed");
}
SupervisionOnboardingScreenHandler::~SupervisionOnboardingScreenHandler() {
if (screen_)
screen_->OnViewDestroyed(this);
}
void SupervisionOnboardingScreenHandler::DeclareLocalizedValues(
::login::LocalizedValuesBuilder* builder) {
// TODO(ltenorio): Add the strings for the back/next buttons here.
}
void SupervisionOnboardingScreenHandler::Bind(
SupervisionOnboardingScreen* screen) {
BaseScreenHandler::SetBaseScreen(screen);
screen_ = screen;
}
void SupervisionOnboardingScreenHandler::Unbind() {
screen_ = nullptr;
BaseScreenHandler::SetBaseScreen(nullptr);
}
void SupervisionOnboardingScreenHandler::Show() {
ShowScreen(kScreenId);
}
void SupervisionOnboardingScreenHandler::Hide() {}
void SupervisionOnboardingScreenHandler::Initialize() {}
} // namespace chromeos
// Copyright 2019 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_SUPERVISION_ONBOARDING_SCREEN_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISION_ONBOARDING_SCREEN_HANDLER_H_
#include <memory>
#include <string>
#include "base/macros.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
#include "components/prefs/pref_change_registrar.h"
namespace chromeos {
class SupervisionOnboardingScreen;
// Interface for dependency injection between SupervisionOnboardingScreen
// and its WebUI representation.
class SupervisionOnboardingScreenView {
public:
constexpr static StaticOobeScreenId kScreenId{"supervision-onboarding"};
virtual ~SupervisionOnboardingScreenView() {}
virtual void Bind(SupervisionOnboardingScreen* screen) = 0;
virtual void Unbind() = 0;
virtual void Show() = 0;
virtual void Hide() = 0;
protected:
SupervisionOnboardingScreenView() = default;
private:
DISALLOW_COPY_AND_ASSIGN(SupervisionOnboardingScreenView);
};
class SupervisionOnboardingScreenHandler
: public BaseScreenHandler,
public SupervisionOnboardingScreenView {
public:
using TView = SupervisionOnboardingScreenView;
explicit SupervisionOnboardingScreenHandler(
JSCallsContainer* js_calls_container);
~SupervisionOnboardingScreenHandler() override;
// BaseScreenHandler:
void DeclareLocalizedValues(
::login::LocalizedValuesBuilder* builder) override;
// SupervisionOnboardingScreenView:
void Bind(SupervisionOnboardingScreen* screen) override;
void Unbind() override;
void Show() override;
void Hide() override;
private:
// BaseScreenHandler:
void Initialize() override;
SupervisionOnboardingScreen* screen_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(SupervisionOnboardingScreenHandler);
};
} // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISION_ONBOARDING_SCREEN_HANDLER_H_
...@@ -1893,6 +1893,7 @@ test("browser_tests") { ...@@ -1893,6 +1893,7 @@ test("browser_tests") {
"../browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.cc", "../browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.cc",
"../browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.h", "../browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.h",
"../browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc", "../browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc",
"../browser/chromeos/login/screens/supervision_onboarding_screen_browsertest.cc",
"../browser/chromeos/login/screens/update_screen_browsertest.cc", "../browser/chromeos/login/screens/update_screen_browsertest.cc",
"../browser/chromeos/login/screens/user_selection_screen_browsertest.cc", "../browser/chromeos/login/screens/user_selection_screen_browsertest.cc",
"../browser/chromeos/login/screens/welcome_screen_browsertest.cc", "../browser/chromeos/login/screens/welcome_screen_browsertest.cc",
......
...@@ -67,6 +67,11 @@ const base::Feature kMojoDBusRelay{"MojoDBusRelay", ...@@ -67,6 +67,11 @@ const base::Feature kMojoDBusRelay{"MojoDBusRelay",
const base::Feature kMyFilesVolume{"MyFilesVolume", const base::Feature kMyFilesVolume{"MyFilesVolume",
base::FEATURE_ENABLED_BY_DEFAULT}; base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, will display screens responsible for additional setup for
// supervised users.
const base::Feature kEnableSupervisionOnboardingScreens{
"EnableSupervisionOnboardingScreens", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, will display blocking screens during re-authentication after a // If enabled, will display blocking screens during re-authentication after a
// supervision transition occurred. // supervision transition occurred.
const base::Feature kEnableSupervisionTransitionScreens{ const base::Feature kEnableSupervisionTransitionScreens{
......
...@@ -39,6 +39,8 @@ extern const base::Feature kEnableMessagesWebPush; ...@@ -39,6 +39,8 @@ extern const base::Feature kEnableMessagesWebPush;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMojoDBusRelay; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMojoDBusRelay;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMyFilesVolume; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMyFilesVolume;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kEnableSupervisionOnboardingScreens;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kEnableSupervisionTransitionScreens; extern const base::Feature kEnableSupervisionTransitionScreens;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kFsNosymfollow; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kFsNosymfollow;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment