123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- // 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 "ash/system/power/power_button_test_base.h"
- #include "ash/public/cpp/test/shell_test_api.h"
- #include "ash/session/session_controller_impl.h"
- #include "ash/session/test_session_controller_client.h"
- #include "ash/shell.h"
- #include "ash/system/power/power_button_controller.h"
- #include "ash/system/power/power_button_controller_test_api.h"
- #include "ash/wm/lock_state_controller.h"
- #include "ash/wm/lock_state_controller_test_api.h"
- #include "ash/wm/tablet_mode/tablet_mode_controller.h"
- #include "base/command_line.h"
- #include "base/memory/ptr_util.h"
- #include "base/test/simple_test_tick_clock.h"
- #include "chromeos/dbus/power/power_manager_client.h"
- #include "ui/events/event.h"
- #include "ui/events/test/event_generator.h"
- namespace ash {
- PowerButtonTestBase::PowerButtonTestBase() = default;
- PowerButtonTestBase::PowerButtonTestBase(
- base::test::TaskEnvironment::TimeSource time)
- : AshTestBase(time) {}
- PowerButtonTestBase::~PowerButtonTestBase() = default;
- void PowerButtonTestBase::SetUp() {
- AshTestBase::SetUp();
- lock_state_controller_ = Shell::Get()->lock_state_controller();
- lock_state_test_api_ =
- std::make_unique<LockStateControllerTestApi>(lock_state_controller_);
- }
- void PowerButtonTestBase::TearDown() {
- AshTestBase::TearDown();
- }
- void PowerButtonTestBase::ResetPowerButtonController() {
- ShellTestApi().ResetPowerButtonControllerForTest();
- power_button_test_api_ = nullptr;
- InitPowerButtonControllerMembers(
- chromeos::PowerManagerClient::TabletMode::UNSUPPORTED);
- }
- void PowerButtonTestBase::InitPowerButtonControllerMembers(
- chromeos::PowerManagerClient::TabletMode initial_tablet_mode_switch_state) {
- power_button_controller_ = Shell::Get()->power_button_controller();
- power_button_test_api_ =
- std::make_unique<PowerButtonControllerTestApi>(power_button_controller_);
- power_button_test_api_->SetTickClock(&tick_clock_);
- if (initial_tablet_mode_switch_state !=
- chromeos::PowerManagerClient::TabletMode::UNSUPPORTED) {
- SetTabletModeSwitchState(initial_tablet_mode_switch_state);
- } else {
- screenshot_controller_ = nullptr;
- }
- }
- void PowerButtonTestBase::SetTabletModeSwitchState(
- chromeos::PowerManagerClient::TabletMode tablet_mode_switch_state) {
- power_button_controller_->OnGetSwitchStates(
- chromeos::PowerManagerClient::SwitchStates{
- chromeos::PowerManagerClient::LidState::OPEN,
- tablet_mode_switch_state});
- screenshot_controller_ = power_button_test_api_->GetScreenshotController();
- }
- void PowerButtonTestBase::LaunchArcPowerButtonEvent() {
- power_button_controller_->OnArcPowerButtonMenuEvent();
- }
- void PowerButtonTestBase::PressPowerButton() {
- power_button_controller_->PowerButtonEventReceived(true,
- tick_clock_.NowTicks());
- }
- void PowerButtonTestBase::ReleasePowerButton() {
- power_button_controller_->PowerButtonEventReceived(false,
- tick_clock_.NowTicks());
- }
- void PowerButtonTestBase::PressKey(ui::KeyboardCode key_code) {
- GetEventGenerator()->PressKey(key_code, ui::EF_NONE);
- }
- void PowerButtonTestBase::ReleaseKey(ui::KeyboardCode key_code) {
- GetEventGenerator()->ReleaseKey(key_code, ui::EF_NONE);
- }
- void PowerButtonTestBase::GenerateMouseMoveEvent() {
- GetEventGenerator()->MoveMouseTo(10, 10);
- }
- void PowerButtonTestBase::Initialize(
- PowerButtonController::ButtonType button_type,
- LoginStatus status) {
- power_button_test_api_->SetPowerButtonType(button_type);
- if (status == LoginStatus::NOT_LOGGED_IN)
- ClearLogin();
- else
- CreateUserSessions(1);
- if (status == LoginStatus::GUEST)
- SetCanLockScreen(false);
- }
- void PowerButtonTestBase::LockScreen() {
- lock_state_controller_->OnLockStateChanged(true);
- GetSessionControllerClient()->LockScreen();
- }
- void PowerButtonTestBase::UnlockScreen() {
- lock_state_controller_->OnLockStateChanged(false);
- GetSessionControllerClient()->UnlockScreen();
- }
- void PowerButtonTestBase::EnableTabletMode(bool enable) {
- Shell::Get()->tablet_mode_controller()->SetEnabledForTest(enable);
- }
- void PowerButtonTestBase::AdvanceClockToAvoidIgnoring() {
- tick_clock_.Advance(PowerButtonController::kIgnoreRepeatedButtonUpDelay +
- base::Milliseconds(1));
- }
- } // namespace ash
|