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