1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/host/ash_window_tree_host_platform.h"
6
7 #include "ash/test/ash_test_base.h"
8
9 #include "ui/ozone/public/input_controller.h"
10 #include "ui/ozone/public/ozone_platform.h"
11
12 namespace ash {
13
14 class AshWindowTreeHostPlatformTest : public AshTestBase {
15 public:
16 AshWindowTreeHostPlatformTest() = default;
17 ~AshWindowTreeHostPlatformTest() override = default;
18 };
19
20 class TestInputController : public ui::InputController {
21 public:
22 TestInputController() = default;
23 ~TestInputController() override = default;
24
25 // InputController:
SuspendMouseAcceleration()26 void SuspendMouseAcceleration() override { acceleration_suspended_ = true; }
EndMouseAccelerationSuspension()27 void EndMouseAccelerationSuspension() override {
28 acceleration_suspended_ = false;
29 }
30
31 // these are all stubs that are not used yet in these tests
HasMouse()32 bool HasMouse() override { return false; }
HasPointingStick()33 bool HasPointingStick() override { return false; }
HasTouchpad()34 bool HasTouchpad() override { return false; }
IsCapsLockEnabled()35 bool IsCapsLockEnabled() override { return false; }
SetCapsLockEnabled(bool enabled)36 void SetCapsLockEnabled(bool enabled) override {}
SetNumLockEnabled(bool enabled)37 void SetNumLockEnabled(bool enabled) override {}
IsAutoRepeatEnabled()38 bool IsAutoRepeatEnabled() override { return true; }
SetAutoRepeatEnabled(bool enabled)39 void SetAutoRepeatEnabled(bool enabled) override {}
SetAutoRepeatRate(const base::TimeDelta & delay,const base::TimeDelta & interval)40 void SetAutoRepeatRate(const base::TimeDelta& delay,
41 const base::TimeDelta& interval) override {}
GetAutoRepeatRate(base::TimeDelta * delay,base::TimeDelta * interval)42 void GetAutoRepeatRate(base::TimeDelta* delay,
43 base::TimeDelta* interval) override {}
SetCurrentLayoutByName(const std::string & layout_name)44 void SetCurrentLayoutByName(const std::string& layout_name) override {}
SetTouchEventLoggingEnabled(bool enabled)45 void SetTouchEventLoggingEnabled(bool enabled) override {
46 NOTIMPLEMENTED_LOG_ONCE();
47 }
SetTouchpadSensitivity(int value)48 void SetTouchpadSensitivity(int value) override {}
SetTouchpadScrollSensitivity(int value)49 void SetTouchpadScrollSensitivity(int value) override {}
SetTapToClick(bool enabled)50 void SetTapToClick(bool enabled) override {}
SetThreeFingerClick(bool enabled)51 void SetThreeFingerClick(bool enabled) override {}
SetTapDragging(bool enabled)52 void SetTapDragging(bool enabled) override {}
SetNaturalScroll(bool enabled)53 void SetNaturalScroll(bool enabled) override {}
SetMouseSensitivity(int value)54 void SetMouseSensitivity(int value) override {}
SetMouseScrollSensitivity(int value)55 void SetMouseScrollSensitivity(int value) override {}
SetPrimaryButtonRight(bool right)56 void SetPrimaryButtonRight(bool right) override {}
SetMouseReverseScroll(bool enabled)57 void SetMouseReverseScroll(bool enabled) override {}
SetMouseAcceleration(bool enabled)58 void SetMouseAcceleration(bool enabled) override {}
SetMouseScrollAcceleration(bool enabled)59 void SetMouseScrollAcceleration(bool enabled) override {}
SetTouchpadAcceleration(bool enabled)60 void SetTouchpadAcceleration(bool enabled) override {}
SetTouchpadScrollAcceleration(bool enabled)61 void SetTouchpadScrollAcceleration(bool enabled) override {}
SetTapToClickPaused(bool state)62 void SetTapToClickPaused(bool state) override {}
GetTouchDeviceStatus(GetTouchDeviceStatusReply reply)63 void GetTouchDeviceStatus(GetTouchDeviceStatusReply reply) override {
64 std::move(reply).Run(std::string());
65 }
GetTouchEventLog(const base::FilePath & out_dir,GetTouchEventLogReply reply)66 void GetTouchEventLog(const base::FilePath& out_dir,
67 GetTouchEventLogReply reply) override {
68 std::move(reply).Run(std::vector<base::FilePath>());
69 }
PlayVibrationEffect(int id,uint8_t amplitude,uint16_t duration_millis)70 void PlayVibrationEffect(int id,
71 uint8_t amplitude,
72 uint16_t duration_millis) override {}
StopVibration(int id)73 void StopVibration(int id) override {}
SetInternalTouchpadEnabled(bool enabled)74 void SetInternalTouchpadEnabled(bool enabled) override {}
IsInternalTouchpadEnabled() const75 bool IsInternalTouchpadEnabled() const override { return false; }
SetTouchscreensEnabled(bool enabled)76 void SetTouchscreensEnabled(bool enabled) override {}
SetInternalKeyboardFilter(bool enable_filter,std::vector<ui::DomCode> allowed_keys)77 void SetInternalKeyboardFilter(
78 bool enable_filter,
79 std::vector<ui::DomCode> allowed_keys) override {}
GetGesturePropertiesService(mojo::PendingReceiver<ui::ozone::mojom::GesturePropertiesService> receiver)80 void GetGesturePropertiesService(
81 mojo::PendingReceiver<ui::ozone::mojom::GesturePropertiesService>
82 receiver) override {}
83
GetAccelerationSuspended()84 bool GetAccelerationSuspended() { return acceleration_suspended_; }
85
86 private:
87 // member variable used to keep track of mouse acceleration suspension
88 bool acceleration_suspended_ = false;
89 };
90
TEST_F(AshWindowTreeHostPlatformTest,UnadjustedMovement)91 TEST_F(AshWindowTreeHostPlatformTest, UnadjustedMovement) {
92 AshWindowTreeHostPlatform host;
93 auto test_input_controller = std::make_unique<TestInputController>();
94 host.input_controller_ = test_input_controller.get();
95
96 std::unique_ptr<aura::ScopedEnableUnadjustedMouseEvents>
97 unadjusted_movement_context = host.RequestUnadjustedMovement();
98 EXPECT_TRUE(unadjusted_movement_context.get() != nullptr);
99 EXPECT_TRUE(test_input_controller->GetAccelerationSuspended());
100 unadjusted_movement_context.reset();
101 EXPECT_FALSE(test_input_controller->GetAccelerationSuspended());
102 }
103
104 } // namespace ash
105