1 /*
2  * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "power_mgr_service_native_test.h"
17 
18 #ifdef THERMAL_GTEST
19 #define private   public
20 #define protected public
21 #endif
22 
23 #include <csignal>
24 #include <iostream>
25 
26 #include "key_event.h"
27 #include "pointer_event.h"
28 #include "power_common.h"
29 #include "power_mgr_service.h"
30 #include "setting_helper.h"
31 using namespace testing::ext;
32 using namespace OHOS::PowerMgr;
33 using namespace OHOS;
34 using namespace std;
35 
36 namespace {
37 constexpr int32_t TIMEOUTMS = 7;
38 constexpr int64_t CALLTIMEMS = 1;
39 constexpr int64_t SUSCALLTIMEMS = 3;
40 constexpr pid_t PID = 1;
41 constexpr pid_t UID = 1;
42 constexpr int32_t UNCANCELID = -1;
43 constexpr int32_t INVALID_CODE = -1;
44 sptr<PowerMgrService> g_pmsTest;
45 } // namespace
46 
SetUp()47 void PowerMgrServiceNativeTest::SetUp()
48 {
49     g_pmsTest = DelayedSpSingleton<PowerMgrService>::GetInstance();
50     EXPECT_TRUE(g_pmsTest != nullptr) << "PowerMgrService02 fail to get PowerMgrService";
51     g_pmsTest->OnStart();
52 
53     auto stateMachine = std::make_shared<PowerStateMachine>(g_pmsTest);
54     EXPECT_TRUE(stateMachine->Init());
55     UserActivityType userActivityType = UserActivityType::USER_ACTIVITY_TYPE_ACCESSIBILITY;
56     stateMachine->RefreshActivityInner(PID, CALLTIMEMS, userActivityType, true);
57     auto runningLockMgr = std::make_shared<RunningLockMgr>(g_pmsTest);
58     EXPECT_TRUE(runningLockMgr->Init());
59     sptr<IRemoteObject> remoteObj = new RunningLockTokenStub();
60     RunningLockParam runningLockParam {0,
61         "runninglockNativeTest1", "", RunningLockType::RUNNINGLOCK_SCREEN, TIMEOUTMS, PID, UID};
62     EXPECT_TRUE(runningLockMgr->CreateRunningLock(remoteObj, runningLockParam) != nullptr);
63     runningLockMgr->Lock(remoteObj);
64     runningLockMgr->UnLock(remoteObj);
65     EXPECT_FALSE(runningLockMgr->ReleaseLock(remoteObj));
66 }
67 
TearDown()68 void PowerMgrServiceNativeTest::TearDown()
69 {
70     g_pmsTest->OnStop();
71 }
72 
OnPowerStateChanged(PowerState state)73 void PowerStateTestCallback::OnPowerStateChanged(PowerState state)
74 {
75     POWER_HILOGI(
76         LABEL_TEST, "PowerStateTestCallback::OnPowerStateChanged state = %{public}u.", static_cast<uint32_t>(state));
77 }
78 
79 namespace {
80 /**
81  * @tc.name: PowerMgrServiceNative001
82  * @tc.desc: test init in powerMgrService
83  * @tc.type: FUNC
84  */
85 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative001, TestSize.Level0)
86 {
87     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative001 begin.");
88     g_pmsTest->HallSensorSubscriberInit();
89     g_pmsTest->HallSensorSubscriberCancel();
90 
91     int32_t keyCode = OHOS::MMI::KeyEvent::KEYCODE_F1;
92     g_pmsTest->HandleKeyEvent(keyCode);
93     int32_t type = OHOS::MMI::PointerEvent::SOURCE_TYPE_MOUSE;
94     g_pmsTest->HandlePointEvent(type);
95 
96     EXPECT_EQ(g_pmsTest->OverrideScreenOffTime(TIMEOUTMS), PowerErrors::ERR_OK);
97     EXPECT_EQ(g_pmsTest->RestoreScreenOffTime(), PowerErrors::ERR_OK);
98 
99     g_pmsTest->doubleClickId_ = UNCANCELID;
100     g_pmsTest->monitorId_ = UNCANCELID;
101     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative001 end.");
102 }
103 
104 /**
105  * @tc.name: PowerMgrServiceNative002
106  * @tc.desc: test handleKeyEvent in powerMgrService
107  * @tc.type: FUNC
108  */
109 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative002, TestSize.Level0)
110 {
111     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative002 begin.");
112     int32_t keyCode = OHOS::MMI::KeyEvent::KEYCODE_F1;
113     g_pmsTest->HandleKeyEvent(keyCode);
114     keyCode = OHOS::MMI::KeyEvent::KEYCODE_F2;
115     g_pmsTest->HandleKeyEvent(keyCode);
116     keyCode = OHOS::MMI::KeyEvent::KEYCODE_VIRTUAL_MULTITASK;
117     g_pmsTest->HandleKeyEvent(keyCode);
118     keyCode = OHOS::MMI::KeyEvent::KEYCODE_WEAR_1;
119     g_pmsTest->HandleKeyEvent(keyCode);
120     int32_t type = OHOS::MMI::PointerEvent::SOURCE_TYPE_MOUSE;
121     g_pmsTest->HandlePointEvent(type);
122     type = OHOS::MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
123     g_pmsTest->HandlePointEvent(type);
124 
125     EXPECT_TRUE(g_pmsTest->ShutDownDevice(SHUTDOWN_FAST_REASON) == PowerErrors::ERR_OK);
126     SuspendDeviceType reasonSDT = SuspendDeviceType::SUSPEND_DEVICE_REASON_DEVICE_ADMIN;
127     EXPECT_TRUE(g_pmsTest->SuspendDevice(SUSCALLTIMEMS, reasonSDT, false) == PowerErrors::ERR_OK);
128     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative002 end.");
129 }
130 
131 /**
132  * @tc.name: PowerMgrServiceNative003
133  * @tc.desc: test pickup register
134  * @tc.type: FUNC
135  */
136 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative003, TestSize.Level0)
137 {
138     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative003 begin.");
139     g_pmsTest->RegisterSettingWakeupPickupGestureObserver();
140     g_pmsTest->RegisterSettingWakeupPickupGestureObserver();
141     EXPECT_TRUE(SettingHelper::pickUpObserver_ != nullptr);
142     SettingHelper::UnregisterSettingWakeupPickupObserver();
143     SettingHelper::UnregisterSettingWakeupPickupObserver();
144     EXPECT_TRUE(SettingHelper::pickUpObserver_ == nullptr);
145     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative003 end.");
146 }
147 
148 /**
149  * @tc.name: PowerMgrServiceNative004
150  * @tc.desc: test autobrightness register
151  * @tc.type: FUNC
152  */
153 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative004, TestSize.Level0)
154 {
155     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative004 begin.");
156     shared_ptr<PowerModeModule> powerModeModuleTest = make_shared<PowerModeModule>();
157     EXPECT_TRUE(powerModeModuleTest != nullptr);
158     auto flag = SettingHelper::IsAutoAdjustBrightnessSettingValid();
159     powerModeModuleTest->RegisterAutoAdjustBrightnessObserver();
160     SettingHelper::SetSettingAutoAdjustBrightness(SettingHelper::SwitchStatus::INVALID);
161     auto ret = SettingHelper::GetSettingAutoAdjustBrightness(INVALID_CODE);
162     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative004 end.");
163 }
164 
165 /**
166  * @tc.name: PowerMgrServiceNative005
167  * @tc.desc: test brightness register
168  * @tc.type: FUNC
169  */
170 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative005, TestSize.Level0)
171 {
172     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative005 begin.");
173     shared_ptr<PowerModeModule> powerModeModuleTest = make_shared<PowerModeModule>();
174     EXPECT_TRUE(powerModeModuleTest != nullptr);
175     powerModeModuleTest->RegisterAutoAdjustBrightnessObserver();
176     auto flag = SettingHelper::IsBrightnessSettingValid();
177     SettingHelper::SetSettingBrightness(INVALID_CODE);
178     auto ret = SettingHelper::GetSettingAutoAdjustBrightness(INVALID_CODE);
179     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative005 end.");
180 }
181 
182 /**
183  * @tc.name: PowerMgrServiceNative006
184  * @tc.desc: test vibrateState register
185  * @tc.type: FUNC
186  */
187 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative006, TestSize.Level0)
188 {
189     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative006 begin.");
190     shared_ptr<PowerModeModule> powerModeModuleTest = make_shared<PowerModeModule>();
191     EXPECT_TRUE(powerModeModuleTest != nullptr);
192     powerModeModuleTest->RegisterVibrateStateObserver();
193     auto flag = SettingHelper::IsVibrationSettingValid();
194     SettingHelper::SetSettingVibration(SettingHelper::SwitchStatus::INVALID);
195     auto ret = SettingHelper::GetSettingVibration(INVALID_CODE);
196     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative006 end.");
197 }
198 
199 
200 /**
201  * @tc.name: PowerMgrServiceNative007
202  * @tc.desc: test autoWindowRotation register
203  * @tc.type: FUNC
204  */
205 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative007, TestSize.Level0)
206 {
207     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative007 begin.");
208     shared_ptr<PowerModeModule> powerModeModuleTest = make_shared<PowerModeModule>();
209     EXPECT_TRUE(powerModeModuleTest != nullptr);
210     powerModeModuleTest->RegisterAutoWindowRotationObserver();
211     auto flag = SettingHelper::IsWindowRotationSettingValid();
212     SettingHelper::SetSettingWindowRotation(SettingHelper::SwitchStatus::INVALID);
213     auto ret = SettingHelper::GetSettingWindowRotation(INVALID_CODE);
214     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative007 end.");
215 }
216 
217 /**
218  * @tc.name: PowerMgrServiceNative008
219  * @tc.desc: test intellVoiceSetting register
220  * @tc.type: FUNC
221  */
222 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative008, TestSize.Level0)
223 {
224     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative008 begin.");
225     shared_ptr<PowerModeModule> powerModeModuleTest = make_shared<PowerModeModule>();
226     EXPECT_TRUE(powerModeModuleTest != nullptr);
227     powerModeModuleTest->RegisterIntellVoiceObserver();
228     auto flag = SettingHelper::IsIntellVoiceSettingValid();
229     SettingHelper::SetSettingIntellVoice(SettingHelper::SwitchStatus::INVALID);
230     auto ret = SettingHelper::GetSettingIntellVoice(INVALID_CODE);
231     powerModeModuleTest->UnregisterSaveModeObserver();
232     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative008 end.");
233 }
234 
235 /**
236  * @tc.name: PowerMgrServiceNative009
237  * @tc.desc: test settingPowerMode register
238  * @tc.type: FUNC
239  */
240 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative009, TestSize.Level0)
241 {
242     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative009 begin.");
243     g_pmsTest->RegisterSettingPowerModeObservers();
244     g_pmsTest->RegisterSettingPowerModeObservers();
245     EXPECT_TRUE(SettingHelper::powerModeObserver_ != nullptr);
246     SettingHelper::SaveCurrentMode(INVALID_CODE);
247     SettingHelper::UnRegisterSettingPowerModeObserver();
248     EXPECT_TRUE(SettingHelper::powerModeObserver_ == nullptr);
249     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative009 end.");
250 }
251 
252 /**
253  * @tc.name: PowerMgrServiceNative010
254  * @tc.desc: test settingWakeUpLid register
255  * @tc.type: FUNC
256  */
257 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative010, TestSize.Level0)
258 {
259     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative010 begin.");
260     g_pmsTest->RegisterSettingWakeUpLidObserver();
261     SettingHelper::SetSettingWakeupLid(true);
262     bool ret = SettingHelper::GetSettingWakeupLid();
263     SettingHelper::UnRegisterSettingWakeupLidObserver();
264     EXPECT_TRUE(SettingHelper::lidObserver_ == nullptr);
265     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative010 end.");
266 }
267 
268 /**
269  * @tc.name: PowerMgrServiceNative011
270  * @tc.desc: test RegisterSettingWakeupDoubleClickObservers
271  * @tc.type: FUNC
272  */
273 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative011, TestSize.Level0)
274 {
275     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative011 begin.");
276     g_pmsTest->RegisterSettingWakeupDoubleClickObservers();
277     g_pmsTest->RegisterSettingWakeupDoubleClickObservers();
278     SettingHelper::IsWakeupPickupSettingValid();
279     SettingHelper::UnregisterSettingWakeupDoubleObserver();
280     SettingHelper::UnregisterSettingWakeupDoubleObserver();
281     EXPECT_TRUE(SettingHelper::doubleClickObserver_ == nullptr);
282     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative011 end.");
283 }
284 
285 #ifdef MSDP_MOVEMENT_ENABLE
286 /**
287  * @tc.name: PowerMgrServiceNative012
288  * @tc.desc: test RegisterMovementCallback
289  * @tc.type: FUNC
290  */
291 HWTEST_F(PowerMgrServiceNativeTest, PowerMgrServiceNative012, TestSize.Level0)
292 {
293     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative012 begin.");
294     auto stateMachine = std::make_shared<PowerStateMachine>(g_pmsTest);
295     g_pmsTest->RegisterMovementCallback();
296     g_pmsTest->UnRegisterMovementCallback();
297     g_pmsTest->ResetMovementState();
298     bool ret =  stateMachine->IsMovementStateOn();
299     EXPECT_TRUE(ret == false);
300     POWER_HILOGI(LABEL_TEST, "PowerMgrServiceNative012 end.");
301 }
302 #endif
303 
304 } // namespace
305