Commit 2ab0fae2 authored by Aga Wronska's avatar Aga Wronska Committed by Commit Bot

Add test helper for demo mode autotests.

Bug: 870049
Change-Id: Ib5927fd6a095ae5c60bea0eddbef70cb2060f4ba
Reviewed-on: https://chromium-review.googlesource.com/1192583
Commit-Queue: Aga Wronska <agawronska@chromium.org>
Reviewed-by: default avatarMichael Giuffrida <michaelpg@chromium.org>
Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593198}
parent 3446796a
......@@ -349,11 +349,10 @@ class DemoSetupTest : public LoginManagerTest {
EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock(
&MockDemoModeOnlineEnrollmentHelperCreator<DemoModeSetupResult::ERROR>);
auto* const wizard_controller = WizardController::default_controller();
wizard_controller->SimulateDemoModeSetupForTesting();
// Enrollment type is set in the part of the flow that is skipped, That is
// why we need to set it here.
wizard_controller->demo_setup_controller()->set_demo_config(
auto* const wizard_controller = WizardController::default_controller();
wizard_controller->SimulateDemoModeSetupForTesting(
DemoSession::DemoModeConfig::kOnline);
wizard_controller->AdvanceToScreen(OobeScreen::SCREEN_OOBE_DEMO_SETUP);
......
......@@ -1537,8 +1537,11 @@ void WizardController::StartDemoModeSetup() {
ShowDemoModePreferencesScreen();
}
void WizardController::SimulateDemoModeSetupForTesting() {
void WizardController::SimulateDemoModeSetupForTesting(
base::Optional<DemoSession::DemoModeConfig> demo_config) {
demo_setup_controller_ = std::make_unique<DemoSetupController>();
if (demo_config.has_value())
demo_setup_controller_->set_demo_config(*demo_config);
}
///////////////////////////////////////////////////////////////////////////////
......
......@@ -15,9 +15,11 @@
#include "base/memory/linked_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/optional.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
#include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
#include "chrome/browser/chromeos/login/oobe_configuration.h"
#include "chrome/browser/chromeos/login/screen_manager.h"
......@@ -114,7 +116,11 @@ class WizardController : public BaseScreenDelegate,
// chromeos::OobeScreen::SCREEN_OOBE_DEMO_SETUP
void StartDemoModeSetup();
void SimulateDemoModeSetupForTesting();
// Simulates demo mode setup environment. If |demo_config| has a value, it
// is explicitly set on DemoSetupController and going through demo settings
// screens can be skipped.
void SimulateDemoModeSetupForTesting(
base::Optional<DemoSession::DemoModeConfig> demo_config = base::nullopt);
// Advances to login/update screen. Should be used in for testing only.
void SkipToLoginForTesting(const LoginScreenContext& context);
......
// 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.
/**
* @fileoverview Demo mode test utilities.
*/
/** Demo mode test helper. */
class DemoModeTestHelper {
/**
* Start demo mode setup for telemetry.
* @param {string} demoConfig Identifies demo mode type.
*/
static setUp(demoConfig) {
chrome.send('startDemoModeSetupForTesting', [demoConfig]);
}
}
......@@ -22,8 +22,10 @@
// <include src="oobe_screen_welcome.js">
// <include src="multi_tap_detector.js">
// <include src="web_view_helper.js">
// <include src="demo_mode_test_helper.js">
cr.define('cr.ui.Oobe', function() {
return {
/**
* Initializes the OOBE flow. This will cause all C++ handlers to
......
......@@ -17,6 +17,7 @@
#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"
......@@ -227,6 +228,8 @@ void CoreOobeHandler::RegisterMessages() {
AddRawCallback("getPrimaryDisplayNameForTesting",
&CoreOobeHandler::HandleGetPrimaryDisplayNameForTesting);
AddCallback("setupDemoMode", &CoreOobeHandler::HandleSetupDemoMode);
AddCallback("startDemoModeSetupForTesting",
&CoreOobeHandler::HandleStartDemoModeSetupForTesting);
}
void CoreOobeHandler::ShowSignInError(
......@@ -691,6 +694,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();
}
......
......@@ -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.
......
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