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