1 /*
2 * Copyright (c) 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 <gtest/gtest.h>
17
18 #include "session_manager/include/screen_session_manager.h"
19 #include "display_manager_agent_default.h"
20 #include "iconsumer_surface.h"
21 #include "connection/screen_cast_connection.h"
22 #include "screen_scene_config.h"
23 #include <surface.h>
24 #include "scene_board_judgement.h"
25 #include "fold_screen_state_internel.h"
26
27 using namespace testing;
28 using namespace testing::ext;
29
30 namespace OHOS {
31 namespace Rosen {
32 namespace {
33 const int32_t CV_WAIT_SCREENOFF_MS = 1500;
34 const int32_t CV_WAIT_SCREENOFF_MS_MAX = 3000;
35 constexpr uint32_t SLEEP_TIME_IN_US = 100000; // 100ms
36 constexpr int32_t CAST_WIRED_PROJECTION_START = 1005;
37 constexpr int32_t CAST_WIRED_PROJECTION_STOP = 1007;
38 }
39 class ScreenSessionManagerTest : public testing::Test {
40 public:
41 static void SetUpTestCase();
42 static void TearDownTestCase();
43 void SetUp() override;
44 void TearDown() override;
45
46 static sptr<ScreenSessionManager> ssm_;
47
48 ScreenId DEFAULT_SCREEN_ID {0};
49 ScreenId VIRTUAL_SCREEN_ID {2};
50 ScreenId VIRTUAL_SCREEN_RS_ID {100};
51 };
52
53 sptr<ScreenSessionManager> ScreenSessionManagerTest::ssm_ = nullptr;
54
SetUpTestCase()55 void ScreenSessionManagerTest::SetUpTestCase()
56 {
57 ssm_ = new ScreenSessionManager();
58 }
59
TearDownTestCase()60 void ScreenSessionManagerTest::TearDownTestCase()
61 {
62 ssm_ = nullptr;
63 }
64
SetUp()65 void ScreenSessionManagerTest::SetUp()
66 {
67 }
68
TearDown()69 void ScreenSessionManagerTest::TearDown()
70 {
71 usleep(SLEEP_TIME_IN_US);
72 }
73
74 namespace {
75 /**
76 * @tc.name: RegisterDisplayManagerAgent
77 * @tc.desc: RegisterDisplayManagerAgent test
78 * @tc.type: FUNC
79 */
80 HWTEST_F(ScreenSessionManagerTest, RegisterDisplayManagerAgent, Function | SmallTest | Level3)
81 {
82 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
83 DisplayManagerAgentType type = DisplayManagerAgentType::SCREEN_EVENT_LISTENER;
84 EXPECT_NE(DMError::DM_ERROR_NOT_SYSTEM_APP, ssm_->RegisterDisplayManagerAgent(displayManagerAgent, type));
85 EXPECT_NE(DMError::DM_ERROR_NOT_SYSTEM_APP, ssm_->UnregisterDisplayManagerAgent(displayManagerAgent, type));
86
87 type = DisplayManagerAgentType::PRIVATE_WINDOW_LISTENER;
88 EXPECT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->RegisterDisplayManagerAgent(nullptr, type));
89 EXPECT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->UnregisterDisplayManagerAgent(nullptr, type));
90
91 EXPECT_EQ(DMError::DM_OK, ssm_->RegisterDisplayManagerAgent(displayManagerAgent, type));
92 EXPECT_EQ(DMError::DM_OK, ssm_->UnregisterDisplayManagerAgent(displayManagerAgent, type));
93 }
94
95 /**
96 * @tc.name: WakeupBegin
97 * @tc.desc: WakeupBegin test
98 * @tc.type: FUNC
99 */
100 HWTEST_F(ScreenSessionManagerTest, WakeUpBegin, Function | SmallTest | Level3)
101 {
102 sptr<IDisplayManagerAgent> displayManagerAgent = new(std::nothrow) DisplayManagerAgentDefault();
103 EXPECT_NE(displayManagerAgent, nullptr);
104
105 DisplayManagerAgentType type = DisplayManagerAgentType::DISPLAY_POWER_EVENT_LISTENER;
106 EXPECT_EQ(DMError::DM_OK, ssm_->RegisterDisplayManagerAgent(displayManagerAgent, type));
107
108 VirtualScreenOption virtualOption;
109 virtualOption.name_ = "createVirtualOption";
110 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
111 if (screenId != VIRTUAL_SCREEN_ID) {
112 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
113 }
114
115 PowerStateChangeReason reason = PowerStateChangeReason::STATE_CHANGE_REASON_POWER_KEY;
116 ASSERT_EQ(true, ssm_->WakeUpBegin(reason));
117
118 reason = PowerStateChangeReason::STATE_CHANGE_REASON_SWITCH;
119 ASSERT_EQ(true, ssm_->WakeUpBegin(reason));
120
121 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT;
122 ASSERT_EQ(true, ssm_->WakeUpBegin(reason));
123
124 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_SUCCESS;
125 ASSERT_EQ(true, ssm_->WakeUpBegin(reason));
126
127 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_ON;
128 ASSERT_EQ(true, ssm_->WakeUpBegin(reason));
129
130 EXPECT_EQ(DMError::DM_OK, ssm_->DestroyVirtualScreen(screenId));
131 EXPECT_EQ(DMError::DM_OK, ssm_->UnregisterDisplayManagerAgent(displayManagerAgent, type));
132 }
133
134 /**
135 * @tc.name: SuspendBegin
136 * @tc.desc: SuspendBegin test
137 * @tc.type: FUNC
138 */
139 HWTEST_F(ScreenSessionManagerTest, SuspendBegin, Function | SmallTest | Level3)
140 {
141 sptr<IDisplayManagerAgent> displayManagerAgent = new(std::nothrow) DisplayManagerAgentDefault();
142 EXPECT_NE(displayManagerAgent, nullptr);
143
144 DisplayManagerAgentType type = DisplayManagerAgentType::DISPLAY_POWER_EVENT_LISTENER;
145 EXPECT_EQ(DMError::DM_OK, ssm_->RegisterDisplayManagerAgent(displayManagerAgent, type));
146
147 VirtualScreenOption virtualOption;
148 virtualOption.name_ = "createVirtualOption";
149 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
150 if (screenId != VIRTUAL_SCREEN_ID) {
151 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
152 }
153
154 PowerStateChangeReason reason = PowerStateChangeReason::STATE_CHANGE_REASON_HARD_KEY;
155 ASSERT_EQ(true, ssm_->SuspendBegin(reason));
156
157 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_OFF;
158 ASSERT_EQ(true, ssm_->SuspendBegin(reason));
159
160 EXPECT_EQ(DMError::DM_OK, ssm_->DestroyVirtualScreen(screenId));
161 EXPECT_EQ(DMError::DM_OK, ssm_->UnregisterDisplayManagerAgent(displayManagerAgent, type));
162 }
163
164 /**
165 * @tc.name: SetScreenPowerForAll
166 * @tc.desc: SetScreenPowerForAll test
167 * @tc.type: FUNC
168 */
169 HWTEST_F(ScreenSessionManagerTest, SetScreenPowerForAll, Function | SmallTest | Level3)
170 {
171 sptr<IDisplayManagerAgent> displayManagerAgent = new(std::nothrow) DisplayManagerAgentDefault();
172 EXPECT_NE(displayManagerAgent, nullptr);
173
174 DisplayManagerAgentType type = DisplayManagerAgentType::DISPLAY_POWER_EVENT_LISTENER;
175 EXPECT_EQ(DMError::DM_OK, ssm_->RegisterDisplayManagerAgent(displayManagerAgent, type));
176
177 VirtualScreenOption virtualOption;
178 virtualOption.name_ = "createVirtualOption";
179 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
180 if (screenId != VIRTUAL_SCREEN_ID) {
181 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
182 }
183
184 PowerStateChangeReason reason = PowerStateChangeReason::STATE_CHANGE_REASON_POWER_KEY;
185 ScreenPowerState state = ScreenPowerState::POWER_ON;
186 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
187
188 reason = PowerStateChangeReason::STATE_CHANGE_REASON_SWITCH;
189 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
190
191 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT;
192 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
193
194 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_SUCCESS;
195 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
196
197 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_ON;
198 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
199
200 reason = PowerStateChangeReason::STATE_CHANGE_REASON_HARD_KEY;
201 state = ScreenPowerState::POWER_OFF;
202 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
203
204 reason = PowerStateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_OFF;
205 ASSERT_EQ(true, ssm_->SetScreenPowerForAll(state, reason));
206
207 EXPECT_EQ(DMError::DM_OK, ssm_->DestroyVirtualScreen(screenId));
208 EXPECT_EQ(DMError::DM_OK, ssm_->UnregisterDisplayManagerAgent(displayManagerAgent, type));
209 }
210
211 /**
212 * @tc.name: ScreenChange
213 * @tc.desc: ScreenChange test
214 * @tc.type: FUNC
215 */
216 HWTEST_F(ScreenSessionManagerTest, ScreenChange, Function | SmallTest | Level3)
217 {
218 ScreenEvent screenEvent = ScreenEvent::CONNECTED;
219 ssm_->OnVirtualScreenChange(DEFAULT_SCREEN_ID, screenEvent);
220 ssm_->OnVirtualScreenChange(VIRTUAL_SCREEN_ID, screenEvent);
221 ssm_->OnScreenChange(DEFAULT_SCREEN_ID, screenEvent);
222 ssm_->OnScreenChange(VIRTUAL_SCREEN_ID, screenEvent);
223 EXPECT_TRUE(1);
224
225 screenEvent = ScreenEvent::DISCONNECTED;
226 ssm_->OnVirtualScreenChange(DEFAULT_SCREEN_ID, screenEvent);
227 ssm_->OnVirtualScreenChange(VIRTUAL_SCREEN_ID, screenEvent);
228 ssm_->OnScreenChange(DEFAULT_SCREEN_ID, screenEvent);
229 ssm_->OnScreenChange(VIRTUAL_SCREEN_ID, screenEvent);
230 EXPECT_TRUE(1);
231 }
232
233 /**
234 * @tc.name: ScreenPower
235 * @tc.desc: ScreenSesionManager screen power
236 * @tc.type: FUNC
237 */
238 HWTEST_F(ScreenSessionManagerTest, ScreenPower, Function | SmallTest | Level3)
239 {
240 PowerStateChangeReason reason = PowerStateChangeReason::POWER_BUTTON;
241 ScreenPowerState state = ScreenPowerState::POWER_ON;
242 DisplayState displayState = DisplayState::ON;
243
244 ASSERT_EQ(false, ssm_->WakeUpBegin(reason));
245 ASSERT_EQ(false, ssm_->WakeUpEnd());
246
247 ASSERT_EQ(false, ssm_->SuspendBegin(reason));
248 ASSERT_EQ(false, ssm_->SuspendEnd());
249
250 ASSERT_EQ(false, ssm_->SetScreenPowerForAll(state, reason));
251
252 DisplayId id = 0;
253 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
254 ssm_->screenSessionMap_[id] = screenSession;
255
256 if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
257 return;
258 }
259
260 ASSERT_EQ(true, ssm_->SetDisplayState(displayState));
261 ASSERT_EQ(DisplayState::ON, ssm_->GetDisplayState(0));
262 }
263
264 /**
265 * @tc.name: GetScreenPower
266 * @tc.desc: GetScreenPower screen power
267 * @tc.type: FUNC
268 */
269 HWTEST_F(ScreenSessionManagerTest, GetScreenPower, Function | SmallTest | Level3)
270 {
271 DisplayId id = 0;
272 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
273 ssm_->screenSessionMap_[id] = screenSession;
274 ssm_->GetScreenPower(0);
275 EXPECT_TRUE(1);
276 }
277
278 /**
279 * @tc.name: IsScreenRotationLocked
280 * @tc.desc: IsScreenRotationLocked test
281 * @tc.type: FUNC
282 */
283 HWTEST_F(ScreenSessionManagerTest, IsScreenRotationLocked, Function | SmallTest | Level3)
284 {
285 bool isLocked = false;
286 DisplayId id = 0;
287 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
288 ssm_->screenSessionMap_[id] = screenSession;
289 ASSERT_EQ(DMError::DM_OK, ssm_->IsScreenRotationLocked(isLocked));
290 }
291
292 /**
293 * @tc.name: SetOrientation
294 * @tc.desc: SetOrientation test
295 * @tc.type: FUNC
296 */
297 HWTEST_F(ScreenSessionManagerTest, SetOrientation, Function | SmallTest | Level3)
298 {
299 Orientation orientation = Orientation::HORIZONTAL;
300 ScreenId id = 0;
301 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
302 ssm_->screenSessionMap_[id] = screenSession;
303 ASSERT_EQ(DMError::DM_OK, ssm_->SetOrientation(id, orientation));
304 ASSERT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->SetOrientation(SCREEN_ID_INVALID, orientation));
305 Orientation invalidOrientation = Orientation{20};
306 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetOrientation(id, invalidOrientation));
307 }
308
309 /**
310 * @tc.name: SetRotationFromWindow
311 * @tc.desc: SetRotationFromWindow test
312 * @tc.type: FUNC
313 */
314 HWTEST_F(ScreenSessionManagerTest, SetRotationFromWindow, Function | SmallTest | Level3)
315 {
316 Rotation targetRotation = Rotation::ROTATION_0;
317 ScreenId id = 0;
318 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
319 ssm_->screenSessionMap_[id] = screenSession;
320 ASSERT_EQ(ssm_->SetRotationFromWindow(targetRotation), ssm_->SetRotation(id, targetRotation, true));
321 }
322
323 /**
324 * @tc.name: GetDisplaySnapshot
325 * @tc.desc: ScreenSesionManager screen shot
326 * @tc.type: FUNC
327 */
328 HWTEST_F(ScreenSessionManagerTest, GetDisplaySnapshot, Function | SmallTest | Level3)
329 {
330 DisplayId displayId(0);
331 DmErrorCode* errorCode = nullptr;
332 ssm_->GetDisplaySnapshot(displayId, errorCode, false);
333 EXPECT_TRUE(1);
334 }
335
336 /**
337 * @tc.name: VirtualScreen
338 * @tc.desc: ScreenSesionManager virtual screen
339 * @tc.type: FUNC
340 */
341 HWTEST_F(ScreenSessionManagerTest, VirtualScreen, Function | SmallTest | Level3)
342 {
343 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
344 VirtualScreenOption virtualOption;
345 virtualOption.name_ = "testVirtualOption";
346 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
347
348 std::vector<ScreenId> mirrorScreenIds;
349 ScreenId mainScreenId(DEFAULT_SCREEN_ID);
350 ScreenId screenGroupId{1};
351 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->MakeMirror(mainScreenId, mirrorScreenIds, screenGroupId));
352 mirrorScreenIds.push_back(VIRTUAL_SCREEN_ID);
353 ASSERT_NE(DMError::DM_OK, ssm_->MakeMirror(mainScreenId, mirrorScreenIds, screenGroupId));
354
355 if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
356 return;
357 }
358
359 mirrorScreenIds.push_back(screenId);
360 ASSERT_EQ(DMError::DM_OK, ssm_->MakeMirror(mainScreenId, mirrorScreenIds, screenGroupId));
361
362 auto result1 = ssm_->SetVirtualScreenSurface(screenId, nullptr);
363 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, result1);
364 sptr<IConsumerSurface> surface = OHOS::IConsumerSurface::Create();
365 auto result2 = ssm_->SetVirtualScreenSurface(screenId, surface->GetProducer());
366 ASSERT_EQ(DMError::DM_OK, result2);
367 ASSERT_EQ(DMError::DM_OK, ssm_->DestroyVirtualScreen(screenId));
368 }
369
370 /**
371 * @tc.name: AutoRotate
372 * @tc.desc: ScreenSesionManager SetVirtualMirrorScreenCanvasRotation test
373 * @tc.type: FUNC
374 */
375 HWTEST_F(ScreenSessionManagerTest, AutoRotate, Function | SmallTest | Level3)
376 {
377 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
378 VirtualScreenOption virtualOption;
379 virtualOption.name_ = "testAutoRotate";
380 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
381 if (screenId != VIRTUAL_SCREEN_ID) {
382 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
383 }
384
385 auto result1 = ssm_->SetVirtualMirrorScreenCanvasRotation(screenId, true);
386 ASSERT_EQ(DMError::DM_OK, result1);
387 auto result2 = ssm_->SetVirtualMirrorScreenCanvasRotation(screenId, false);
388 ASSERT_EQ(DMError::DM_OK, result2);
389 ssm_->DestroyVirtualScreen(screenId);
390 }
391
392 /**
393 * @tc.name: GetScreenSession
394 * @tc.desc: GetScreenSession virtual screen
395 * @tc.type: FUNC
396 */
397 HWTEST_F(ScreenSessionManagerTest, GetScreenSession, Function | SmallTest | Level3)
398 {
399 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
400 VirtualScreenOption virtualOption;
401 virtualOption.name_ = "GetScreenSession";
402 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
403 if (screenId != VIRTUAL_SCREEN_ID) {
404 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
405 }
406 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
407 sptr<ScreenSession> screenSession =
408 new (std::nothrow) ScreenSession("GetScreenSession", screenId, rsid, 0);
409 ASSERT_NE(ssm_->GetScreenSession(screenId), screenSession);
410 ssm_->DestroyVirtualScreen(screenId);
411 }
412
413
414 /**
415 * @tc.name: GetDefaultScreenSession
416 * @tc.desc: GetDefaultScreenSession virtual screen
417 * @tc.type: FUNC
418 */
419 HWTEST_F(ScreenSessionManagerTest, GetDefaultScreenSession, Function | SmallTest | Level3)
420 {
421 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
422 VirtualScreenOption virtualOption;
423 virtualOption.name_ = "GetDefaultScreenSession";
424 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
425 if (screenId != VIRTUAL_SCREEN_ID) {
426 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
427 }
428 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
429 sptr<ScreenSession> screenSession =
430 new (std::nothrow) ScreenSession("GetDefaultScreenSession", screenId, rsid, 0);
431 ASSERT_NE(ssm_->GetDefaultScreenSession(), screenSession);
432 ssm_->DestroyVirtualScreen(screenId);
433 }
434
435 /**
436 * @tc.name: GetDefaultDisplayInfo
437 * @tc.desc: GetDefaultDisplayInfo virtual screen
438 * @tc.type: FUNC
439 */
440 HWTEST_F(ScreenSessionManagerTest, GetDefaultDisplayInfo, Function | SmallTest | Level3)
441 {
442 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
443 VirtualScreenOption virtualOption;
444 virtualOption.name_ = "GetDefaultScreenSession";
445 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
446 if (screenId != VIRTUAL_SCREEN_ID) {
447 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
448 }
449 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
450 sptr<ScreenSession> screenSession =
451 new (std::nothrow) ScreenSession("GetDefaultDisplayInfo", screenId, rsid, 0);
452 sptr<DisplayInfo> displayInfo = new DisplayInfo();
453 if (ssm_->GetScreenSession(screenId) == nullptr) {
454 ASSERT_EQ(ssm_->GetDefaultDisplayInfo(), nullptr);
455 }
456 ASSERT_NE(ssm_->GetScreenSession(screenId), nullptr);
457 ASSERT_NE(ssm_->GetDefaultDisplayInfo(), displayInfo);
458 ssm_->DestroyVirtualScreen(screenId);
459 }
460
461 /**
462 * @tc.name: HookDisplayInfoByUid
463 * @tc.desc: HookDisplayInfo by uid
464 * @tc.type: FUNC
465 */
466 HWTEST_F(ScreenSessionManagerTest, HookDisplayInfoByUid, Function | SmallTest | Level3)
467 {
468 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
469 VirtualScreenOption virtualOption;
470 virtualOption.name_ = "GetDefaultScreenSession";
471 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
472 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
473 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession("GetDefaultDisplayInfo", screenId, rsid, 0);
474 sptr<DisplayInfo> displayInfo = ssm_->GetDefaultDisplayInfo();
475 ASSERT_NE(ssm_->GetScreenSession(screenId), nullptr);
476 ASSERT_NE(displayInfo, nullptr);
477 uint32_t uid = 20020001;
478 DMHookInfo dmHookInfo;
479 std::map<uint32_t, DMHookInfo> displayHookMap = {};
480 displayHookMap[uid] = dmHookInfo;
481 ASSERT_EQ(displayHookMap.find(uid) != displayHookMap.end(), true);
482 displayInfo->SetWidth(100);
483 ASSERT_EQ(displayInfo->GetWidth(), 100);
484 displayInfo->SetHeight(100);
485 ASSERT_EQ(displayInfo->GetHeight(), 100);
486 displayInfo->SetVirtualPixelRatio(1.0);
487 ASSERT_EQ(displayInfo->GetVirtualPixelRatio(), 1.0);
488 displayInfo->SetRotation(Rotation::ROTATION_0);
489 ASSERT_EQ(displayInfo->GetRotation(), Rotation::ROTATION_0);
490 displayInfo->SetDisplayOrientation(DisplayOrientation::PORTRAIT);
491 ASSERT_EQ(displayInfo->GetDisplayOrientation(), DisplayOrientation::PORTRAIT);
492 ssm_->DestroyVirtualScreen(screenId);
493 }
494
495 /**
496 * @tc.name: GetDisplayInfoById
497 * @tc.desc: GetDisplayInfoById virtual screen
498 * @tc.type: FUNC
499 */
500 HWTEST_F(ScreenSessionManagerTest, GetDisplayInfoById, Function | SmallTest | Level3)
501 {
502 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
503 VirtualScreenOption virtualOption;
504 virtualOption.name_ = "GetDefaultScreenSession";
505 ASSERT_EQ(ssm_->GetDisplayInfoById(1), nullptr);
506 }
507
508 /**
509 * @tc.name: GetDisplayInfoByScreen
510 * @tc.desc: GetDisplayInfoByScreen virtual screen
511 * @tc.type: FUNC
512 */
513 HWTEST_F(ScreenSessionManagerTest, GetDisplayInfoByScreen, Function | SmallTest | Level3)
514 {
515 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
516 VirtualScreenOption virtualOption;
517 virtualOption.name_ = "GetDefaultScreenSession";
518 ASSERT_EQ(ssm_->GetDisplayInfoByScreen(1), nullptr);
519 }
520
521 /**
522 * @tc.name: GetScreenInfoById
523 * @tc.desc: GetScreenInfoById virtual screen
524 * @tc.type: FUNC
525 */
526 HWTEST_F(ScreenSessionManagerTest, GetScreenInfoById, Function | SmallTest | Level3)
527 {
528 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
529 VirtualScreenOption virtualOption;
530 virtualOption.name_ = "GetDefaultScreenSession";
531 ASSERT_EQ(ssm_->GetScreenInfoById(1), nullptr);
532 }
533
534 /**
535 * @tc.name: SetScreenActiveMode
536 * @tc.desc: SetScreenActiveMode virtual screen
537 * @tc.type: FUNC
538 */
539 HWTEST_F(ScreenSessionManagerTest, SetScreenActiveMode, Function | SmallTest | Level3)
540 {
541 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
542 VirtualScreenOption virtualOption;
543 virtualOption.name_ = "SetScreenActiveMode";
544 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
545 ASSERT_EQ(ssm_->SetScreenActiveMode(screenId, 0), DMError::DM_OK);
546 ssm_->DestroyVirtualScreen(screenId);
547 }
548
549
550 /**
551 * @tc.name: NotifyScreenChanged
552 * @tc.desc: NotifyScreenChanged virtual screen
553 * @tc.type: FUNC
554 */
555 HWTEST_F(ScreenSessionManagerTest, NotifyScreenChanged, Function | SmallTest | Level3)
556 {
557 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
558 VirtualScreenOption virtualOption;
559 virtualOption.name_ = "NotifyScreenChanged";
560 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
561 sptr<ScreenInfo> screenInfo;
562 ssm_->NotifyScreenChanged(screenInfo, ScreenChangeEvent::UPDATE_ORIENTATION);
563 screenInfo = new ScreenInfo();
564 ssm_->NotifyScreenChanged(screenInfo, ScreenChangeEvent::UPDATE_ORIENTATION);
565 ASSERT_EQ(ssm_->SetScreenActiveMode(screenId, 0), DMError::DM_OK);
566 ssm_->DestroyVirtualScreen(screenId);
567 }
568
569 /**
570 * @tc.name: NotifyDisplayEvent
571 * @tc.desc: NotifyDisplayEvent virtual screen
572 * @tc.type: FUNC
573 */
574 HWTEST_F(ScreenSessionManagerTest, NotifyDisplayEvent, Function | SmallTest | Level3)
575 {
576 DisplayEvent event = DisplayEvent::KEYGUARD_DRAWN;
577 ssm_->NotifyDisplayEvent(event);
578 ASSERT_EQ(ssm_->keyguardDrawnDone_, true);
579
580 event = DisplayEvent::SCREEN_LOCK_SUSPEND;
581 ssm_->NotifyDisplayEvent(event);
582 ASSERT_EQ(ssm_->gotScreenOffNotify_, true);
583
584 event = DisplayEvent::SCREEN_LOCK_OFF;
585 ssm_->NotifyDisplayEvent(event);
586 ASSERT_EQ(ssm_->gotScreenOffNotify_, true);
587
588 event = DisplayEvent::SCREEN_LOCK_FINGERPRINT;
589 ssm_->NotifyDisplayEvent(event);
590 ASSERT_EQ(ssm_->gotScreenlockFingerprint_, true);
591 }
592
593
594 /**
595 * @tc.name: GetScreenInfoByDisplayId
596 * @tc.desc: GetScreenInfoByDisplayId virtual screen
597 * @tc.type: FUNC
598 */
599 HWTEST_F(ScreenSessionManagerTest, GetScreenInfoByDisplayId, Function | SmallTest | Level3)
600 {
601 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
602 VirtualScreenOption virtualOption;
603 virtualOption.name_ = "GetScreenInfoByDisplayId";
604 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
605 sptr<ScreenInfo> screenInfo;
606 screenInfo = ssm_->GetScreenInfoByDisplayId(screenId);
607 ASSERT_NE(screenInfo, nullptr);
608 ssm_->DestroyVirtualScreen(screenId);
609 }
610
611 /**
612 * @tc.name: GetScreenModesByDisplayId
613 * @tc.desc: GetScreenModesByDisplayId virtual screen
614 * @tc.type: FUNC
615 */
616 HWTEST_F(ScreenSessionManagerTest, GetScreenModesByDisplayId, Function | SmallTest | Level3)
617 {
618 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
619 VirtualScreenOption virtualOption;
620 virtualOption.name_ = "GetScreenModesByDisplayId";
621 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
622 sptr<SupportedScreenModes> screenModes;
623 screenModes = ssm_->GetScreenModesByDisplayId(screenId);
624 ASSERT_NE(screenModes, nullptr);
625 ssm_->DestroyVirtualScreen(screenId);
626 }
627
628 /**
629 * @tc.name: UpdateDisplayHookInfo001
630 * @tc.desc: UpdateDisplayHookInfo by uid
631 * @tc.type: FUNC
632 */
633 HWTEST_F(ScreenSessionManagerTest, UpdateDisplayHookInfo001, Function | SmallTest | Level3)
634 {
635 uint32_t uid = 20020001;
636 DMHookInfo dmHookInfo;
637 dmHookInfo.width_ = 100;
638 dmHookInfo.height_ = 100;
639 dmHookInfo.density_ = 1.0;
640 std::map<uint32_t, DMHookInfo> displayHookMap = {};
641 displayHookMap[uid] = dmHookInfo;
642 ASSERT_EQ(displayHookMap.find(uid) != displayHookMap.end(), true);
643 auto info = displayHookMap[uid];
644 ASSERT_EQ(info.width_, 100);
645 ASSERT_EQ(info.height_, 100);
646 ASSERT_EQ(info.density_, 1.0);
647 }
648
649 /**
650 * @tc.name: UpdateDisplayHookInfo002
651 * @tc.desc: UpdateDisplayHookInfo by uid
652 * @tc.type: FUNC
653 */
654 HWTEST_F(ScreenSessionManagerTest, UpdateDisplayHookInfo002, Function | SmallTest | Level3)
655 {
656 uint32_t uid = 20020001;
657 DMHookInfo dmHookInfo;
658 dmHookInfo.width_ = 100;
659 dmHookInfo.height_ = 100;
660 dmHookInfo.density_ = 1.0;
661 std::map<uint32_t, DMHookInfo> displayHookMap = {};
662 displayHookMap[uid] = dmHookInfo;
663 displayHookMap.erase(uid);
664 ASSERT_EQ(displayHookMap.find(uid) != displayHookMap.end(), false);
665 }
666
667 /**
668 * @tc.name: SetVirtualPixelRatio
669 * @tc.desc: SetVirtualPixelRatio virtual screen
670 * @tc.type: FUNC
671 */
672 HWTEST_F(ScreenSessionManagerTest, SetVirtualPixelRatio, Function | SmallTest | Level3)
673 {
674 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
675 VirtualScreenOption virtualOption;
676 virtualOption.name_ = "SetVirtualPixelRatio";
677 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
678 ASSERT_EQ(DMError::DM_OK, ssm_->SetVirtualPixelRatio(screenId, 0.1));
679 ssm_->DestroyVirtualScreen(screenId);
680 }
681
682 /**
683 * @tc.name: SetVirtualPixelRatioSystem
684 * @tc.desc: SetVirtualPixelRatioSystem virtual screen
685 * @tc.type: FUNC
686 */
687 HWTEST_F(ScreenSessionManagerTest, SetVirtualPixelRatioSystem, Function | SmallTest | Level3)
688 {
689 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
690 VirtualScreenOption virtualOption;
691 virtualOption.name_ = "SetVirtualPixelRatioSystem";
692 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
693 ASSERT_EQ(DMError::DM_OK, ssm_->SetVirtualPixelRatioSystem(screenId, 0.1));
694 ssm_->DestroyVirtualScreen(screenId);
695 }
696
697 /**
698 * @tc.name: SetResolution
699 * @tc.desc: SetResolution virtual screen
700 * @tc.type: FUNC
701 */
702 HWTEST_F(ScreenSessionManagerTest, SetResolution, Function | SmallTest | Level3)
703 {
704 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
705 VirtualScreenOption virtualOption;
706 virtualOption.name_ = "SetResolution";
707 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
708 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0);
709 ssm_->screenSessionMap_[screenId] = screenSession;
710 sptr<SupportedScreenModes> mode = new SupportedScreenModes();
711 mode->width_ = 1;
712 mode->height_ = 1;
713 screenSession->modes_ = {mode};
714 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetResolution(screenId, 100, 100, 0.5));
715 ssm_->DestroyVirtualScreen(screenId);
716 }
717
718 /**
719 * @tc.name: GetScreenColorGamut
720 * @tc.desc: GetScreenColorGamut virtual screen
721 * @tc.type: FUNC
722 */
723 HWTEST_F(ScreenSessionManagerTest, GetScreenColorGamut, Function | SmallTest | Level3)
724 {
725 ScreenColorGamut colorGamut = ScreenColorGamut::COLOR_GAMUT_SRGB;
726 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetScreenColorGamut(1, colorGamut));
727 DisplayId id = 0;
728 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
729 ssm_->screenSessionMap_[id] = screenSession;
730 if (SceneBoardJudgement::IsSceneBoardEnabled()) {
731 ASSERT_EQ(DMError::DM_OK, ssm_->GetScreenColorGamut(id, colorGamut));
732 } else {
733 ASSERT_NE(DMError::DM_OK, ssm_->GetScreenColorGamut(id, colorGamut));
734 }
735 }
736
737 /**
738 * @tc.name: LoadScreenSceneXml
739 * @tc.desc: LoadScreenSceneXml virtual screen
740 * @tc.type: FUNC
741 */
742 HWTEST_F(ScreenSessionManagerTest, LoadScreenSceneXml, Function | SmallTest | Level3)
743 {
744 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
745 VirtualScreenOption virtualOption;
746 virtualOption.name_ = "LoadScreenSceneXml";
747 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
748 ssm_->LoadScreenSceneXml();
749 ASSERT_EQ(ssm_->SetScreenActiveMode(screenId, 0), DMError::DM_OK);
750 ssm_->DestroyVirtualScreen(screenId);
751 }
752
753 /**
754 * @tc.name: GetScreenGamutMap
755 * @tc.desc: GetScreenGamutMap virtual screen
756 * @tc.type: FUNC
757 */
758 HWTEST_F(ScreenSessionManagerTest, GetScreenGamutMap, Function | SmallTest | Level3)
759 {
760 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
761 VirtualScreenOption virtualOption;
762 virtualOption.name_ = "GetScreenGamutMap";
763 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
764 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
765 sptr<ScreenSession> screenSession =
766 new (std::nothrow) ScreenSession("GetScreenGamutMap", screenId, rsid, 0);
767 ScreenGamutMap gamutMap;
768 ASSERT_EQ(DMError::DM_OK, ssm_->GetScreenGamutMap(screenId, gamutMap));
769 ssm_->DestroyVirtualScreen(screenId);
770 }
771
772 /**
773 * @tc.name: MakeExpand
774 * @tc.desc: MakeExpand virtual screen
775 * @tc.type: FUNC
776 */
777 HWTEST_F(ScreenSessionManagerTest, MakeExpand, Function | SmallTest | Level3)
778 {
779 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
780 VirtualScreenOption virtualOption;
781 virtualOption.name_ = "MakeExpand";
782 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
783 if (screenId != VIRTUAL_SCREEN_ID) {
784 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
785 }
786 std::vector<ScreenId> mirrorScreenIds;
787 std::vector<Point> startPoints;
788 ScreenId screenGroupId2 = DISPLAY_ID_INVALID;
789 ASSERT_NE(DMError::DM_ERROR_RENDER_SERVICE_FAILED, ssm_->MakeExpand(mirrorScreenIds, startPoints, screenGroupId2));
790 ssm_->DestroyVirtualScreen(screenId);
791 }
792
793 /**
794 * @tc.name: DeleteScreenId
795 * @tc.desc: DeleteScreenId virtual screen
796 * @tc.type: FUNC
797 */
798 HWTEST_F(ScreenSessionManagerTest, DeleteScreenId, Function | SmallTest | Level3)
799 {
800 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
801 VirtualScreenOption virtualOption;
802 virtualOption.name_ = "DeleteScreenId";
803 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
804 if (screenId != VIRTUAL_SCREEN_ID) {
805 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
806 }
807 ScreenSessionManager::ScreenIdManager sim;
808 ASSERT_EQ(false, sim.DeleteScreenId(99));
809 ssm_->DestroyVirtualScreen(screenId);
810 }
811
812 /**
813 * @tc.name: HasRsScreenId
814 * @tc.desc: HasRsScreenId virtual screen
815 * @tc.type: FUNC
816 */
817 HWTEST_F(ScreenSessionManagerTest, HasRsScreenId, Function | SmallTest | Level3)
818 {
819 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
820 VirtualScreenOption virtualOption;
821 virtualOption.name_ = "DeleteScreenId";
822
823 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
824 if (screenId != VIRTUAL_SCREEN_ID) {
825 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
826 }
827 ScreenSessionManager::ScreenIdManager sim;
828 ASSERT_EQ(false, sim.HasRsScreenId(99));
829 ssm_->DestroyVirtualScreen(screenId);
830 }
831
832 /**
833 * @tc.name: AddAsFirstScreenLocked
834 * @tc.desc: AddAsFirstScreenLocked virtual screen
835 * @tc.type: FUNC
836 */
837 HWTEST_F(ScreenSessionManagerTest, AddAsFirstScreenLocked, Function | SmallTest | Level3)
838 {
839 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
840 VirtualScreenOption virtualOption;
841 virtualOption.name_ = "DeleteScreenId";
842
843 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
844 if (screenId != VIRTUAL_SCREEN_ID) {
845 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
846 }
847 sptr<ScreenSession> newScreen = new (std::nothrow) ScreenSession();
848 sptr<ScreenSessionGroup> sessiongroup=nullptr;
849 ASSERT_NE(sessiongroup, ssm_->AddAsFirstScreenLocked(newScreen));
850 ssm_->DestroyVirtualScreen(screenId);
851 }
852
853 /**
854 * @tc.name: AddAsSuccedentScreenLocked
855 * @tc.desc: AddAsSuccedentScreenLocked virtual screen
856 * @tc.type: FUNC
857 */
858 HWTEST_F(ScreenSessionManagerTest, AddAsSuccedentScreenLocked, Function | SmallTest | Level3)
859 {
860 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
861 VirtualScreenOption virtualOption;
862 virtualOption.name_ = "DeleteScreenId";
863
864 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
865 if (screenId != VIRTUAL_SCREEN_ID) {
866 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
867 }
868 sptr<ScreenSession> newScreen;
869 sptr<ScreenSessionGroup> sessiongroup=nullptr;
870 ASSERT_EQ(sessiongroup, ssm_->AddAsSuccedentScreenLocked(newScreen));
871 ssm_->DestroyVirtualScreen(screenId);
872 }
873
874 /**
875 * @tc.name: SetMirror
876 * @tc.desc: SetMirror virtual screen
877 * @tc.type: FUNC
878 */
879 HWTEST_F(ScreenSessionManagerTest, SetMirror, Function | SmallTest | Level3)
880 {
881 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
882 VirtualScreenOption virtualOption;
883 virtualOption.name_ = "SetMirror";
884 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
885
886 std::vector<ScreenId> screens{0, 1, 2, 3, 4, 5, 6, 7};
887 sptr<ScreenSession> screenSession = nullptr;
888 screenSession = new (std::nothrow) ScreenSession("GetScreenGamutMap", 2, 2, 3);
889 std::map<ScreenId, sptr<ScreenSession>> screenSessionMap_{
890 {2, screenSession},
891 };
892 ssm_->screenSessionMap_ = screenSessionMap_;
893 auto screen = ssm_->GetScreenSession(2);
894 screen->GetScreenProperty().SetScreenType(ScreenType::REAL);
895 ASSERT_EQ(DMError::DM_OK, ssm_->SetMirror(2, screens, DMRect::NONE()));
896 ASSERT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->SetMirror(9, screens, DMRect::NONE()));
897 ssm_->DestroyVirtualScreen(screenId);
898 }
899
900 /**
901 * @tc.name: GetAbstractScreenGroup
902 * @tc.desc: GetAbstractScreenGroup virtual screen
903 * @tc.type: FUNC
904 */
905 HWTEST_F(ScreenSessionManagerTest, GetAbstractScreenGroup, Function | SmallTest | Level3)
906 {
907 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
908 VirtualScreenOption virtualOption;
909 virtualOption.name_ = "DeleteScreenId";
910
911 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
912 if (screenId != VIRTUAL_SCREEN_ID) {
913 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
914 }
915 sptr<ScreenSessionGroup> sreengroup=nullptr;
916 ASSERT_EQ(sreengroup, ssm_->GetAbstractScreenGroup(2));
917 ssm_->DestroyVirtualScreen(screenId);
918 }
919
920 /**
921 * @tc.name: InitAbstractScreenModesInfo
922 * @tc.desc: InitAbstractScreenModesInfo virtual screen
923 * @tc.type: FUNC
924 */
925 HWTEST_F(ScreenSessionManagerTest, InitAbstractScreenModesInfo, Function | SmallTest | Level3)
926 {
927 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
928 VirtualScreenOption virtualOption;
929 virtualOption.name_ = "DeleteScreenId";
930
931 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
932 if (screenId != VIRTUAL_SCREEN_ID) {
933 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
934 }
935 sptr<ScreenSession> screenSession =new (std::nothrow) ScreenSession();
936 ASSERT_EQ(true, ssm_->InitAbstractScreenModesInfo(screenSession));
937 ssm_->DestroyVirtualScreen(screenId);
938 }
939
940 /**
941 * @tc.name: AddToGroupLocked
942 * @tc.desc: AddToGroupLocked virtual screen
943 * @tc.type: FUNC
944 */
945 HWTEST_F(ScreenSessionManagerTest, AddToGroupLocked, Function | SmallTest | Level3)
946 {
947 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
948 VirtualScreenOption virtualOption;
949 virtualOption.name_ = "DeleteScreenId";
950
951 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
952 if (screenId != VIRTUAL_SCREEN_ID) {
953 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
954 }
955 sptr<ScreenSession> newScreen=nullptr;
956 sptr<ScreenSessionGroup> sessiongroup=nullptr;
957 ASSERT_EQ(sessiongroup, ssm_->AddToGroupLocked(newScreen));
958 ssm_->DestroyVirtualScreen(screenId);
959 }
960
961 /**
962 * @tc.name: InitVirtualScreen
963 * @tc.desc: InitVirtualScreen virtual screen
964 * @tc.type: FUNC
965 */
966 HWTEST_F(ScreenSessionManagerTest, InitVirtualScreen, Function | SmallTest | Level3)
967 {
968 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
969 VirtualScreenOption virtualOption;
970 virtualOption.name_ = "DeleteScreenId";
971 sptr<ScreenSession> screenSession;
972 VirtualScreenOption option;
973 ASSERT_NE(screenSession, ssm_->InitVirtualScreen(1, 2, option));
974 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
975 if (screenId != VIRTUAL_SCREEN_ID) {
976 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
977 }
978 screenSession =new (std::nothrow) ScreenSession();
979 ASSERT_NE(screenSession, ssm_->InitVirtualScreen(1, 2, option));
980 ssm_->DestroyVirtualScreen(screenId);
981 }
982
983 /**
984 * @tc.name: InitAndGetScreen
985 * @tc.desc: InitAndGetScreen virtual screen
986 * @tc.type: FUNC
987 */
988 HWTEST_F(ScreenSessionManagerTest, InitAndGetScreen, Function | SmallTest | Level3)
989 {
990 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
991 VirtualScreenOption virtualOption;
992 virtualOption.name_ = "DeleteScreenId";
993
994 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
995 if (screenId != VIRTUAL_SCREEN_ID) {
996 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
997 }
998 sptr<ScreenSession> screenSession =new (std::nothrow) ScreenSession();
999 ASSERT_NE(screenSession, ssm_->InitAndGetScreen(2));
1000 ssm_->DestroyVirtualScreen(screenId);
1001 }
1002
1003 /**
1004 * @tc.name: RemoveFromGroupLocked
1005 * @tc.desc: RemoveFromGroupLocked virtual screen
1006 * @tc.type: FUNC
1007 */
1008 HWTEST_F(ScreenSessionManagerTest, RemoveFromGroupLocked, Function | SmallTest | Level3)
1009 {
1010 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1011 VirtualScreenOption virtualOption;
1012 virtualOption.name_ = "DeleteScreenId";
1013
1014 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1015 if (screenId != VIRTUAL_SCREEN_ID) {
1016 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1017 }
1018 sptr<ScreenSession> newScreen = new (std::nothrow) ScreenSession();
1019 sptr<ScreenSessionGroup> sessiongroup;
1020 // sptr<ScreenSessionGroup>
1021 ASSERT_EQ(sessiongroup, ssm_->RemoveFromGroupLocked(newScreen));
1022 ssm_->DestroyVirtualScreen(screenId);
1023 }
1024
1025 /**
1026 * @tc.name: CreateAndGetNewScreenId
1027 * @tc.desc: CreateAndGetNewScreenId virtual screen
1028 * @tc.type: FUNC
1029 */
1030 HWTEST_F(ScreenSessionManagerTest, CreateAndGetNewScreenId, Function | SmallTest | Level3)
1031 {
1032 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1033 VirtualScreenOption virtualOption;
1034 virtualOption.name_ = "CreateAndGetNewScreenId";
1035 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1036 ScreenSessionManager::ScreenIdManager sim;
1037 ASSERT_EQ(1000, sim.CreateAndGetNewScreenId(screenId));
1038 ssm_->DestroyVirtualScreen(screenId);
1039 }
1040
1041 /**
1042 * @tc.name: AddScreenToGroup
1043 * @tc.desc: AddScreenToGroup virtual screen
1044 * @tc.type: FUNC
1045 */
1046 HWTEST_F(ScreenSessionManagerTest, AddScreenToGroup, Function | SmallTest | Level3)
1047 {
1048 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1049 VirtualScreenOption virtualOption;
1050 virtualOption.name_ = "DeleteScreenId";
1051 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1052 if (screenId != VIRTUAL_SCREEN_ID) {
1053 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1054 }
1055 const std::vector<ScreenId> addScreens;
1056 const std::vector<Point> addChildPos;
1057 std::map<ScreenId, bool> removeChildResMap;
1058 sptr<ScreenSessionGroup> group;
1059 ssm_->AddScreenToGroup(group, addScreens, addChildPos, removeChildResMap);
1060 sptr<ScreenSession> screenSession =new (std::nothrow) ScreenSession();
1061 ASSERT_NE(screenSession, ssm_->InitAndGetScreen(2));
1062 ssm_->DestroyVirtualScreen(screenId);
1063 }
1064
1065 /**
1066 * @tc.name: GetRSDisplayNodeByScreenId
1067 * @tc.desc: GetRSDisplayNodeByScreenId virtual screen
1068 * @tc.type: FUNC
1069 */
1070 HWTEST_F(ScreenSessionManagerTest, GetRSDisplayNodeByScreenId, Function | SmallTest | Level3)
1071 {
1072 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1073 VirtualScreenOption virtualOption;
1074 virtualOption.name_ = "DeleteScreenId";
1075 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1076 if (screenId != VIRTUAL_SCREEN_ID) {
1077 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1078 }
1079 ssm_->GetRSDisplayNodeByScreenId(2);
1080 sptr<ScreenSession> screenSession =new (std::nothrow) ScreenSession();
1081 ASSERT_NE(screenSession, ssm_->InitAndGetScreen(2));
1082 ssm_->DestroyVirtualScreen(screenId);
1083 }
1084
1085 /**
1086 * @tc.name: GetAllDisplayIds
1087 * @tc.desc: GetAllDisplayIds virtual screen
1088 * @tc.type: FUNC
1089 */
1090 HWTEST_F(ScreenSessionManagerTest, GetAllDisplayIds, Function | SmallTest | Level3)
1091 {
1092 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1093 VirtualScreenOption virtualOption;
1094 virtualOption.name_ = "DeleteScreenId";
1095 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1096 if (screenId != VIRTUAL_SCREEN_ID) {
1097 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1098 }
1099 ssm_->GetRSDisplayNodeByScreenId(2);
1100 sptr<ScreenSession> screenSession =new (std::nothrow) ScreenSession();
1101 std::vector<DisplayId> displays(2);
1102 ASSERT_NE(displays, ssm_->GetAllDisplayIds());
1103 ssm_->DestroyVirtualScreen(screenId);
1104 }
1105
1106 /**
1107 * @tc.name: SetScreenGamutMap
1108 * @tc.desc: SetScreenGamutMap virtual screen
1109 * @tc.type: FUNC
1110 */
1111 HWTEST_F(ScreenSessionManagerTest, SetScreenGamutMap, Function | SmallTest | Level3)
1112 {
1113 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1114 VirtualScreenOption virtualOption;
1115 virtualOption.name_ = "SetScreenGamutMap";
1116 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1117 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
1118 sptr<ScreenSession> screenSession =
1119 new (std::nothrow) ScreenSession("SetScreenGamutMap", screenId, rsid, 0);
1120 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM,
1121 ssm_->SetScreenGamutMap(SCREEN_ID_INVALID, ScreenGamutMap::GAMUT_MAP_HDR_EXTENSION));
1122 ASSERT_EQ(DMError::DM_OK, ssm_->SetScreenGamutMap(screenId, ScreenGamutMap::GAMUT_MAP_EXTENSION));
1123 ssm_->DestroyVirtualScreen(screenId);
1124 }
1125
1126 /**
1127 * @tc.name: StopExpand
1128 * @tc.desc: StopExpand virtual screen
1129 * @tc.type: FUNC
1130 */
1131 HWTEST_F(ScreenSessionManagerTest, StopExpand, Function | SmallTest | Level3)
1132 {
1133 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1134 VirtualScreenOption virtualOption;
1135 virtualOption.name_ = "DeleteScreenId";
1136 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1137 if (screenId != VIRTUAL_SCREEN_ID) {
1138 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1139 }
1140 std::vector<ScreenId> expandScreenIds {0, 1, 2, 3, 4, 5};
1141 ASSERT_NE(DMError::DM_ERROR_NOT_SYSTEM_APP, ssm_->StopExpand(expandScreenIds));
1142 ssm_->DestroyVirtualScreen(screenId);
1143 }
1144
1145 /**
1146 * @tc.name: OnScreenDisconnect
1147 * @tc.desc: OnScreenDisconnect virtual screen
1148 * @tc.type: FUNC
1149 */
1150 HWTEST_F(ScreenSessionManagerTest, OnScreenDisconnect, Function | SmallTest | Level3)
1151 {
1152 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1153 VirtualScreenOption virtualOption;
1154 virtualOption.name_ = "DeleteScreenId";
1155 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1156 if (screenId != VIRTUAL_SCREEN_ID) {
1157 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1158 }
1159 ssm_->GetRSDisplayNodeByScreenId(2);
1160 ssm_->OnScreenDisconnect(1);
1161 sptr<ScreenSession> screenSession =new (std::nothrow) ScreenSession();
1162 ASSERT_NE(screenSession, ssm_->InitAndGetScreen(2));
1163 ssm_->DestroyVirtualScreen(screenId);
1164 }
1165
1166 /**
1167 * @tc.name: SetScreenColorGamut
1168 * @tc.desc: SetScreenColorGamut virtual screen
1169 * @tc.type: FUNC
1170 */
1171 HWTEST_F(ScreenSessionManagerTest, SetScreenColorGamut, Function | SmallTest | Level3)
1172 {
1173 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1174 VirtualScreenOption virtualOption;
1175 virtualOption.name_ = "SetScreenColorGamut";
1176 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1177 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
1178 sptr<ScreenSession> screenSession =
1179 new (std::nothrow) ScreenSession("SetScreenColorGamut", screenId, rsid, 0);
1180 ASSERT_EQ(DMError::DM_OK, ssm_->SetScreenColorGamut(screenId, 2));
1181 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetScreenColorGamut(SCREEN_ID_INVALID, 2));
1182 ssm_->DestroyVirtualScreen(screenId);
1183 }
1184
1185 /**
1186 * @tc.name: SetScreenColorTransform
1187 * @tc.desc: SetScreenColorTransform virtual screen
1188 * @tc.type: FUNC
1189 */
1190 HWTEST_F(ScreenSessionManagerTest, SetScreenColorTransform, Function | SmallTest | Level3)
1191 {
1192 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1193 VirtualScreenOption virtualOption;
1194 virtualOption.name_ = "SetScreenColorTransform";
1195 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1196 if (screenId != VIRTUAL_SCREEN_ID) {
1197 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1198 }
1199 auto rsid = ssm_->screenIdManager_.ConvertToRsScreenId(screenId);
1200 sptr<ScreenSession> screenSession =
1201 new (std::nothrow) ScreenSession("SetScreenColorTransform", screenId, rsid, 0);
1202 ASSERT_EQ(DMError::DM_OK, ssm_->SetScreenColorTransform(screenId));
1203 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetScreenColorTransform(SCREEN_ID_INVALID));
1204 ssm_->DestroyVirtualScreen(screenId);
1205 }
1206
1207 /**
1208 * @tc.name: SetScreenRotationLocked
1209 * @tc.desc: SetScreenRotationLocked virtual screen
1210 * @tc.type: FUNC
1211 */
1212 HWTEST_F(ScreenSessionManagerTest, SetScreenRotationLocked, Function | SmallTest | Level3)
1213 {
1214 ScreenId id = 0;
1215 ssm_->screenSessionMap_[id] = nullptr;
1216 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetScreenRotationLocked(false));
1217 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1218 ssm_->screenSessionMap_[id] = screenSession;
1219 ASSERT_EQ(DMError::DM_OK, ssm_->SetScreenRotationLocked(false));
1220 }
1221
1222 /**
1223 * @tc.name: UpdateScreenRotationProperty
1224 * @tc.desc: UpdateScreenRotationProperty virtual screen
1225 * @tc.type: FUNC
1226 */
1227 HWTEST_F(ScreenSessionManagerTest, UpdateScreenRotationProperty, Function | SmallTest | Level3)
1228 {
1229 if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
1230 return;
1231 }
1232 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1233 VirtualScreenOption virtualOption;
1234 virtualOption.name_ = "DeleteScreenId";
1235 RRect bounds;
1236 bounds.rect_.width_ = 1344;
1237 bounds.rect_.height_ = 2772;
1238 int rotation = 1;
1239 ScreenPropertyChangeType screenPropertyChangeType = ScreenPropertyChangeType::ROTATION_BEGIN;
1240 ScreenSessionManager::GetInstance().UpdateScreenRotationProperty(1, bounds, 1, screenPropertyChangeType);
1241 auto screenId = ScreenSessionManager::GetInstance().CreateVirtualScreen(virtualOption,
1242 displayManagerAgent->AsObject());
1243 if (screenId != VIRTUAL_SCREEN_ID) {
1244 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1245 }
1246 ScreenSessionManager::GetInstance().UpdateScreenRotationProperty(1, bounds, rotation,
1247 screenPropertyChangeType);
1248 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession();
1249 ASSERT_NE(screenSession, ScreenSessionManager::GetInstance().InitAndGetScreen(2));
1250 ssm_->DestroyVirtualScreen(screenId);
1251 }
1252
1253 /**
1254 * @tc.name: MakeUniqueScreen
1255 * @tc.desc: Make unique screen
1256 * @tc.type: FUNC
1257 */
1258 HWTEST_F(ScreenSessionManagerTest, MakeUniqueScreen, Function | SmallTest | Level3)
1259 {
1260 vector<ScreenId> screenIds;
1261 screenIds.clear();
1262 ASSERT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->MakeUniqueScreen(screenIds));
1263 }
1264
1265 /**
1266 * @tc.name: ConvertScreenIdToRsScreenId
1267 * @tc.desc: convert screen id to RS screen id
1268 * @tc.type: FUNC
1269 */
1270 HWTEST_F(ScreenSessionManagerTest, ConvertScreenIdToRsScreenId, Function | SmallTest | Level3)
1271 {
1272 ScreenId rsScreenId = VIRTUAL_SCREEN_RS_ID;
1273 ssm_->screenIdManager_.rs2SmsScreenIdMap_.erase(rsScreenId);
1274 ScreenId screenId = ssm_->screenIdManager_.CreateAndGetNewScreenId(rsScreenId);
1275 ASSERT_EQ(true, ssm_->screenIdManager_.HasRsScreenId(rsScreenId));
1276 ScreenId tmpRsScreenId = SCREEN_ID_INVALID;
1277 ASSERT_EQ(true, ssm_->ConvertScreenIdToRsScreenId(screenId, tmpRsScreenId));
1278 ASSERT_EQ(tmpRsScreenId, rsScreenId);
1279 ssm_->screenIdManager_.DeleteScreenId(screenId);
1280 ASSERT_EQ(false, ssm_->ConvertScreenIdToRsScreenId(screenId, tmpRsScreenId));
1281 }
1282
1283 /**
1284 * @tc.name: DisableMirror
1285 * @tc.desc: DisableMirror test
1286 * @tc.type: FUNC
1287 */
1288 HWTEST_F(ScreenSessionManagerTest, DisableMirror, Function | SmallTest | Level3)
1289 {
1290 ASSERT_EQ(DMError::DM_OK, ssm_->DisableMirror(false));
1291 }
1292
1293 /**
1294 * @tc.name: HasImmersiveWindow
1295 * @tc.desc: HasImmersiveWindow test
1296 * @tc.type: FUNC
1297 */
1298 HWTEST_F(ScreenSessionManagerTest, HasImmersiveWindow, Function | SmallTest | Level3)
1299 {
1300 bool immersive = false;
1301 ASSERT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->HasImmersiveWindow(immersive));
1302 immersive = true;
1303 EXPECT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->HasImmersiveWindow(immersive));
1304 }
1305
1306 /**
1307 * @tc.name: SetSpecifiedScreenPower
1308 * @tc.desc: ScreenSessionManager screen power
1309 * @tc.type: FUNC
1310 */
1311 HWTEST_F(ScreenSessionManagerTest, SetSpecifiedScreenPower, Function | SmallTest | Level3)
1312 {
1313 ScreenId mainScreenId(DEFAULT_SCREEN_ID);
1314 ScreenPowerState state = ScreenPowerState::POWER_ON;
1315 PowerStateChangeReason reason = PowerStateChangeReason::POWER_BUTTON;
1316 ASSERT_EQ(false, ssm_->SetSpecifiedScreenPower(mainScreenId, state, reason));
1317 reason = PowerStateChangeReason::STATE_CHANGE_REASON_COLLABORATION;
1318 EXPECT_TRUE(ssm_->SetSpecifiedScreenPower(mainScreenId, state, reason));
1319 }
1320
1321 /**
1322 * @tc.name: NotifyFoldStatusChanged
1323 * @tc.desc: ScreenSessionManager notify foldStatus changed
1324 * @tc.type: FUNC
1325 */
1326 HWTEST_F(ScreenSessionManagerTest, NotifyFoldStatusChanged, Function | SmallTest | Level3)
1327 {
1328 const std::string& dumpParam = "-p";
1329 if (ssm_ != nullptr)
1330 {
1331 int errCode = ssm_->NotifyFoldStatusChanged(dumpParam);
1332 ASSERT_EQ(errCode, 0);
1333 } else {
1334 ASSERT_EQ(1, 0);
1335 }
1336 }
1337
1338 /**
1339 * @tc.name: NotifyPrivateWindowListChanged
1340 * @tc.desc: ScreenSessionManager notify PrivateWindowList changed
1341 * @tc.type: FUNC
1342 */
1343 HWTEST_F(ScreenSessionManagerTest, NotifyPrivateWindowListChanged, Function | SmallTest | Level3)
1344 {
1345 DisplayId id = 0;
1346 std::vector<std::string> privacyWindowList{"win0", "win1"};
1347 if (ssm_ != nullptr)
1348 {
1349 ssm_->NotifyPrivateWindowListChanged(id, privacyWindowList);
1350 ASSERT_EQ(0, 0);
1351 } else {
1352 ASSERT_EQ(1, 0);
1353 }
1354 }
1355
1356 /**
1357 * @tc.name: SetPrivacyStateByDisplayId01
1358 * @tc.desc: SetPrivacyStateByDisplayId true test
1359 * @tc.type: FUNC
1360 */
1361 HWTEST_F(ScreenSessionManagerTest, SetPrivacyStateByDisplayId01, Function | SmallTest | Level3)
1362 {
1363 DisplayId id = 0;
1364 bool hasPrivate = true;
1365 sptr<ScreenSession> screenSession = new ScreenSession(id, ScreenProperty(), 0);
1366 ssm_->screenSessionMap_[id] = screenSession;
1367 ASSERT_NE(nullptr, screenSession);
1368 ssm_->SetPrivacyStateByDisplayId(id, hasPrivate);
1369 bool result = screenSession->HasPrivateSessionForeground();
1370 EXPECT_EQ(result, true);
1371 }
1372
1373 /**
1374 * @tc.name: SetPrivacyStateByDisplayId02
1375 * @tc.desc: SetPrivacyStateByDisplayId false test
1376 * @tc.type: FUNC
1377 */
1378 HWTEST_F(ScreenSessionManagerTest, SetPrivacyStateByDisplayId02, Function | SmallTest | Level3)
1379 {
1380 DisplayId id = 0;
1381 bool hasPrivate = false;
1382 sptr<ScreenSession> screenSession = new ScreenSession(id, ScreenProperty(), 0);
1383 ssm_->screenSessionMap_[id] = screenSession;
1384 ASSERT_NE(nullptr, screenSession);
1385 ssm_->SetPrivacyStateByDisplayId(id, hasPrivate);
1386 bool result = screenSession->HasPrivateSessionForeground();
1387 EXPECT_EQ(result, false);
1388 }
1389
1390 /**
1391 * @tc.name: SetScreenPrivacyWindowList
1392 * @tc.desc: SetScreenPrivacyWindowList test
1393 * @tc.type: FUNC
1394 */
1395 HWTEST_F(ScreenSessionManagerTest, SetScreenPrivacyWindowList, Function | SmallTest | Level3)
1396 {
1397 DisplayId id = 0;
1398 std::vector<std::string> privacyWindowList{"win0", "win1"};
1399 sptr<ScreenSession> screenSession = new ScreenSession(id, ScreenProperty(), 0);
1400 ASSERT_NE(nullptr, screenSession);
1401 ssm_->SetScreenPrivacyWindowList(id, privacyWindowList);
1402 ASSERT_EQ(0, 0);
1403 }
1404
1405 /**
1406 * @tc.name: GetAllScreenIds
1407 * @tc.desc: GetAllScreenIds screen power
1408 * @tc.type: FUNC
1409 */
1410 HWTEST_F(ScreenSessionManagerTest, GetAllScreenIds, Function | SmallTest | Level3)
1411 {
1412 sptr<ScreenSession> screenSession = new ScreenSession();
1413 ASSERT_NE(nullptr, screenSession);
1414 ssm_->screenSessionMap_.insert(std::make_pair(1, screenSession));
1415 ssm_->GetAllScreenIds();
1416 EXPECT_TRUE(1);
1417 }
1418
1419 /**
1420 * @tc.name: GetAllScreenInfos
1421 * @tc.desc: GetAllScreenInfos test
1422 * @tc.type: FUNC
1423 */
1424 HWTEST_F(ScreenSessionManagerTest, GetAllScreenInfos, Function | SmallTest | Level3)
1425 {
1426 ScreenId id = 0;
1427 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1428 ssm_->screenSessionMap_[id] = screenSession;
1429 ASSERT_NE(nullptr, screenSession);
1430 std::vector<sptr<ScreenInfo>> screenInfos;
1431 EXPECT_EQ(DMError::DM_OK, ssm_->GetAllScreenInfos(screenInfos));
1432 }
1433
1434 /**
1435 * @tc.name: GetScreenSupportedColorGamuts
1436 * @tc.desc: GetScreenSupportedColorGamuts test
1437 * @tc.type: FUNC
1438 */
1439 HWTEST_F(ScreenSessionManagerTest, GetScreenSupportedColorGamuts, Function | SmallTest | Level3)
1440 {
1441 std::vector<ScreenColorGamut> colorGamuts;
1442 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetScreenSupportedColorGamuts(SCREEN_ID_INVALID, colorGamuts));
1443 ScreenId id = 0;
1444 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1445 ssm_->screenSessionMap_[id] = screenSession;
1446 ASSERT_NE(nullptr, screenSession);
1447 EXPECT_EQ(ssm_->GetScreenSupportedColorGamuts(id, colorGamuts),
1448 screenSession->GetScreenSupportedColorGamuts(colorGamuts));
1449 }
1450
1451 /**
1452 * @tc.name: GetPixelFormat
1453 * @tc.desc: GetPixelFormat test
1454 * @tc.type: FUNC
1455 */
1456 HWTEST_F(ScreenSessionManagerTest, GetPixelFormat, Function | SmallTest | Level3)
1457 {
1458 GraphicPixelFormat pixelFormat;
1459 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetPixelFormat(SCREEN_ID_INVALID, pixelFormat));
1460 ScreenId id = 0;
1461 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1462 ssm_->screenSessionMap_[id] = screenSession;
1463 ASSERT_NE(nullptr, screenSession);
1464 EXPECT_EQ(ssm_->GetPixelFormat(id, pixelFormat), screenSession->GetPixelFormat(pixelFormat));
1465 }
1466
1467 /**
1468 * @tc.name: SetPixelFormat
1469 * @tc.desc: SetPixelFormat test
1470 * @tc.type: FUNC
1471 */
1472 HWTEST_F(ScreenSessionManagerTest, SetPixelFormat, Function | SmallTest | Level3)
1473 {
1474 GraphicPixelFormat pixelFormat = GraphicPixelFormat{GRAPHIC_PIXEL_FMT_CLUT8};
1475 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetPixelFormat(SCREEN_ID_INVALID, pixelFormat));
1476 ScreenId id = 0;
1477 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1478 ssm_->screenSessionMap_[id] = screenSession;
1479 ASSERT_NE(nullptr, screenSession);
1480 EXPECT_EQ(ssm_->SetPixelFormat(id, pixelFormat), screenSession->SetPixelFormat(pixelFormat));
1481 }
1482
1483 /**
1484 * @tc.name: GetSupportedHDRFormats
1485 * @tc.desc: GetSupportedHDRFormats test
1486 * @tc.type: FUNC
1487 */
1488 HWTEST_F(ScreenSessionManagerTest, GetSupportedHDRFormats, Function | SmallTest | Level3)
1489 {
1490 std::vector<ScreenHDRFormat> hdrFormats;
1491 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetSupportedHDRFormats(SCREEN_ID_INVALID, hdrFormats));
1492 ScreenId id = 0;
1493 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1494 ssm_->screenSessionMap_[id] = screenSession;
1495 ASSERT_NE(nullptr, screenSession);
1496 EXPECT_EQ(ssm_->GetSupportedHDRFormats(id, hdrFormats), screenSession->GetSupportedHDRFormats(hdrFormats));
1497 }
1498
1499 /**
1500 * @tc.name: GetScreenHDRFormat
1501 * @tc.desc: GetScreenHDRFormat test
1502 * @tc.type: FUNC
1503 */
1504 HWTEST_F(ScreenSessionManagerTest, GetScreenHDRFormat, Function | SmallTest | Level3)
1505 {
1506 ScreenHDRFormat hdrFormat;
1507 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetScreenHDRFormat(SCREEN_ID_INVALID, hdrFormat));
1508 ScreenId id = 0;
1509 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1510 ssm_->screenSessionMap_[id] = screenSession;
1511 ASSERT_NE(nullptr, screenSession);
1512 EXPECT_EQ(ssm_->GetScreenHDRFormat(id, hdrFormat), screenSession->GetScreenHDRFormat(hdrFormat));
1513 }
1514
1515 /**
1516 * @tc.name: SetScreenHDRFormat
1517 * @tc.desc: SetScreenHDRFormat test
1518 * @tc.type: FUNC
1519 */
1520 HWTEST_F(ScreenSessionManagerTest, SetScreenHDRFormat, Function | SmallTest | Level3)
1521 {
1522 int32_t modeIdx {0};
1523 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetScreenHDRFormat(SCREEN_ID_INVALID, modeIdx));
1524 ScreenId id = 0;
1525 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1526 ssm_->screenSessionMap_[id] = screenSession;
1527 ASSERT_NE(nullptr, screenSession);
1528 EXPECT_EQ(ssm_->SetScreenHDRFormat(id, modeIdx), screenSession->SetScreenHDRFormat(modeIdx));
1529 }
1530
1531 /**
1532 * @tc.name: GetSupportedColorSpaces
1533 * @tc.desc: GetSupportedColorSpaces test
1534 * @tc.type: FUNC
1535 */
1536 HWTEST_F(ScreenSessionManagerTest, GetSupportedColorSpaces, Function | SmallTest | Level3)
1537 {
1538 std::vector<GraphicCM_ColorSpaceType> colorSpaces;
1539 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetSupportedColorSpaces(SCREEN_ID_INVALID, colorSpaces));
1540 ScreenId id = 0;
1541 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1542 ssm_->screenSessionMap_[id] = screenSession;
1543 ASSERT_NE(nullptr, screenSession);
1544 EXPECT_EQ(ssm_->GetSupportedColorSpaces(id, colorSpaces), screenSession->GetSupportedColorSpaces(colorSpaces));
1545 }
1546
1547 /**
1548 * @tc.name: GetScreenColorSpace
1549 * @tc.desc: GetScreenColorSpace test
1550 * @tc.type: FUNC
1551 */
1552 HWTEST_F(ScreenSessionManagerTest, GetScreenColorSpace, Function | SmallTest | Level3)
1553 {
1554 GraphicCM_ColorSpaceType colorSpace;
1555 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->GetScreenColorSpace(SCREEN_ID_INVALID, colorSpace));
1556 ScreenId id = 0;
1557 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1558 ssm_->screenSessionMap_[id] = screenSession;
1559 ASSERT_NE(nullptr, screenSession);
1560 EXPECT_EQ(ssm_->GetScreenColorSpace(id, colorSpace), screenSession->GetScreenColorSpace(colorSpace));
1561 }
1562
1563 /**
1564 * @tc.name: SetScreenColorSpace
1565 * @tc.desc: SetScreenColorSpace test
1566 * @tc.type: FUNC
1567 */
1568 HWTEST_F(ScreenSessionManagerTest, SetScreenColorSpace, Function | SmallTest | Level3)
1569 {
1570 GraphicCM_ColorSpaceType colorSpace = GraphicCM_ColorSpaceType{GRAPHIC_CM_COLORSPACE_NONE};
1571 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetScreenColorSpace(SCREEN_ID_INVALID, colorSpace));
1572 ScreenId id = 0;
1573 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1574 ssm_->screenSessionMap_[id] = screenSession;
1575 ASSERT_NE(nullptr, screenSession);
1576 EXPECT_EQ(ssm_->SetScreenColorSpace(id, colorSpace), screenSession->SetScreenColorSpace(colorSpace));
1577 }
1578
1579 /**
1580 * @tc.name: HasPrivateWindow
1581 * @tc.desc: HasPrivateWindow test
1582 * @tc.type: FUNC
1583 */
1584 HWTEST_F(ScreenSessionManagerTest, HasPrivateWindow, Function | SmallTest | Level3)
1585 {
1586 bool hasPrivateWindow;
1587 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->HasPrivateWindow(SCREEN_ID_INVALID, hasPrivateWindow));
1588 DisplayId id = 0;
1589 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1590 ssm_->screenSessionMap_[id] = screenSession;
1591 ASSERT_NE(nullptr, screenSession);
1592 EXPECT_EQ(DMError::DM_OK, ssm_->HasPrivateWindow(id, hasPrivateWindow));
1593 }
1594
1595 /**
1596 * @tc.name: GetAvailableArea
1597 * @tc.desc: GetAvailableArea test
1598 * @tc.type: FUNC
1599 */
1600 HWTEST_F(ScreenSessionManagerTest, GetAvailableArea, Function | SmallTest | Level3)
1601 {
1602 DMRect area;
1603 EXPECT_EQ(DMError::DM_ERROR_NULLPTR, ssm_->GetAvailableArea(SCREEN_ID_INVALID, area));
1604 DisplayId id = 0;
1605 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1606 ssm_->screenSessionMap_[id] = screenSession;
1607 ASSERT_NE(nullptr, screenSession);
1608 EXPECT_EQ(DMError::DM_OK, ssm_->GetAvailableArea(id, area));
1609 }
1610
1611 /**
1612 * @tc.name: ResetAllFreezeStatus
1613 * @tc.desc: ResetAllFreezeStatus test
1614 * @tc.type: FUNC
1615 */
1616 HWTEST_F(ScreenSessionManagerTest, ResetAllFreezeStatus, Function | SmallTest | Level3)
1617 {
1618 EXPECT_EQ(DMError::DM_OK, ssm_->ResetAllFreezeStatus());
1619 }
1620
1621 /**
1622 * @tc.name: SetVirtualScreenRefreshRate
1623 * @tc.desc: SetVirtualScreenRefreshRate test
1624 * @tc.type: FUNC
1625 */
1626 HWTEST_F(ScreenSessionManagerTest, SetVirtualScreenRefreshRate, Function | SmallTest | Level3)
1627 {
1628 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1629 ScreenId id = 0;
1630 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(id, ScreenProperty(), 0);
1631 ssm_->screenSessionMap_[id] = screenSession;
1632 uint32_t refreshInterval {2};
1633 VirtualScreenOption virtualOption;
1634 virtualOption.name_ = "createVirtualOption";
1635 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1636 if (screenId != VIRTUAL_SCREEN_ID) {
1637 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1638 }
1639 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetVirtualScreenRefreshRate(id, refreshInterval));
1640 EXPECT_EQ(DMError::DM_OK, ssm_->SetVirtualScreenRefreshRate(screenId, refreshInterval));
1641 uint32_t invalidRefreshInterval {0};
1642 EXPECT_EQ(DMError::DM_ERROR_INVALID_PARAM, ssm_->SetVirtualScreenRefreshRate(screenId, invalidRefreshInterval));
1643 ssm_->DestroyVirtualScreen(screenId);
1644 }
1645
1646 /**
1647 * @tc.name: SetVirtualScreenFlag
1648 * @tc.desc: SetVirtualScreenFlag test
1649 * @tc.type: FUNC
1650 */
1651 HWTEST_F(ScreenSessionManagerTest, SetVirtualScreenFlag, Function | SmallTest | Level3)
1652 {
1653 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1654 VirtualScreenFlag screenFlag = VirtualScreenFlag::DEFAULT;
1655 VirtualScreenOption virtualOption;
1656 virtualOption.name_ = "createVirtualOption";
1657 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1658 if (screenId != VIRTUAL_SCREEN_ID) {
1659 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1660 }
1661 EXPECT_EQ(DMError::DM_OK, ssm_->SetVirtualScreenFlag(screenId, screenFlag));
1662 ssm_->DestroyVirtualScreen(screenId);
1663 }
1664
1665 /**
1666 * @tc.name: GetVirtualScreenFlag
1667 * @tc.desc: GetVirtualScreenFlag test
1668 * @tc.type: FUNC
1669 */
1670 HWTEST_F(ScreenSessionManagerTest, GetVirtualScreenFlag, Function | SmallTest | Level3)
1671 {
1672 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1673 VirtualScreenFlag screenFlag = VirtualScreenFlag::DEFAULT;
1674 VirtualScreenOption virtualOption;
1675 virtualOption.name_ = "createVirtualOption";
1676 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1677 EXPECT_EQ(DMError::DM_OK, ssm_->SetVirtualScreenFlag(screenId, screenFlag));
1678 EXPECT_EQ(screenFlag, ssm_->GetVirtualScreenFlag(screenId));
1679 ssm_->DestroyVirtualScreen(screenId);
1680 }
1681
1682 /**
1683 * @tc.name: ResizeVirtualScreen
1684 * @tc.desc: ResizeVirtualScreen test
1685 * @tc.type: FUNC
1686 */
1687 HWTEST_F(ScreenSessionManagerTest, ResizeVirtualScreen, Function | SmallTest | Level3)
1688 {
1689 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1690 VirtualScreenOption virtualOption;
1691 virtualOption.name_ = "createVirtualOption";
1692 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1693 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1694
1695 uint32_t width {100};
1696 uint32_t height {100};
1697 sptr<ScreenSession> screenSession = ssm_->GetScreenSession(screenId);
1698 if (screenSession->GetDisplayNode() != nullptr) {
1699 EXPECT_EQ(DMError::DM_OK, ssm_->ResizeVirtualScreen(screenId, width, height));
1700 }
1701 ssm_->DestroyVirtualScreen(screenId);
1702 }
1703
1704 /**
1705 * @tc.name: SetVirtualMirrorScreenScaleMode
1706 * @tc.desc: SetVirtualMirrorScreenScaleMode test
1707 * @tc.type: FUNC
1708 */
1709 HWTEST_F(ScreenSessionManagerTest, SetVirtualMirrorScreenScaleMode, Function | SmallTest | Level3)
1710 {
1711 sptr<IDisplayManagerAgent> displayManagerAgent = new DisplayManagerAgentDefault();
1712 VirtualScreenOption virtualOption;
1713 virtualOption.name_ = "createVirtualOption";
1714 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1715 if (screenId != VIRTUAL_SCREEN_ID) {
1716 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1717 }
1718 ScreenScaleMode scaleMode = ScreenScaleMode::FILL_MODE;
1719 EXPECT_EQ(DMError::DM_OK, ssm_->SetVirtualMirrorScreenScaleMode(screenId, scaleMode));
1720 ssm_->DestroyVirtualScreen(screenId);
1721 }
1722
1723 /**
1724 * @tc.name: StopMirror
1725 * @tc.desc: StopMirror test
1726 * @tc.type: FUNC
1727 */
1728 HWTEST_F(ScreenSessionManagerTest, StopMirror, Function | SmallTest | Level3)
1729 {
1730 std::vector<ScreenId> mirrorScreenIds {0, 1, 2, 3, 4, 5};
1731 EXPECT_EQ(DMError::DM_OK, ssm_->StopMirror(mirrorScreenIds));
1732 }
1733
1734 /**
1735 * @tc.name: GetDensityInCurResolution
1736 * @tc.desc: GetDensityInCurResolution screen power
1737 * @tc.type: FUNC
1738 */
1739 HWTEST_F(ScreenSessionManagerTest, GetDensityInCurResolution, Function | SmallTest | Level3)
1740 {
1741 sptr<ScreenSession> screenSession = new ScreenSession();
1742 ASSERT_NE(nullptr, screenSession);
1743 ssm_->screenSessionMap_.insert(std::make_pair(1, screenSession));
1744 ScreenId screenId = 100;
1745 float x = 3.14;
1746 auto res = ssm_->GetDensityInCurResolution(screenId, x);
1747 EXPECT_EQ(DMError::DM_ERROR_NULLPTR, res);
1748 screenId = 1;
1749 res = ssm_->GetDensityInCurResolution(screenId, x);
1750 EXPECT_EQ(DMError::DM_OK, res);
1751 }
1752
1753 /**
1754 * @tc.name: SetScreenOffDelayTime
1755 * @tc.desc: SetScreenOffDelayTime test
1756 * @tc.type: FUNC
1757 */
1758 HWTEST_F(ScreenSessionManagerTest, SetScreenOffDelayTime, Function | SmallTest | Level3)
1759 {
1760 int32_t delay = CV_WAIT_SCREENOFF_MS - 1;
1761 int32_t ret = ssm_->SetScreenOffDelayTime(delay);
1762 EXPECT_EQ(ret, CV_WAIT_SCREENOFF_MS);
1763
1764 delay = CV_WAIT_SCREENOFF_MS + 1;
1765 ret = ssm_->SetScreenOffDelayTime(delay);
1766 EXPECT_EQ(ret, delay);
1767
1768 delay = CV_WAIT_SCREENOFF_MS_MAX - 1;
1769 ret = ssm_->SetScreenOffDelayTime(delay);
1770 EXPECT_EQ(ret, delay);
1771
1772 delay = CV_WAIT_SCREENOFF_MS_MAX + 1;
1773 ret = ssm_->SetScreenOffDelayTime(delay);
1774 EXPECT_EQ(ret, CV_WAIT_SCREENOFF_MS_MAX);
1775 }
1776
1777 /**
1778 * @tc.name: GetDeviceScreenConfig
1779 * @tc.desc: GetDeviceScreenConfig test
1780 * @tc.type: FUNC
1781 */
1782 HWTEST_F(ScreenSessionManagerTest, GetDeviceScreenConfig, Function | SmallTest | Level3)
1783 {
1784 DeviceScreenConfig deviceScreenConfig = ssm_->GetDeviceScreenConfig();
1785 EXPECT_FALSE(deviceScreenConfig.rotationPolicy_.empty());
1786 }
1787
1788 /**
1789 * @tc.name: SetVirtualScreenBlackList
1790 * @tc.desc: SetVirtualScreenBlackList test
1791 * @tc.type: FUNC
1792 */
1793 HWTEST_F(ScreenSessionManagerTest, SetVirtualScreenBlackList01, Function | SmallTest | Level3)
1794 {
1795 sptr<IDisplayManagerAgent> displayManagerAgent = new(std::nothrow) DisplayManagerAgentDefault();
1796 EXPECT_NE(displayManagerAgent, nullptr);
1797
1798 DisplayManagerAgentType type = DisplayManagerAgentType::SCREEN_EVENT_LISTENER;
1799 EXPECT_EQ(DMError::DM_OK, ssm_->RegisterDisplayManagerAgent(displayManagerAgent, type));
1800
1801 VirtualScreenOption virtualOption;
1802 virtualOption.name_ = "createVirtualOption";
1803 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
1804 if (screenId != VIRTUAL_SCREEN_ID) {
1805 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
1806 }
1807 std::vector<uint64_t> windowId = {10, 20, 30};
1808 ssm_->SetVirtualScreenBlackList(screenId, windowId);
1809 ssm_->DestroyVirtualScreen(screenId);
1810 }
1811
1812 /**
1813 * @tc.name: SetVirtualScreenBlackList
1814 * @tc.desc: ConvertScreenIdToRsScreenId = false
1815 * @tc.type: FUNC
1816 */
1817 HWTEST_F(ScreenSessionManagerTest, SetVirtualScreenBlackList02, Function | SmallTest | Level3)
1818 {
1819 ScreenId screenId = 1010;
1820 ScreenId rsScreenId = SCREEN_ID_INVALID;
1821 ASSERT_FALSE(ssm_->ConvertScreenIdToRsScreenId(screenId, rsScreenId));
1822 std::vector<uint64_t> windowId = {10, 20, 30};
1823 ssm_->SetVirtualScreenBlackList(screenId, windowId);
1824 }
1825
1826 /**
1827 * @tc.name: GetAllDisplayPhysicalResolution
1828 * @tc.desc: GetAllDisplayPhysicalResolution test
1829 * @tc.type: FUNC
1830 */
1831 HWTEST_F(ScreenSessionManagerTest, GetAllDisplayPhysicalResolution, Function | SmallTest | Level3)
1832 {
1833 std::vector<DisplayPhysicalResolution> allSize {};
1834 if (ssm_ != nullptr) {
1835 allSize = ssm_->GetAllDisplayPhysicalResolution();
1836 ASSERT_TRUE(!allSize.empty());
1837 } else {
1838 ASSERT_TRUE(allSize.empty());
1839 }
1840 }
1841
1842 /**
1843 * @tc.name: SetDisplayScale
1844 * @tc.desc: SetDisplayScale test
1845 * @tc.type: FUNC
1846 */
1847 HWTEST_F(ScreenSessionManagerTest, SetDisplayScale, Function | SmallTest | Level3)
1848 {
1849 ASSERT_NE(ssm_, nullptr);
1850 ScreenId fakeScreenId = static_cast<ScreenId>(-1);
1851 float scaleX = 1.0f;
1852 float scaleY = 1.0f;
1853 float pivotX = 0.5f;
1854 float pivotY = 0.5f;
1855 ssm_->SetDisplayScale(fakeScreenId, scaleX, scaleY, pivotX, pivotY);
1856 ssm_->SetDisplayScale(ssm_->GetDefaultScreenId(), scaleX, scaleY, pivotX, pivotY);
1857 }
1858
1859 /**
1860 * @tc.name: ScreenCastConnection
1861 * @tc.desc: ScreenCastConnection test
1862 * @tc.type: FUNC
1863 */
1864 HWTEST_F(ScreenSessionManagerTest, ScreenCastConnection, Function | SmallTest | Level3)
1865 {
1866 std::string castBundleName = "testCastBundleName";
1867 std::string castAbilityName = "testCastAbilityName";
1868
1869 ScreenCastConnection::GetInstance().SetBundleName("");
1870 ScreenCastConnection::GetInstance().SetAbilityName("");
1871 EXPECT_EQ(ScreenCastConnection::GetInstance().GetBundleName(), "");
1872 EXPECT_EQ(ScreenCastConnection::GetInstance().GetAbilityName(), "");
1873
1874 EXPECT_EQ(ScreenCastConnection::GetInstance().CastConnectExtension(1), false);
1875
1876 ScreenCastConnection::GetInstance().SetBundleName(castBundleName);
1877 ScreenCastConnection::GetInstance().SetAbilityName(castAbilityName);
1878 EXPECT_EQ(ScreenCastConnection::GetInstance().GetBundleName(), castBundleName);
1879 EXPECT_EQ(ScreenCastConnection::GetInstance().GetAbilityName(), castAbilityName);
1880
1881 MessageParcel data;
1882 MessageParcel reply;
1883 ScreenCastConnection::GetInstance().SendMessageToCastService(CAST_WIRED_PROJECTION_START, data, reply);
1884 ScreenCastConnection::GetInstance().SendMessageToCastService(CAST_WIRED_PROJECTION_STOP, data, reply);
1885 ScreenCastConnection::GetInstance().CastDisconnectExtension();
1886 EXPECT_EQ(ScreenCastConnection::GetInstance().IsConnectedSync(), false);
1887 }
1888
1889 /**
1890 * @tc.name: ReportFoldStatusToScb
1891 * @tc.desc: clientProxy_ = nullptr
1892 * @tc.type: FUNC
1893 */
1894 HWTEST_F(ScreenSessionManagerTest, ReportFoldStatusToScb, Function | SmallTest | Level3)
1895 {
1896 ssm_->clientProxy_ = nullptr;
1897 FoldStatus currentStatus = FoldStatus::FOLDED;
1898 FoldStatus nextStatus = FoldStatus::HALF_FOLD;
1899 int32_t duration = 1;
1900 float postureAngle = 1.2;
1901 std::vector<std::string> screenFoldInfo {std::to_string(static_cast<int32_t>(currentStatus)),
1902 std::to_string(static_cast<int32_t>(nextStatus)), std::to_string(duration), std::to_string(postureAngle)};
1903 ssm_->ReportFoldStatusToScb(screenFoldInfo);
1904 ASSERT_NE(ssm_, nullptr);
1905 }
1906
1907 /**
1908 * @tc.name: DisablePowerOffRenderControl
1909 * @tc.desc: ConvertScreenIdToRsScreenId = true
1910 * @tc.type: FUNC
1911 */
1912 HWTEST_F(ScreenSessionManagerTest, DisablePowerOffRenderControl01, Function | SmallTest | Level3)
1913 {
1914 ScreenId screenId = 1050;
1915 ScreenId rsScreenId = SCREEN_ID_INVALID;
1916 ScreenId rsScreenId1 = 1060;
1917 ssm_->screenIdManager_.sms2RsScreenIdMap_[screenId] = rsScreenId1;
1918 ASSERT_TRUE(ssm_->ConvertScreenIdToRsScreenId(screenId, rsScreenId));
1919 ssm_->DisablePowerOffRenderControl(screenId);
1920 }
1921
1922 /**
1923 * @tc.name: DisablePowerOffRenderControl
1924 * @tc.desc: ConvertScreenIdToRsScreenId = false
1925 * @tc.type: FUNC
1926 */
1927 HWTEST_F(ScreenSessionManagerTest, DisablePowerOffRenderControl02, Function | SmallTest | Level3)
1928 {
1929 ScreenId screenId = 1010;
1930 ScreenId rsScreenId = SCREEN_ID_INVALID;
1931 ASSERT_FALSE(ssm_->ConvertScreenIdToRsScreenId(screenId, rsScreenId));
1932 ssm_->DisablePowerOffRenderControl(screenId);
1933 }
1934
1935 /**
1936 * @tc.name: CheckAndSendHiSysEvent
1937 * @tc.desc: eventName != "CREATE_VIRTUAL_SCREEN"
1938 * @tc.type: FUNC
1939 */
1940 HWTEST_F(ScreenSessionManagerTest, CheckAndSendHiSysEvent, Function | SmallTest | Level3)
1941 {
1942 std::string eventName = "GET_DISPLAY_SNAPSHOT";
1943 std::string bundleName = "hmos.screenshot";
1944 ssm_->CheckAndSendHiSysEvent(eventName, bundleName);
1945 ASSERT_NE(ssm_, nullptr);
1946 }
1947
1948 /**
1949 * @tc.name: NotifyFoldToExpandCompletion
1950 * @tc.desc: NotifyFoldToExpandCompletion
1951 * @tc.type: FUNC
1952 */
1953 HWTEST_F(ScreenSessionManagerTest, NotifyFoldToExpandCompletion, Function | SmallTest | Level3)
1954 {
1955 bool foldToExpand = false;
1956 ssm_->NotifyFoldToExpandCompletion(foldToExpand);
1957
1958 foldToExpand = true;
1959 ssm_->NotifyFoldToExpandCompletion(foldToExpand);
1960 ASSERT_NE(ssm_, nullptr);
1961 }
1962
1963 /**
1964 * @tc.name: UpdateAvailableArea
1965 * @tc.desc: screenSession == nullptr
1966 * @tc.type: FUNC
1967 */
1968 HWTEST_F(ScreenSessionManagerTest, UpdateAvailableArea01, Function | SmallTest | Level3)
1969 {
1970 ScreenId screenId = 1050;
1971 DMRect area = DMRect{};
1972 ssm_->UpdateAvailableArea(screenId, area);
1973 ASSERT_NE(ssm_, nullptr);
1974 }
1975
1976 /**
1977 * @tc.name: UpdateAvailableArea
1978 * @tc.desc: screenSession != nullptr screenSession->UpdateAvailableArea(area) is true
1979 * @tc.type: FUNC
1980 */
1981 HWTEST_F(ScreenSessionManagerTest, UpdateAvailableArea02, Function | SmallTest | Level3)
1982 {
1983 ScreenId screenId = 1050;
1984 DMRect area{0, 0, 600, 900};
1985 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0);
1986 ASSERT_NE(screenSession, nullptr);
1987 ssm_->screenSessionMap_[screenId] = screenSession;
1988 auto screenSession1 = ssm_->GetScreenSession(screenId);
1989 ASSERT_EQ(screenSession1, screenSession);
1990 ASSERT_TRUE(screenSession->UpdateAvailableArea(area));
1991 ssm_->UpdateAvailableArea(screenId, area);
1992 }
1993
1994 /**
1995 * @tc.name: UpdateAvailableArea
1996 * @tc.desc: screenSession != nullptr screenSession->UpdateAvailableArea(area) is false
1997 * @tc.type: FUNC
1998 */
1999 HWTEST_F(ScreenSessionManagerTest, UpdateAvailableArea03, Function | SmallTest | Level3)
2000 {
2001 ScreenId screenId = 1050;
2002 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0);
2003 ASSERT_NE(screenSession, nullptr);
2004 DMRect area = screenSession->GetAvailableArea();
2005 ssm_->screenSessionMap_[screenId] = screenSession;
2006 ASSERT_FALSE(screenSession->UpdateAvailableArea(area));
2007 ssm_->UpdateAvailableArea(screenId, area);
2008 }
2009
2010 /**
2011 * @tc.name: NotifyAvailableAreaChanged
2012 * @tc.desc: agents.empty()
2013 * @tc.type: FUNC
2014 */
2015 HWTEST_F(ScreenSessionManagerTest, NotifyAvailableAreaChanged01, Function | SmallTest | Level3)
2016 {
2017 DMRect area = DMRect{};
2018 ASSERT_NE(ssm_, nullptr);
2019 ssm_->NotifyAvailableAreaChanged(area);
2020 }
2021
2022 /**
2023 * @tc.name: TriggerFoldStatusChange01
2024 * @tc.desc: test interface TriggerFoldStatusChange
2025 * @tc.type: FUNC
2026 */
2027 HWTEST_F(ScreenSessionManagerTest, TriggerFoldStatusChange01, Function | SmallTest | Level3)
2028 {
2029 if (!FoldScreenStateInternel::IsSecondaryDisplayFoldDevice()) {
2030 return;
2031 }
2032 ASSERT_NE(ssm_, nullptr);
2033 FoldStatus foldStatus = FoldStatus::EXPAND;
2034 ssm_->TriggerFoldStatusChange(foldStatus);
2035 FoldStatus res = ssm_->GetFoldStatus();
2036 EXPECT_EQ(res, foldStatus);
2037
2038 foldStatus = FoldStatus::FOLDED;
2039 ssm_->TriggerFoldStatusChange(foldStatus);
2040 res = ssm_->GetFoldStatus();
2041 EXPECT_EQ(res, foldStatus);
2042
2043 foldStatus = FoldStatus::HALF_FOLD;
2044 ssm_->TriggerFoldStatusChange(foldStatus);
2045 res = ssm_->GetFoldStatus();
2046 EXPECT_EQ(res, foldStatus);
2047
2048 foldStatus = FoldStatus::FOLD_STATE_EXPAND_WITH_SECOND_EXPAND;
2049 ssm_->TriggerFoldStatusChange(foldStatus);
2050 res = ssm_->GetFoldStatus();
2051 EXPECT_EQ(res, foldStatus);
2052
2053 foldStatus = FoldStatus::FOLD_STATE_EXPAND_WITH_SECOND_HALF_FOLDED;
2054 ssm_->TriggerFoldStatusChange(foldStatus);
2055 res = ssm_->GetFoldStatus();
2056 EXPECT_EQ(res, foldStatus);
2057
2058 foldStatus = FoldStatus::FOLD_STATE_FOLDED_WITH_SECOND_EXPAND;
2059 ssm_->TriggerFoldStatusChange(foldStatus);
2060 res = ssm_->GetFoldStatus();
2061 EXPECT_EQ(res, foldStatus);
2062
2063 foldStatus = FoldStatus::FOLD_STATE_FOLDED_WITH_SECOND_HALF_FOLDED;
2064 ssm_->TriggerFoldStatusChange(foldStatus);
2065 res = ssm_->GetFoldStatus();
2066 EXPECT_EQ(res, foldStatus);
2067
2068 foldStatus = FoldStatus::FOLD_STATE_HALF_FOLDED_WITH_SECOND_EXPAND;
2069 ssm_->TriggerFoldStatusChange(foldStatus);
2070 res = ssm_->GetFoldStatus();
2071 EXPECT_EQ(res, foldStatus);
2072
2073 foldStatus = FoldStatus::FOLD_STATE_HALF_FOLDED_WITH_SECOND_HALF_FOLDED;
2074 ssm_->TriggerFoldStatusChange(foldStatus);
2075 res = ssm_->GetFoldStatus();
2076 EXPECT_EQ(res, foldStatus);
2077 }
2078
2079 /**
2080 * @tc.name: NotifyFoldStatusChanged
2081 * @tc.desc: NotifyFoldStatusChanged
2082 * @tc.type: FUNC
2083 */
2084 HWTEST_F(ScreenSessionManagerTest, NotifyFoldStatusChanged02, Function | SmallTest | Level3)
2085 {
2086 std::string statusParam;
2087 auto ret = ssm_->NotifyFoldStatusChanged(statusParam);
2088 ASSERT_EQ(ret, -1);
2089
2090 statusParam = "-z"; // STATUS_FOLD_HALF
2091 ret = ssm_->NotifyFoldStatusChanged(statusParam);
2092 ASSERT_EQ(ret, 0);
2093
2094 statusParam = "-y"; // STATUS_EXPAND
2095 ret = ssm_->NotifyFoldStatusChanged(statusParam);
2096 ASSERT_EQ(ret, 0);
2097
2098 statusParam = "-coor"; // ARG_FOLD_DISPLAY_COOR
2099 ret = ssm_->NotifyFoldStatusChanged(statusParam);
2100
2101 if (!(ssm_->IsFoldable())) {
2102 ssm_->foldScreenController_ = new FoldScreenController(
2103 ssm_->displayInfoMutex_, ssm_->screenPowerTaskScheduler_);
2104 }
2105 ASSERT_NE(ssm_->foldScreenController_, nullptr);
2106 statusParam = "-y";
2107 ssm_->HandleFoldScreenPowerInit();
2108 ret = ssm_->NotifyFoldStatusChanged(statusParam);
2109 ASSERT_EQ(ret, 0);
2110 }
2111
2112 /**
2113 * @tc.name: Dump
2114 * @tc.desc: Dump
2115 * @tc.type: FUNC
2116 */
2117 HWTEST_F(ScreenSessionManagerTest, Dump, Function | SmallTest | Level3)
2118 {
2119 int fd = 2;
2120 std::vector<std::u16string> args;
2121 int ret = ssm_->Dump(fd, args);
2122 ASSERT_EQ(ret, 0);
2123 }
2124
2125 /**
2126 * @tc.name: GetDisplayNode
2127 * @tc.desc: GetDisplayNode
2128 * @tc.type: FUNC
2129 */
2130 HWTEST_F(ScreenSessionManagerTest, GetDisplayNode01, Function | SmallTest | Level3)
2131 {
2132 ScreenId screenId = 1051;
2133 auto ret = ssm_->GetDisplayNode(screenId);
2134 ASSERT_EQ(ret, nullptr);
2135 }
2136
2137 /**
2138 * @tc.name: GetDisplayNode
2139 * @tc.desc: !screenSession = false
2140 * @tc.type: FUNC
2141 */
2142 HWTEST_F(ScreenSessionManagerTest, GetDisplayNode02, Function | SmallTest | Level3)
2143 {
2144 ScreenId screenId = 1050;
2145 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0);
2146 ASSERT_NE(screenSession, nullptr);
2147 ssm_->screenSessionMap_[screenId] = screenSession;
2148 auto ret = ssm_->GetDisplayNode(screenId);
2149 ASSERT_NE(ret, nullptr);
2150 }
2151
2152 /**
2153 * @tc.name: GetScreenProperty
2154 * @tc.desc: GetScreenProperty
2155 * @tc.type: FUNC
2156 */
2157 HWTEST_F(ScreenSessionManagerTest, GetScreenProperty01, Function | SmallTest | Level3)
2158 {
2159 ScreenId screenId = 2000;
2160 ASSERT_EQ(ssm_->GetScreenSession(screenId), nullptr);
2161 auto ret = ssm_->GetScreenProperty(screenId);
2162 ASSERT_EQ(sizeof(ret), sizeof(ScreenProperty));
2163 }
2164
2165 /**
2166 * @tc.name: GetScreenProperty
2167 * @tc.desc: !screenSession = false
2168 * @tc.type: FUNC
2169 */
2170 HWTEST_F(ScreenSessionManagerTest, GetScreenProperty02, Function | SmallTest | Level3)
2171 {
2172 ScreenId screenId = 1050;
2173 sptr<ScreenSession> screenSession = new (std::nothrow) ScreenSession(screenId, ScreenProperty(), 0);
2174 ASSERT_NE(screenSession, nullptr);
2175 ScreenProperty property = ssm_->GetScreenProperty(screenId);
2176 ASSERT_EQ(sizeof(property), sizeof(screenSession->property_));
2177 }
2178
2179 /**
2180 * @tc.name: GetCurrentScreenPhyBounds
2181 * @tc.desc: GetCurrentScreenPhyBounds
2182 * @tc.type: FUNC
2183 */
2184 HWTEST_F(ScreenSessionManagerTest, GetCurrentScreenPhyBounds01, Function | SmallTest | Level3)
2185 {
2186 float phyWidth = 0.0f;
2187 float phyHeight = 0.0f;
2188 bool isReset = true;
2189 ScreenId screenId = 1050;
2190 ssm_->GetCurrentScreenPhyBounds(phyWidth, phyHeight, isReset, screenId);
2191 if (!(ssm_->IsFoldable())) {
2192 ssm_->foldScreenController_ = new FoldScreenController(
2193 ssm_->displayInfoMutex_, ssm_->screenPowerTaskScheduler_);
2194 }
2195
2196 ASSERT_NE(ssm_->foldScreenController_, nullptr);
2197 ssm_->GetCurrentScreenPhyBounds(phyWidth, phyHeight, isReset, screenId);
2198 ASSERT_FALSE(isReset);
2199 }
2200
2201 /**
2202 * @tc.name: PhyMirrorConnectWakeupScreen
2203 * @tc.desc: PhyMirrorConnectWakeupScreen test
2204 * @tc.type: FUNC
2205 */
2206 HWTEST_F(ScreenSessionManagerTest, PhyMirrorConnectWakeupScreen, Function | SmallTest | Level3)
2207 {
2208 ASSERT_NE(ssm_, nullptr);
2209 ssm_->PhyMirrorConnectWakeupScreen();
2210 ScreenSceneConfig::stringConfig_["externalScreenDefaultMode"] = "mirror";
2211 ssm_->PhyMirrorConnectWakeupScreen();
2212 }
2213
2214 /**
2215 * @tc.name: SetCoordinationFlag
2216 * @tc.desc: SetCoordinationFlag
2217 * @tc.type: FUNC
2218 */
2219 HWTEST_F(ScreenSessionManagerTest, SetCoordinationFlag, Function | SmallTest | Level3)
2220 {
2221 if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
2222 return;
2223 }
2224 ScreenSessionManager* ssm = new ScreenSessionManager();
2225 ASSERT_NE(ssm, nullptr);
2226 ASSERT_EQ(ssm->isCoordinationFlag_, false);
2227 ssm->SetCoordinationFlag(true);
2228 ASSERT_EQ(ssm->isCoordinationFlag_, true);
2229 }
2230
2231 /**
2232 * @tc.name: GetTentMode
2233 * @tc.desc: Test get tent mode
2234 * @tc.type: FUNC
2235 */
2236 HWTEST_F(ScreenSessionManagerTest, GetTentMode, Function | SmallTest | Level1)
2237 {
2238 auto tentMode = ssm_->GetTentMode();
2239 ASSERT_EQ(tentMode, false);
2240 }
2241
2242 /**
2243 * @tc.name: OnTentModeChanged
2244 * @tc.desc: Test change tent mode
2245 * @tc.type: FUNC
2246 */
2247 HWTEST_F(ScreenSessionManagerTest, OnTentModeChanged, Function | SmallTest | Level1)
2248 {
2249 bool isTentMode = false;
2250 ssm_->OnTentModeChanged(isTentMode);
2251 ASSERT_EQ(ssm_->GetTentMode(), false);
2252 }
2253
2254 /**
2255 * @tc.name: GetScreenCapture
2256 * @tc.desc: GetScreenCapture
2257 * @tc.type: FUNC
2258 */
2259 HWTEST_F(ScreenSessionManagerTest, GetScreenCapture, Function | SmallTest | Level3)
2260 {
2261 if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
2262 return;
2263 }
2264 ScreenSessionManager* ssm = new ScreenSessionManager();
2265 ASSERT_NE(ssm, nullptr);
2266 CaptureOption option;
2267 option.displayId_ = 0;
2268 DmErrorCode errCode;
2269 std::shared_ptr<Media::PixelMap> bitMap = ssm->GetScreenCapture(option, &errCode);
2270 ASSERT_EQ(bitMap, nullptr);
2271 }
2272
2273 /**
2274 * @tc.name: OnScreenCaptureNotify
2275 * @tc.desc: OnScreenCaptureNotify
2276 * @tc.type: FUNC
2277 */
2278 HWTEST_F(ScreenSessionManagerTest, OnScreenCaptureNotify, Function | SmallTest | Level3)
2279 {
2280 if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
2281 return;
2282 }
2283 ScreenSessionManager* ssm = new ScreenSessionManager();
2284 ASSERT_NE(ssm, nullptr);
2285 ScreenId screenId = 0;
2286 int32_t uid = 0;
2287 std::string clientName = "test";
2288 ssm->OnScreenCaptureNotify(screenId, uid, clientName);
2289 }
2290
2291 /**
2292 * @tc.name: GetDisplayCapability
2293 * @tc.desc: GetDisplayCapability test
2294 * @tc.type: FUNC
2295 */
2296 HWTEST_F(ScreenSessionManagerTest, GetDisplayCapability, Function | SmallTest | Level3)
2297 {
2298 std::string info {""};
2299 if (ssm_ != nullptr) {
2300 info = ssm_->GetDisplayCapability();
2301 ASSERT_NE(info, "");
2302 } else {
2303 ASSERT_EQ(info, "");
2304 }
2305 }
2306
2307 /**
2308 * @tc.name: GetSecondaryDisplayCapability
2309 * @tc.desc: GetSecondaryDisplayCapability test
2310 * @tc.type: FUNC
2311 */
2312 HWTEST_F(ScreenSessionManagerTest, GetSecondaryDisplayCapability, Function | SmallTest | Level3)
2313 {
2314 std::string info {""};
2315 if (ssm_ != nullptr) {
2316 info = ssm_->GetSecondaryDisplayCapability();
2317 ASSERT_NE(info, "");
2318 } else {
2319 ASSERT_EQ(info, "");
2320 }
2321 }
2322
2323 /**
2324 * @tc.name: GetSuperFoldCapability
2325 * @tc.desc: GetSuperFoldCapability test
2326 * @tc.type: FUNC
2327 */
2328 HWTEST_F(ScreenSessionManagerTest, GetSuperFoldCapability, Function | SmallTest | Level3)
2329 {
2330 std::string info {""};
2331 if (ssm_ != nullptr) {
2332 info = ssm_->GetSuperFoldCapability();
2333 ASSERT_NE(info, "");
2334 } else {
2335 ASSERT_EQ(info, "");
2336 }
2337 }
2338
2339 /**
2340 * @tc.name: GetFoldableDeviceCapability
2341 * @tc.desc: GetFoldableDeviceCapability test
2342 * @tc.type: FUNC
2343 */
2344 HWTEST_F(ScreenSessionManagerTest, GetFoldableDeviceCapability, Function | SmallTest | Level3)
2345 {
2346 std::string info {""};
2347 if (ssm_ != nullptr) {
2348 info = ssm_->GetFoldableDeviceCapability();
2349 ASSERT_NE(info, "");
2350 } else {
2351 ASSERT_EQ(info, "");
2352 }
2353 }
2354
2355 /**
2356 * @tc.name: SetScreenSkipProtectedWindow
2357 * @tc.desc: SetScreenSkipProtectedWindow test
2358 * @tc.type: FUNC
2359 */
2360 HWTEST_F(ScreenSessionManagerTest, SetScreenSkipProtectedWindow, Function | SmallTest | Level3)
2361 {
2362 ASSERT_NE(ssm_, nullptr);
2363 sptr<IDisplayManagerAgent> displayManagerAgent = new(std::nothrow) DisplayManagerAgentDefault();
2364 ASSERT_NE(displayManagerAgent, nullptr);
2365 VirtualScreenOption virtualOption;
2366 virtualOption.name_ = "createVirtualOption1";
2367 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
2368 if (screenId != VIRTUAL_SCREEN_ID) {
2369 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
2370 }
2371 const std::vector<ScreenId> screenIds = {screenId, 1002};
2372 bool isEnable = true;
2373 ASSERT_EQ(ssm_->SetScreenSkipProtectedWindow(screenIds, isEnable), DMError::DM_OK);
2374 isEnable = false;
2375 ASSERT_EQ(ssm_->SetScreenSkipProtectedWindow(screenIds, isEnable), DMError::DM_OK);
2376 }
2377
2378 /**
2379 * @tc.name: SetScreenSkipProtectedWindowInner
2380 * @tc.desc: SetScreenSkipProtectedWindowInner test
2381 * @tc.type: FUNC
2382 */
2383 HWTEST_F(ScreenSessionManagerTest, SetScreenSkipProtectedWindowInner, Function | SmallTest | Level3)
2384 {
2385 ASSERT_NE(ssm_, nullptr);
2386 sptr<IDisplayManagerAgent> displayManagerAgent = new(std::nothrow) DisplayManagerAgentDefault();
2387 ASSERT_NE(displayManagerAgent, nullptr);
2388 VirtualScreenOption virtualOption;
2389 virtualOption.name_ = "createVirtualOption1";
2390 auto screenId = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
2391 if (screenId != VIRTUAL_SCREEN_ID) {
2392 ASSERT_TRUE(screenId != VIRTUAL_SCREEN_ID);
2393 }
2394 virtualOption.name_ = "createVirtualOption2";
2395 auto screenId2 = ssm_->CreateVirtualScreen(virtualOption, displayManagerAgent->AsObject());
2396 if (screenId2 != VIRTUAL_SCREEN_ID) {
2397 ASSERT_TRUE(screenId2 != VIRTUAL_SCREEN_ID);
2398 }
2399 auto screenSession = ssm_->GetScreenSession(screenId);
2400 screenSession->SetShareProtect(true);
2401 ssm_->SetScreenSkipProtectedWindowInner();
2402 }
2403 }
2404 } // namespace Rosen
2405 } // namespace OHOS
2406