Commit 79084ffb authored by Denis Kuznetsov's avatar Denis Kuznetsov Committed by Commit Bot

Migrate Kiosk Enable screen to OOBE Dialog

Bug: 1002539
Change-Id: I75d52584a892bb517b15e97a3d2877e676071ed3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1932808
Commit-Queue: Denis Kuznetsov [CET] <antrim@chromium.org>
Reviewed-by: default avatarRoman Aleksandrov <raleksandrov@google.com>
Reviewed-by: default avatarRoman Sorokin [CET] <rsorokin@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720019}
parent 3312ba07
......@@ -177,15 +177,9 @@ enum NotificationType {
// Send when kiosk auto-launch warning screen had completed.
NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_COMPLETED,
// Send when enable consumer kiosk warning screen is visible.
NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE,
// Send when consumer kiosk has been enabled.
NOTIFICATION_KIOSK_ENABLED,
// Send when enable consumer kiosk warning screen had completed.
NOTIFICATION_KIOSK_ENABLE_WARNING_COMPLETED,
// Sent when kiosk app list is loaded in UI.
NOTIFICATION_KIOSK_APPS_LOADED,
......
......@@ -59,6 +59,7 @@
#include "chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
......@@ -825,6 +826,10 @@ class KioskTest : public OobeBaseTest {
NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_};
// We need Fake gaia to avoid network errors that can be caused by
// attempts to load real GAIA.
FakeGaiaMixin fake_gaia_{&mixin_host_, embedded_test_server()};
private:
bool use_consumer_kiosk_mode_ = true;
std::string test_app_id_;
......@@ -1155,18 +1160,11 @@ IN_PROC_BROWSER_TEST_F(KioskTest, KioskEnableCancel) {
base::Value("kiosk_enable"));
// Wait for the kiosk_enable screen to show and cancel the screen.
content::WindowedNotificationObserver(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE,
content::NotificationService::AllSources())
.Wait();
GetLoginUI()->CallJavascriptFunctionUnsafe(
"login.KioskEnableScreen.enableKioskForTesting", base::Value(false));
OobeScreenWaiter(KioskEnableScreenView::kScreenId).Wait();
test::OobeJS().TapOnPath({"kiosk-enable", "close"});
// Wait for the kiosk_enable screen to disappear.
content::WindowedNotificationObserver(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_COMPLETED,
content::NotificationService::AllSources())
.Wait();
OobeScreenWaiter(GaiaView::kScreenId).Wait();
// Check that the status still says configurable.
EXPECT_EQ(KioskAppManager::CONSUMER_KIOSK_AUTO_LAUNCH_CONFIGURABLE,
......@@ -1190,13 +1188,9 @@ IN_PROC_BROWSER_TEST_F(KioskTest, KioskEnableConfirmed) {
GetLoginUI()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.handleAccelerator",
base::Value("kiosk_enable"));
// Wait for the kiosk_enable screen to show and cancel the screen.
content::WindowedNotificationObserver(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE,
content::NotificationService::AllSources())
.Wait();
GetLoginUI()->CallJavascriptFunctionUnsafe(
"login.KioskEnableScreen.enableKioskForTesting", base::Value(true));
// Wait for the kiosk_enable screen to show and enable kiosk.
OobeScreenWaiter(KioskEnableScreenView::kScreenId).Wait();
test::OobeJS().TapOnPath({"kiosk-enable", "enable"});
// Wait for the signal that indicates Kiosk Mode is enabled.
content::WindowedNotificationObserver(
......@@ -1224,32 +1218,17 @@ IN_PROC_BROWSER_TEST_F(KioskTest, KioskEnableAfter2ndSigninScreen) {
base::Value("kiosk_enable"));
// Wait for the kiosk_enable screen to show and cancel the screen.
content::WindowedNotificationObserver(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE,
content::NotificationService::AllSources())
.Wait();
GetLoginUI()->CallJavascriptFunctionUnsafe(
"login.KioskEnableScreen.enableKioskForTesting", base::Value(false));
// Wait for the kiosk_enable screen to disappear.
content::WindowedNotificationObserver(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_COMPLETED,
content::NotificationService::AllSources())
.Wait();
OobeScreenWaiter(KioskEnableScreenView::kScreenId).Wait();
test::OobeJS().TapOnPath({"kiosk-enable", "close"});
// Show signin screen again.
LoginDisplayHost::default_host()->StartSignInScreen(LoginScreenContext());
// Wait for signin screen to appear again.
OobeScreenWaiter(GaiaView::kScreenId).Wait();
// Show kiosk enable screen again.
GetLoginUI()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.handleAccelerator",
base::Value("kiosk_enable"));
// And it should show up.
content::WindowedNotificationObserver(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE,
content::NotificationService::AllSources())
.Wait();
OobeScreenWaiter(KioskEnableScreenView::kScreenId).Wait();
}
// crbug.com/766169
......@@ -2291,7 +2270,6 @@ class KioskEnterpriseTest : public KioskTest {
}
private:
FakeGaiaMixin fake_gaia_{&mixin_host_, embedded_test_server()};
DeviceStateMixin device_state_{
&mixin_host_,
......
......@@ -33,6 +33,7 @@ js_type_check("closure_compile") {
":oobe_a11y_option",
":oobe_buttons",
":oobe_dialog",
":oobe_enable_kiosk",
":oobe_eula",
":oobe_i18n_dropdown",
":oobe_network",
......@@ -256,6 +257,14 @@ js_library("oobe_dialog") {
]
}
js_library("oobe_enable_kiosk") {
deps = [
":login_screen_behavior",
":oobe_dialog_host_behavior",
"//ui/webui/resources/js:i18n_behavior",
]
}
js_library("oobe_eula") {
deps = [
":oobe_dialog_host_behavior",
......
......@@ -22,6 +22,7 @@
<include src="oobe_buttons.html">
<include src="oobe_dialog.html">
<include src="oobe_network_icons.html">
<include src="oobe_enable_kiosk.html">
<include src="oobe_reset.html">
<include src="oobe_reset_confirmation_overlay.html">
<include src="oobe_supervision_transition.html">
......
......@@ -30,6 +30,7 @@
// <include src="oobe_dialog.js">
// <include src="oobe_terms_of_service.js">
// <include src="arc_terms_of_service.js">
// <include src="oobe_enable_kiosk.js">
// <include src="oobe_reset.js">
// <include src="oobe_reset_confirmation_overlay.js">
// <include src="encryption_migration.js">
......
......@@ -20,6 +20,7 @@
<include src="oobe_buttons.html">
<include src="oobe_dialog.html">
<include src="oobe_eula.html">
<include src="oobe_enable_kiosk.html">
<include src="oobe_hid_detection.html">
<include src="oobe_reset.html">
<include src="oobe_reset_confirmation_overlay.html">
......
......@@ -31,6 +31,7 @@
// <include src="oobe_buttons.js">
// <include src="oobe_dialog.js">
// <include src="oobe_eula.js">
// <include src="oobe_enable_kiosk.js">
// <include src="oobe_terms_of_service.js">
// <include src="oobe_hid_detection.js">
// <include src="oobe_reset.js">
......
......@@ -51,7 +51,6 @@
<link rel="stylesheet" href="oobe_screen_enable_debugging.css">
<link rel="stylesheet" href="oobe_screen_reset.css">
<link rel="stylesheet" href="oobe_screen_autolaunch.css">
<link rel="stylesheet" href="oobe_screen_enable_kiosk.css">
<link rel="stylesheet" href="oobe_screen_auto_enrollment_check.css">
<link rel="stylesheet" href="oobe_screen_supervision_transition.css">
<link rel="stylesheet" href="screen_app_launch_splash.css">
......
......@@ -21,7 +21,6 @@
// <include src="cr_ui.js">
// <include src="oobe_screen_reset.js">
// <include src="oobe_screen_autolaunch.js">
// <include src="oobe_screen_enable_kiosk.js">
// <include src="oobe_screen_supervision_transition.js">
// <include src="oobe_screen_assistant_optin_flow.js">
// <include src="oobe_select.js">
......@@ -73,7 +72,6 @@ cr.define('cr.ui.Oobe', function() {
login.AccountPickerScreen.register();
login.ResetScreen.register();
login.AutolaunchScreen.register();
login.KioskEnableScreen.register();
login.ErrorMessageScreen.register();
login.TPMErrorMessageScreen.register();
login.PasswordChangedScreen.register();
......
......@@ -2,7 +2,8 @@
<include src="oobe_screen_autolaunch.html">
<oobe-adb-sideloading-screen id="adb-sideloading" class="step hidden">
</oobe-adb-sideloading-screen>
<include src="oobe_screen_enable_kiosk.html">
<kiosk-enable id="kiosk-enable" class="step hidden">
</kiosk-enable>
<terms-of-service id="terms-of-service" class="step right hidden">
</terms-of-service>
<include src="oobe_screen_supervision_transition.html">
......
......@@ -56,7 +56,6 @@
<link rel="stylesheet" href="oobe_screen_enable_debugging.css">
<link rel="stylesheet" href="oobe_screen_reset.css">
<link rel="stylesheet" href="oobe_screen_autolaunch.css">
<link rel="stylesheet" href="oobe_screen_enable_kiosk.css">
<link rel="stylesheet" href="oobe_screen_auto_enrollment_check.css">
<link rel="stylesheet" href="oobe_screen_supervision_transition.css">
......
......@@ -22,7 +22,6 @@
// <include src="cr_ui.js">
// <include src="oobe_screen_reset.js">
// <include src="oobe_screen_autolaunch.js">
// <include src="oobe_screen_enable_kiosk.js">
// <include src="oobe_screen_supervision_transition.js">
// <include src="oobe_screen_assistant_optin_flow.js">
// <include src="oobe_select.js">
......@@ -78,7 +77,6 @@ cr.define('cr.ui.Oobe', function() {
login.EnableDebuggingScreen.register();
login.ResetScreen.register();
login.AutolaunchScreen.register();
login.KioskEnableScreen.register();
login.AccountPickerScreen.register();
login.OAuthEnrollmentScreen.register();
login.ErrorMessageScreen.register();
......
<!-- 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/cr_elements/icons.html">
<link rel="import" href="chrome://resources/html/i18n_behavior.html">
<link rel="import" href="chrome://oobe/custom_elements.html">
<dom-module id="kiosk-enable">
<template>
<link rel="stylesheet" href="oobe_dialog_host.css">
<link rel="stylesheet" href="oobe_flex_layout.css">
<oobe-dialog id="dialog" role="dialog" aria-labelledby="title"
has-buttons footer-shrinkable>
<h1 id="title" slot="title">
[[i18nDynamic(locale,'kioskEnableWarningText')]]
</h1>
<div slot="subtitle">
<span hidden="[[!eq_(state_, 'confirm')]]">
[[i18nDynamic(locale,'kioskEnableWarningDetails')]]
</span>
<span hidden="[[!eq_(state_, 'success')]]">
[[i18nDynamic(locale,'kioskEnableSuccessMsg')]]
</span>
<span hidden="[[!eq_(state_, 'error')]]">
[[i18nDynamic(locale,'kioskEnableErrorMsg')]]
</span>
</div>
<div slot="footer" class="flex layout center-justified vertical">
<img src="chrome://theme/IDR_RESET_WARNING" class="oobe-illustration">
</div>
<div slot="bottom-buttons" class="flex layout horizontal end-justified">
<oobe-text-button id="enable" hidden="[[!eq_(state_, 'confirm')]]"
inverse on-tap="onEnableButton_">
<div>[[i18nDynamic(locale, 'kioskEnableButton')]]</div>
</oobe-text-button>
<oobe-text-button id="close" class="focus-on-show" inverse
on-tap="closeDialog_">
<div>[[primaryButtonText_(locale, state_)]]</div>
</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 Polymer element for displaying material design Enable Kiosk
* screen.
*/
/**
* UI mode for the dialog.
* @enum {string}
*/
const EnableKioskMode = {
CONFIRM: 'confirm',
SUCCESS: 'success',
ERROR: 'error',
};
Polymer({
is: 'kiosk-enable',
behaviors: [I18nBehavior, OobeDialogHostBehavior, LoginScreenBehavior],
properties: {
/**
* Current dialog state
* @type {EnableKioskMode}
* @private
*/
state_: {
type: String,
value: EnableKioskMode.CONFIRM,
},
},
EXTERNAL_API: [
'onCompleted',
],
/** @override */
ready: function() {
this.initializeLoginScreen('KioskEnableScreen', {
resetAllowed: true,
});
},
/** Called after resources are updated. */
updateLocalizedContent: function() {
this.i18nUpdateLocale();
},
/** Called when dialog is shown */
onBeforeShow: function() {
this.state_ = EnableKioskMode.CONFIRM;
this.behaviors.forEach((behavior) => {
if (behavior.onBeforeShow)
behavior.onBeforeShow.call(this);
});
},
/**
* "Enable" button handler
* @private
*/
onEnableButton_: function(event) {
chrome.send('kioskOnEnable');
},
/**
* "Cancel" / "Ok" button handler
* @private
*/
closeDialog_: function(event) {
chrome.send('kioskOnClose');
},
onCompleted: function(success) {
this.state_ = success ? EnableKioskMode.SUCCESS : EnableKioskMode.ERROR;
},
/**
* Simple equality comparison function.
* @private
*/
eq_: function(one, another) {
return one === another;
},
/**
*
* @private
*/
primaryButtonText_(locale, state) {
if (state === EnableKioskMode.CONFIRM)
return this.i18n('kioskOKButton');
return this.i18n('kioskCancelButton');
}
});
/* Copyright 2013 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. */
#kiosk-enable {
min-height: 423px;
padding: 40px 17px 80px;
text-align: center;
width: 722px;
}
#kiosk-enable-controls {
bottom: 80px;
justify-content: center;
}
#kiosk-enable-msg {
color: #606060;
font-size: 22px;
padding: 5px 45px 30px;
}
#kiosk-enable-details {
color: #606060;
font-size: 16px;
padding: 35px 40px 80px;
}
<div class="step hidden" id="kiosk-enable" hidden>
<div class="step-contents">
<div id="kiosk-enable-msg" i18n-content="kioskEnableWarningText"></div>
<img id="kiosk-enable-icon" src="chrome://theme/IDR_RESET_WARNING" alt="">
<div id="kiosk-enable-details"
i18n-content="kioskEnableWarningDetails"></div>
</div>
<div id="kiosk-enable-controls" class="step-controls"></div>
</div>
// Copyright 2013 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 Oobe reset screen implementation.
*/
login.createScreen('KioskEnableScreen', 'kiosk-enable', function() {
return {
EXTERNAL_API: ['enableKioskForTesting', 'onCompleted'],
/**
* Buttons in oobe wizard's button strip.
* @type {array} Array of Buttons.
*/
get buttons() {
var buttons = [];
var confirmButton = this.ownerDocument.createElement('button');
confirmButton.id = 'kiosk-enable-button';
confirmButton.textContent = loadTimeData.getString('kioskEnableButton');
confirmButton.addEventListener('click', function(e) {
chrome.send('kioskOnEnable');
e.stopPropagation();
});
buttons.push(confirmButton);
var cancelButton = this.ownerDocument.createElement('button');
cancelButton.id = 'kiosk-cancel-button';
cancelButton.textContent = loadTimeData.getString('kioskCancelButton');
cancelButton.addEventListener('click', function(e) {
chrome.send('kioskOnClose');
e.stopPropagation();
});
buttons.push(cancelButton);
var okButton = this.ownerDocument.createElement('button');
okButton.id = 'kiosk-ok-button';
okButton.hidden = true;
okButton.textContent = loadTimeData.getString('kioskOKButton');
okButton.addEventListener('click', function(e) {
chrome.send('kioskOnClose');
e.stopPropagation();
});
buttons.push(okButton);
return buttons;
},
/**
* Event handler invoked when the page is shown and ready.
*/
onBeforeShow: function() {
$('kiosk-enable-button').hidden = false;
$('kiosk-cancel-button').hidden = false;
$('kiosk-ok-button').hidden = true;
$('kiosk-enable-details').textContent =
loadTimeData.getString('kioskEnableWarningDetails');
},
/**
* Returns a control which should receive an initial focus.
*/
get defaultControl() {
return $('kiosk-cancel-button');
},
/**
* Cancels the reset and drops the user back to the login screen.
*/
cancel: function() {
chrome.send('kioskOnClose');
},
/**
* Initiates enable/cancel response for testing.
* @param {boolean} confirm True if the screen should confirm auto-launch.
*/
enableKioskForTesting: function(confirm) {
var button =
confirm ? $('kiosk-enable-button') : $('kiosk-cancel-button');
var clickEvent = document.createEvent('Event');
clickEvent.initEvent('click', true, true);
button.dispatchEvent(clickEvent);
},
/**
* Updates completion message on the screen.
* @param {boolean} success True if consumer kiosk was successfully enabled.
*/
onCompleted: function(success) {
$('kiosk-enable-button').hidden = true;
$('kiosk-cancel-button').hidden = true;
$('kiosk-ok-button').hidden = false;
$('kiosk-enable-details').textContent = loadTimeData.getString(
success ? 'kioskEnableSuccessMsg' : 'kioskEnableErrorMsg');
}
};
});
......@@ -7,7 +7,8 @@
<include src="oobe_screen_enable_debugging.html">
<include src="oobe_screen_reset.html">
<include src="oobe_screen_autolaunch.html">
<include src="oobe_screen_enable_kiosk.html">
<kiosk-enable id="kiosk-enable" class="step hidden">
</kiosk-enable>
<terms-of-service id="terms-of-service" class="step right hidden">
</terms-of-service>
<include src="oobe_screen_update.html">
......
......@@ -53,11 +53,6 @@ void KioskEnableScreenHandler::OnGetConsumerKioskAutoLaunchStatus(
}
ShowScreen(kScreenId);
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE,
content::NotificationService::AllSources(),
content::NotificationService::NoDetails());
}
void KioskEnableScreenHandler::SetDelegate(KioskEnableScreen* delegate) {
......@@ -97,11 +92,6 @@ void KioskEnableScreenHandler::RegisterMessages() {
void KioskEnableScreenHandler::HandleOnClose() {
if (delegate_)
delegate_->OnExit();
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_COMPLETED,
content::NotificationService::AllSources(),
content::NotificationService::NoDetails());
}
void KioskEnableScreenHandler::HandleOnEnable() {
......@@ -109,11 +99,6 @@ void KioskEnableScreenHandler::HandleOnEnable() {
NOTREACHED();
if (delegate_)
delegate_->OnExit();
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_COMPLETED,
content::NotificationService::AllSources(),
content::NotificationService::NoDetails());
return;
}
......
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