Fix emulator build error
[platform/framework/web/chromium-efl.git] / services / device / vibration / vibration_manager_impl_unittest.cc
1 // Copyright 2017 The Chromium Authors
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 "base/run_loop.h"
6 #include "build/build_config.h"
7 #include "mojo/public/cpp/bindings/remote.h"
8 #include "services/device/device_service_test_base.h"
9 #include "services/device/public/mojom/vibration_manager.mojom.h"
10
11 #if BUILDFLAG(IS_ANDROID)
12 #include "base/android/jni_android.h"
13 #include "services/device/vibration/android/vibration_jni_headers/VibrationManagerImpl_jni.h"
14 #else
15 #include "services/device/vibration/vibration_manager_impl.h"
16 #endif
17
18 namespace device {
19
20 namespace {
21
22 class VibrationManagerImplTest : public DeviceServiceTestBase {
23  public:
24   VibrationManagerImplTest() = default;
25
26   VibrationManagerImplTest(const VibrationManagerImplTest&) = delete;
27   VibrationManagerImplTest& operator=(const VibrationManagerImplTest&) = delete;
28
29   ~VibrationManagerImplTest() override = default;
30
31  protected:
32   void SetUp() override {
33     DeviceServiceTestBase::SetUp();
34
35     device_service()->BindVibrationManager(
36         vibration_manager_.BindNewPipeAndPassReceiver());
37   }
38
39   void Vibrate(int64_t milliseconds) {
40     base::RunLoop run_loop;
41     vibration_manager_->Vibrate(milliseconds, run_loop.QuitClosure());
42     run_loop.Run();
43   }
44
45   void Cancel() {
46     base::RunLoop run_loop;
47     vibration_manager_->Cancel(run_loop.QuitClosure());
48     run_loop.Run();
49   }
50
51   int64_t GetVibrationMilliSeconds() {
52 #if BUILDFLAG(IS_ANDROID)
53     return Java_VibrationManagerImpl_getVibrateMilliSecondsForTesting(
54         base::android::AttachCurrentThread());
55 #else
56     return VibrationManagerImpl::milli_seconds_for_testing_;
57 #endif
58   }
59
60   bool GetVibrationCancelled() {
61 #if BUILDFLAG(IS_ANDROID)
62     return Java_VibrationManagerImpl_getVibrateCancelledForTesting(
63         base::android::AttachCurrentThread());
64 #else
65     return VibrationManagerImpl::cancelled_for_testing_;
66 #endif
67   }
68
69  private:
70   mojo::Remote<mojom::VibrationManager> vibration_manager_;
71 };
72
73 TEST_F(VibrationManagerImplTest, VibrateThenCancel) {
74   EXPECT_NE(10000, GetVibrationMilliSeconds());
75   Vibrate(10000);
76   EXPECT_EQ(10000, GetVibrationMilliSeconds());
77
78   EXPECT_FALSE(GetVibrationCancelled());
79   Cancel();
80   EXPECT_TRUE(GetVibrationCancelled());
81 }
82
83 }  // namespace
84
85 }  // namespace device