• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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