Skip to content

Commit

Permalink
Add wizard_controller unit test
Browse files Browse the repository at this point in the history
Add a file for wizard_controller unit tests.
It includes a test that shows how to connect to a network, send user actions, and wait for OOBE screens.

Move rollback tests over from browsertest to the unit test file. They
never needed a browser test set-up.

Bug: b:280794386
Change-Id: I5e3f7f1f8899b777165dc4e510beadf93d1f198b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4746803
Commit-Queue: Miriam Polzer <mpolzer@google.com>
Reviewed-by: Jeroen Dhollander <jeroendh@google.com>
Reviewed-by: Danila Kuzmin <dkuzmin@google.com>
Reviewed-by: Xiaoqian Dai <xdai@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1185104}
  • Loading branch information
Miriam Polzer authored and Chromium LUCI CQ committed Aug 18, 2023
1 parent 582d4ae commit d8a3b5f
Show file tree
Hide file tree
Showing 7 changed files with 344 additions and 12 deletions.
6 changes: 6 additions & 0 deletions ash/test/ash_test_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,12 @@ NoSessionAshTestBase::NoSessionAshTestBase(
set_start_session(false);
}

NoSessionAshTestBase::NoSessionAshTestBase(
std::unique_ptr<base::test::TaskEnvironment> task_environment)
: AshTestBase(std::move(task_environment)) {
set_start_session(false);
}

NoSessionAshTestBase::~NoSessionAshTestBase() = default;

} // namespace ash
2 changes: 2 additions & 0 deletions ash/test/ash_test_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,8 @@ class NoSessionAshTestBase : public AshTestBase {
NoSessionAshTestBase();
explicit NoSessionAshTestBase(
base::test::TaskEnvironment::TimeSource time_source);
explicit NoSessionAshTestBase(
std::unique_ptr<base::test::TaskEnvironment> task_environment);

NoSessionAshTestBase(const NoSessionAshTestBase&) = delete;
NoSessionAshTestBase& operator=(const NoSessionAshTestBase&) = delete;
Expand Down
2 changes: 2 additions & 0 deletions chrome/browser/ash/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -5476,6 +5476,7 @@ source_set("unit_tests") {
"login/users/user_manager_unittest.cc",
"login/version_updater/update_time_estimator_unittest.cc",
"login/version_updater/version_updater_unittest.cc",
"login/wizard_controller_unittest.cc",
"mobile/mobile_activator_unittest.cc",
"nearby/bluetooth_adapter_manager_unittest.cc",
"nearby/nearby_process_manager_impl_unittest.cc",
Expand Down Expand Up @@ -6016,6 +6017,7 @@ source_set("unit_tests") {
"//chromeos/ash/components/dbus/kerberos:kerberos_proto",
"//chromeos/ash/components/dbus/lorgnette_manager",
"//chromeos/ash/components/dbus/lorgnette_manager:lorgnette_proto",
"//chromeos/ash/components/dbus/oobe_config",
"//chromeos/ash/components/dbus/pciguard",
"//chromeos/ash/components/dbus/resourced",
"//chromeos/ash/components/dbus/seneschal",
Expand Down
14 changes: 9 additions & 5 deletions chrome/browser/ash/login/screens/welcome_screen.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "ash/constants/ash_features.h"
#include "ash/constants/ash_switches.h"
#include "base/check_is_test.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/functional/bind.h"
Expand Down Expand Up @@ -195,11 +196,14 @@ WelcomeScreen::WelcomeScreen(base::WeakPtr<WelcomeView> view,
input_method::InputMethodManager::Get()->AddObserver(this);

AccessibilityManager* accessibility_manager = AccessibilityManager::Get();
CHECK(accessibility_manager);
accessibility_subscription_ = accessibility_manager->RegisterCallback(
base::BindRepeating(&WelcomeScreen::OnAccessibilityStatusChanged,
base::Unretained(this)));
UpdateA11yState();
if (accessibility_manager) {
accessibility_subscription_ = accessibility_manager->RegisterCallback(
base::BindRepeating(&WelcomeScreen::OnAccessibilityStatusChanged,
base::Unretained(this)));
UpdateA11yState();
} else {
CHECK_IS_TEST();
}
}

WelcomeScreen::~WelcomeScreen() {
Expand Down
30 changes: 23 additions & 7 deletions chrome/browser/ash/login/ui/fake_login_display_host.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "base/notreached.h"
#include "chrome/browser/ash/login/wizard_controller.h"
#include "chrome/browser/ui/webui/ash/login/user_creation_screen_handler.h"
#include "components/session_manager/core/session_manager.h"

namespace ash {
Expand Down Expand Up @@ -49,7 +50,7 @@ views::Widget* FakeLoginDisplayHost::GetLoginWindowWidget() const {
}

OobeUI* FakeLoginDisplayHost::GetOobeUI() const {
return nullptr;
return oobe_ui_;
}

content::WebContents* FakeLoginDisplayHost::GetOobeWebContents() const {
Expand All @@ -73,11 +74,15 @@ void FakeLoginDisplayHost::FinalizeImmediately() {}
void FakeLoginDisplayHost::SetStatusAreaVisible(bool visible) {}

void FakeLoginDisplayHost::StartWizard(OobeScreenId first_screen) {
wizard_controller_ =
std::make_unique<WizardController>(wizard_context_.get());
if (wizard_controller_) {
wizard_controller_->AdvanceToScreen(first_screen);
} else {
wizard_controller_ =
std::make_unique<WizardController>(wizard_context_.get());

fake_screen_ = std::make_unique<FakeBaseScreen>(first_screen);
wizard_controller_->SetCurrentScreenForTesting(fake_screen_.get());
fake_screen_ = std::make_unique<FakeBaseScreen>(first_screen);
wizard_controller_->SetCurrentScreenForTesting(fake_screen_.get());
}
}

WizardController* FakeLoginDisplayHost::GetWizardController() {
Expand All @@ -89,15 +94,17 @@ KioskLaunchController* FakeLoginDisplayHost::GetKioskLaunchController() {
}

WizardContext* FakeLoginDisplayHost::GetWizardContext() {
return nullptr;
return wizard_context_.get();
}

void FakeLoginDisplayHost::StartUserAdding(
base::OnceClosure completion_callback) {}

void FakeLoginDisplayHost::CancelUserAdding() {}

void FakeLoginDisplayHost::StartSignInScreen() {}
void FakeLoginDisplayHost::StartSignInScreen() {
StartWizard(UserCreationView::kScreenId);
}

void FakeLoginDisplayHost::StartKiosk(const KioskAppId& kiosk_app_id,
bool is_auto_launch) {}
Expand Down Expand Up @@ -193,4 +200,13 @@ bool FakeLoginDisplayHost::GetKeyboardRemappedPrefValue(
return false;
}

void FakeLoginDisplayHost::SetOobeUI(raw_ptr<OobeUI> oobe_ui) {
oobe_ui_ = oobe_ui;
}

void FakeLoginDisplayHost::SetWizardController(
std::unique_ptr<WizardController> wizard_controller) {
wizard_controller_ = std::move(wizard_controller);
}

} // namespace ash
5 changes: 5 additions & 0 deletions chrome/browser/ash/login/ui/fake_login_display_host.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,14 @@ class FakeLoginDisplayHost : public LoginDisplayHost {
base::WeakPtr<ash::quick_start::TargetDeviceBootstrapController>
GetQuickStartBootstrapController() final;

void SetOobeUI(raw_ptr<OobeUI> oobe_ui);
void SetWizardController(std::unique_ptr<WizardController> wizard_controller);

private:
class FakeBaseScreen;

raw_ptr<OobeUI> oobe_ui_;

// SessionManager is required by the constructor of WizardController.
std::unique_ptr<session_manager::SessionManager> session_manager_;
std::unique_ptr<FakeBaseScreen> fake_screen_;
Expand Down

0 comments on commit d8a3b5f

Please sign in to comment.