1 /*
2  * Copyright (c) 2022 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 #include <transaction/rs_transaction.h>
18 
19 #include "display_manager.h"
20 #include "iremote_object_mocker.h"
21 #include "mock_RSIWindowAnimationController.h"
22 #include "remote_animation.h"
23 #include "starting_window.h"
24 #include "window_helper.h"
25 #include "window_transition_info.h"
26 #include "scene_board_judgement.h"
27 using namespace testing;
28 using namespace testing::ext;
29 
30 namespace OHOS {
31 namespace Rosen {
32 class StartingWindowTest : public testing::Test {
33 public:
34     static void SetUpTestCase();
35     static void TearDownTestCase();
36     void SetUp() override;
37     void TearDown() override;
38 
39     sptr<WindowProperty> CreateWindowProperty();
40 private:
41     static sptr<WindowTransitionInfo> transitionInfo_;
42     RSSurfaceNode::SharedPtr CreateRSSurfaceNode();
43     std::shared_ptr<Media::PixelMap> ContructPixelMap();
44     static sptr<RSIWindowAnimationController> animationController_;
45     sptr<WindowNode> node_;
46     AnimationConfig animationConfig_;
47 };
48 
49 sptr<WindowTransitionInfo> StartingWindowTest::transitionInfo_ = nullptr;
50 sptr<RSIWindowAnimationController> StartingWindowTest::animationController_ = nullptr;
51 
SetUpTestCase()52 void StartingWindowTest::SetUpTestCase()
53 {
54 }
55 
TearDownTestCase()56 void StartingWindowTest::TearDownTestCase()
57 {
58 }
59 
SetUp()60 void StartingWindowTest::SetUp()
61 {
62     auto display = DisplayManager::GetInstance().GetDefaultDisplay();
63     ASSERT_TRUE((display != nullptr));
64     sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
65     ASSERT_TRUE((displayInfo != nullptr));
66     transitionInfo_ = new WindowTransitionInfo();
67     animationController_ = new RSIWindowAnimationControllerMocker();
68     ASSERT_EQ(WMError::WM_OK, RemoteAnimation::SetWindowAnimationController(animationController_));
69     transitionInfo_->supportWindowModes_ = {
70         AppExecFwk::SupportWindowMode::FULLSCREEN,
71         AppExecFwk::SupportWindowMode::SPLIT,
72         AppExecFwk::SupportWindowMode::FLOATING
73     };
74     node_ = StartingWindow::CreateWindowNode(transitionInfo_, 101); // 101 is windowId
75     node_->SetWindowRect({0, 0, 100, 100}); // 100 test data
76     StartingWindow::SetAnimationConfig(animationConfig_);
77     StartingWindow::transAnimateEnable_ = true;
78 }
79 
TearDown()80 void StartingWindowTest::TearDown()
81 {
82     transitionInfo_ = nullptr;
83     node_ = nullptr;
84 }
85 
ContructPixelMap()86 std::shared_ptr<Media::PixelMap> StartingWindowTest::ContructPixelMap()
87 {
88     Media::InitializationOptions opts;
89     opts.size.width = 200;  // 200: test width
90     opts.size.height = 300; // 300: test height
91     opts.pixelFormat = Media::PixelFormat::ARGB_8888;
92     opts.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
93     std::unique_ptr<Media::PixelMap> pixelMapPtr = Media::PixelMap::Create(opts);
94     return std::shared_ptr<Media::PixelMap>(pixelMapPtr.release());
95 }
96 
CreateRSSurfaceNode()97 RSSurfaceNode::SharedPtr StartingWindowTest::CreateRSSurfaceNode()
98 {
99     struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
100     rsSurfaceNodeConfig.SurfaceNodeName = "startingWindowTestSurfaceNode";
101     auto surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig);
102     return surfaceNode;
103 }
104 
CreateWindowProperty()105 sptr<WindowProperty> StartingWindowTest::CreateWindowProperty()
106 {
107     sptr<WindowProperty> property = new WindowProperty();
108     return property;
109 }
110 namespace {
111 /**
112  * @tc.name: NeedToStopStartingWindow01
113  * @tc.desc: stop starting window test without main App window
114  * @tc.type: FUNC
115  */
116 HWTEST_F(StartingWindowTest, NeedToStopStartingWindow01, Function | SmallTest | Level2)
117 {
118     transitionInfo_->SetWindowType(WindowType::WINDOW_TYPE_APP_SUB_WINDOW);
119     sptr<WindowNode> node = new WindowNode(CreateWindowProperty());
120     ASSERT_EQ(true, WindowHelper::CheckSupportWindowMode(node->GetWindowMode(),
121         node->GetWindowModeSupportType(), transitionInfo_));
122 }
123 
124 /**
125  * @tc.name: NeedToStopStartingWindow02
126  * @tc.desc: need to stop starting window test with unsupport mode
127  * @tc.type: FUNC
128  */
129 HWTEST_F(StartingWindowTest, NeedToStopStartingWindow02, Function | SmallTest | Level2)
130 {
131     sptr<WindowNode> node = new WindowNode(CreateWindowProperty());
132     node->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN);
133     node->SetWindowModeSupportType(WindowModeSupport::WINDOW_MODE_SUPPORT_FLOATING);
134     ASSERT_EQ(false, WindowHelper::CheckSupportWindowMode(node->GetWindowMode(),
135         node->GetWindowModeSupportType(), transitionInfo_));
136 }
137 
138 /**
139  * @tc.name: NeedToStopStartingWindow03
140  * @tc.desc: need to stop starting window test with support mode
141  * @tc.type: FUNC
142  */
143 HWTEST_F(StartingWindowTest, NeedToStopStartingWindow03, Function | SmallTest | Level2)
144 {
145     sptr<WindowNode> node = new WindowNode(CreateWindowProperty());
146     ASSERT_EQ(false, WindowHelper::CheckSupportWindowMode(node->GetWindowMode(),
147         node->GetWindowModeSupportType(), transitionInfo_));
148 }
149 
150 /**
151  * @tc.name: NeedToStopStartingWindow04
152  * @tc.desc: need to stop starting window test with support mode
153  * @tc.type: FUNC
154  */
155 HWTEST_F(StartingWindowTest, NeedToStopStartingWindow04, Function | SmallTest | Level2)
156 {
157     sptr<WindowNode> node = new WindowNode(CreateWindowProperty());
158     transitionInfo_->SetShowFlagWhenLocked(true);
159     node->SetWindowModeSupportType(WindowModeSupport::WINDOW_MODE_SUPPORT_SPLIT_PRIMARY |
160                                    WindowModeSupport::WINDOW_MODE_SUPPORT_SPLIT_SECONDARY);
161     ASSERT_EQ(false, WindowHelper::CheckSupportWindowMode(node->GetWindowMode(),
162         node->GetWindowModeSupportType(), transitionInfo_));
163 }
164 
165 /**
166  * @tc.name: CreateWindowNode01
167  * @tc.desc: create starting window node test
168  * @tc.type: FUNC
169  */
170 HWTEST_F(StartingWindowTest, CreateWindowNode01, Function | SmallTest | Level2)
171 {
172     sptr<WindowTransitionInfo> info = nullptr;
173     ASSERT_EQ(nullptr, StartingWindow::CreateWindowNode(info, 0));
174 }
175 
176 /**
177  * @tc.name: CreateWindowNode02
178  * @tc.desc: create starting window node test
179  * @tc.type: FUNC
180  */
181 HWTEST_F(StartingWindowTest, CreateWindowNode02, Function | SmallTest | Level2)
182 {
183     transitionInfo_->SetWindowMode(WindowMode::WINDOW_MODE_UNDEFINED);
184     sptr<WindowNode> node = StartingWindow::CreateWindowNode(transitionInfo_, 0);
185     ASSERT_NE(nullptr, node);
186     ASSERT_EQ(WindowMode::WINDOW_MODE_FULLSCREEN, node->GetWindowMode());
187 }
188 
189 /**
190  * @tc.name: CreateWindowNode03
191  * @tc.desc: create starting window node test
192  * @tc.type: FUNC
193  */
194 HWTEST_F(StartingWindowTest, CreateWindowNode03, Function | SmallTest | Level2)
195 {
196     transitionInfo_->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING);
197     sptr<WindowNode> node = StartingWindow::CreateWindowNode(transitionInfo_, 0);
198     ASSERT_NE(nullptr, node);
199     ASSERT_EQ(WindowMode::WINDOW_MODE_FLOATING, node->GetWindowMode());
200 }
201 
202 /**
203  * @tc.name: CreateWindowNode04
204  * @tc.desc: create starting window node test
205  * @tc.type: FUNC
206  */
207 HWTEST_F(StartingWindowTest, CreateWindowNode04, Function | SmallTest | Level2)
208 {
209     transitionInfo_->SetShowFlagWhenLocked(true);
210     sptr<WindowNode> node = StartingWindow::CreateWindowNode(transitionInfo_, 0);
211     ASSERT_NE(nullptr, node);
212 }
213 
214 /**
215  * @tc.name: DrawStartingWindow01
216  * @tc.desc: draw starting window node
217  * @tc.type: FUNC
218  */
219 HWTEST_F(StartingWindowTest, DrawStartingWindow01, Function | SmallTest | Level2)
220 {
221     std::shared_ptr<Media::PixelMap> pixelMap = ContructPixelMap();
222     sptr<WindowNode> node = nullptr;
223     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, StartingWindow::DrawStartingWindow(node, pixelMap, 0x00FFFFFF, true));
224     usleep(10000);
225 }
226 
227 /**
228  * @tc.name: DrawStartingWindow02
229  * @tc.desc: draw starting window node
230  * @tc.type: FUNC
231  */
232 HWTEST_F(StartingWindowTest, DrawStartingWindow02, Function | SmallTest | Level2)
233 {
234     node_->leashWinSurfaceNode_ = nullptr;
235     std::shared_ptr<Media::PixelMap> pixelMap = ContructPixelMap();
236     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, pixelMap, 0x00FFFFFF, true));
237     usleep(10000);
238 }
239 
240 /**
241  * @tc.name: DrawStartingWindow03
242  * @tc.desc: draw starting window node
243  * @tc.type: FUNC
244  */
245 HWTEST_F(StartingWindowTest, DrawStartingWindow03, Function | SmallTest | Level2)
246 {
247     std::shared_ptr<Media::PixelMap> pixelMap = ContructPixelMap();
248     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, pixelMap, 0x00FFFFFF, false));
249     usleep(10000);
250 }
251 
252 /**
253  * @tc.name: DrawStartingWindow04
254  * @tc.desc: draw starting window node
255  * @tc.type: FUNC
256  */
257 HWTEST_F(StartingWindowTest, DrawStartingWindow04, Function | SmallTest | Level2)
258 {
259     node_->startingWinSurfaceNode_ = nullptr;
260     std::shared_ptr<Media::PixelMap> pixelMap = ContructPixelMap();
261     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, StartingWindow::DrawStartingWindow(node_, pixelMap, 0x00FFFFFF, true));
262     usleep(10000);
263 }
264 
265 /**
266  * @tc.name: DrawStartingWindow05
267  * @tc.desc: draw starting window node
268  * @tc.type: FUNC
269  */
270 HWTEST_F(StartingWindowTest, DrawStartingWindow05, Function | SmallTest | Level2)
271 {
272     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x00FFFFFF, true));
273     usleep(10000);
274 }
275 
276 /**
277  * @tc.name: DrawStartingWindow06
278  * @tc.desc: draw starting window node
279  * @tc.type: FUNC
280  */
281 HWTEST_F(StartingWindowTest, DrawStartingWindow06, Function | SmallTest | Level2)
282 {
283     std::shared_ptr<Media::PixelMap> pixelMap = ContructPixelMap();
284     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, pixelMap, 0x00FFFFFF, true));
285     usleep(10000);
286 }
287 
288 /**
289  * @tc.name: HandleClientWindowCreateAndRelease01
290  * @tc.desc: handle client window create
291  * @tc.type: FUNC
292  */
293 HWTEST_F(StartingWindowTest, HandleClientWindowCreateAndRelease01, Function | SmallTest | Level2)
294 {
295     sptr<IRemoteObject> iRemoteObjectMocker = new IRemoteObjectMocker();
296     sptr<IWindow> iWindow = iface_cast<IWindow>(iRemoteObjectMocker);
297     ASSERT_NE(nullptr, iWindow);
298     uint32_t windowId = 0;
299     auto surfaceNode = CreateRSSurfaceNode();
300     ASSERT_NE(nullptr, surfaceNode);
301     sptr<WindowProperty> windowProperty = new WindowProperty();
302     StartingWindow::HandleClientWindowCreate(node_, iWindow, windowId, surfaceNode, windowProperty, 0, 0);
303     ASSERT_EQ(node_->GetWindowId(), windowId);
304     usleep(200000);
305     StartingWindow::transAnimateEnable_ = false;
306     StartingWindow::HandleClientWindowCreate(node_, iWindow, windowId, surfaceNode, windowProperty, 0, 0);
307     ASSERT_EQ(node_->GetWindowId(), windowId);
308     usleep(200000);
309     StartingWindow::ReleaseStartWinSurfaceNode(node_);
310 }
311 
312 /**
313  * @tc.name: HandleClientWindowCreate02
314  * @tc.desc: handle client window create
315  * @tc.type: FUNC
316  */
317 HWTEST_F(StartingWindowTest, HandleClientWindowCreate02, Function | SmallTest | Level2)
318 {
319     sptr<IRemoteObject> iRemoteObjectMocker = new IRemoteObjectMocker();
320     sptr<IWindow> iWindow = iface_cast<IWindow>(iRemoteObjectMocker);
321     ASSERT_NE(nullptr, iWindow);
322     uint32_t windowId = 0;
323     auto surfaceNode = CreateRSSurfaceNode();
324     ASSERT_NE(nullptr, surfaceNode);
325     sptr<WindowProperty> windowProperty = new WindowProperty();
326     sptr<WindowNode> node = nullptr;
327     StartingWindow::HandleClientWindowCreate(node, iWindow, windowId, surfaceNode, windowProperty, 0, 0);
328     usleep(200000);
329 }
330 
331 /**
332  * @tc.name: HandleClientWindowCreateAndRelease03
333  * @tc.desc: handle client window create and Release with null leashNode
334  * @tc.type: FUNC
335  */
336 HWTEST_F(StartingWindowTest, HandleClientWindowCreateAndRelease03, Function | SmallTest | Level2)
337 {
338     node_->leashWinSurfaceNode_ = nullptr;
339     uint32_t windowId = 0;
340     auto surfaceNode = CreateRSSurfaceNode();
341     ASSERT_NE(nullptr, surfaceNode);
342     sptr<WindowProperty> windowProperty = new WindowProperty();
343     sptr<IWindow> iWindow = nullptr;
344     StartingWindow::HandleClientWindowCreate(node_, iWindow, windowId, surfaceNode, windowProperty, 0, 0);
345     usleep(200000);
346     StartingWindow::ReleaseStartWinSurfaceNode(node_);
347 }
348 
349 /**
350  * @tc.name: AddNodeOnRSTree01
351  * @tc.desc: Add node on rs tree test with surfaceNode nullptr and hot start
352  * @tc.type: FUNC
353  */
354 HWTEST_F(StartingWindowTest, AddNodeOnRSTree01, Function | SmallTest | Level2)
355 {
356     sptr<RSIWindowAnimationController> testController = nullptr;
357     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, RemoteAnimation::SetWindowAnimationController(testController));
358     StartingWindow::AddNodeOnRSTree(node_, true);
359     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x66FFFFFF, false));
360     usleep(200000);
361 }
362 
363 /**
364  * @tc.name: AddNodeOnRSTree02
365  * @tc.desc: Add node on rs tree test with hot start and surfaceNode
366  * @tc.type: FUNC
367  */
368 HWTEST_F(StartingWindowTest, AddNodeOnRSTree02, Function | SmallTest | Level2)
369 {
370     auto surfaceNode = CreateRSSurfaceNode();
371     ASSERT_NE(nullptr, surfaceNode);
372     node_->surfaceNode_ = surfaceNode;
373     sptr<RSIWindowAnimationController> testController = nullptr;
374     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, RemoteAnimation::SetWindowAnimationController(testController));
375     StartingWindow::AddNodeOnRSTree(node_, true);
376     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x66FFFFFF, false));
377     usleep(200000);
378 }
379 
380 /**
381  * @tc.name: AddNodeOnRSTree03
382  * @tc.desc: Add node on rs tree test
383  * @tc.type: FUNC
384  */
385 HWTEST_F(StartingWindowTest, AddNodeOnRSTree03, Function | SmallTest | Level2)
386 {
387     auto surfaceNode = CreateRSSurfaceNode();
388     ASSERT_NE(nullptr, surfaceNode);
389     node_->surfaceNode_ = surfaceNode;
390     node_->leashWinSurfaceNode_ = nullptr;
391     sptr<RSIWindowAnimationController> testController = nullptr;
392     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, RemoteAnimation::SetWindowAnimationController(testController));
393     StartingWindow::AddNodeOnRSTree(node_, true);
394     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x66FFFFFF, false));
395     usleep(200000);
396 }
397 
398 /**
399  * @tc.name: AddNodeOnRSTree04
400  * @tc.desc: Add node on rs tree test with surfaceNode nullptr, with animation controller
401  * @tc.type: FUNC
402  */
403 HWTEST_F(StartingWindowTest, AddNodeOnRSTree04, Function | SmallTest | Level2)
404 {
405     sptr<RSIWindowAnimationController> testController = new RSIWindowAnimationControllerMocker();
406     ASSERT_EQ(WMError::WM_OK, RemoteAnimation::SetWindowAnimationController(testController));
407     StartingWindow::AddNodeOnRSTree(node_, true);
408     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x66FFFFFF, false));
409     usleep(200000);
410 }
411 
412 /**
413  * @tc.name: AddNodeOnRSTree05
414  * @tc.desc: Add node on rs tree test
415  * @tc.type: FUNC
416  */
417 HWTEST_F(StartingWindowTest, AddNodeOnRSTree05, Function | SmallTest | Level2)
418 {
419     auto surfaceNode = CreateRSSurfaceNode();
420     ASSERT_NE(nullptr, surfaceNode);
421     node_->surfaceNode_ = surfaceNode;
422     sptr<RSIWindowAnimationController> testController = new RSIWindowAnimationControllerMocker();
423     ASSERT_EQ(WMError::WM_OK, RemoteAnimation::SetWindowAnimationController(testController));
424     AnimationConfig config;
425     StartingWindow::AddNodeOnRSTree(node_, true);
426     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x66FFFFFF, false));
427     usleep(200000);
428 }
429 
430 /**
431  * @tc.name: AddNodeOnRSTree06
432  * @tc.desc: Add node on rs tree test
433  * @tc.type: FUNC
434  */
435 HWTEST_F(StartingWindowTest, AddNodeOnRSTree06, Function | SmallTest | Level2)
436 {
437     auto surfaceNode = CreateRSSurfaceNode();
438     ASSERT_NE(nullptr, surfaceNode);
439     node_->surfaceNode_ = surfaceNode;
440     node_->leashWinSurfaceNode_ = nullptr;
441     sptr<RSIWindowAnimationController> testController = new RSIWindowAnimationControllerMocker();
442     ASSERT_EQ(WMError::WM_OK, RemoteAnimation::SetWindowAnimationController(testController));
443     StartingWindow::AddNodeOnRSTree(node_, true);
444     ASSERT_EQ(WMError::WM_OK, StartingWindow::DrawStartingWindow(node_, nullptr, 0x66FFFFFF, false));
445     usleep(200000);
446 }
447 
448 /**
449  * @tc.name: SetStartingWindowAnimation
450  * @tc.desc: set starting window animation with different parameter
451  * @tc.type: FUNC
452  */
453 HWTEST_F(StartingWindowTest, SetStartingWindowAnimation01, Function | SmallTest | Level2)
454 {
455     sptr<WindowNode> windowNode = nullptr;
456     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, StartingWindow::SetStartingWindowAnimation(windowNode));
457 
458     ASSERT_EQ(WMError::WM_OK, StartingWindow::SetStartingWindowAnimation(node_));
459 
460     node_->leashWinSurfaceNode_ = nullptr;
461     ASSERT_EQ(WMError::WM_OK, StartingWindow::SetStartingWindowAnimation(node_));
462 
463     node_->startingWinSurfaceNode_ = nullptr;
464     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, StartingWindow::SetStartingWindowAnimation(node_));
465 }
466 
467 /**
468  * @tc.name: IsWindowFollowParent01
469  * @tc.desc: IsWindowFollowParent
470  * @tc.type: FUNC
471  */
472 HWTEST_F(StartingWindowTest, IsWindowFollowParent01, Function | SmallTest | Level2)
473 {
474     if (!SceneBoardJudgement::IsSceneBoardEnabled()) {
475         ASSERT_EQ(false, StartingWindow::IsWindowFollowParent(WindowType::WINDOW_TYPE_DIALOG));
476         ASSERT_EQ(true, StartingWindow::IsWindowFollowParent(WindowType::WINDOW_TYPE_APP_SUB_WINDOW));
477     } else {
478         ASSERT_EQ(true, StartingWindow::IsWindowFollowParent(WindowType::WINDOW_TYPE_DIALOG));
479         ASSERT_EQ(true, StartingWindow::IsWindowFollowParent(WindowType::WINDOW_TYPE_APP_SUB_WINDOW));
480     }
481     ASSERT_EQ(false, StartingWindow::IsWindowFollowParent(WindowType::WINDOW_TYPE_APP_COMPONENT));
482 }
483 
484 /**
485  * @tc.name: CreateLeashAndStartingSurfaceNode01
486  * @tc.desc: CreateLeashAndStartingSurfaceNode
487  * @tc.type: FUNC
488  */
489 HWTEST_F(StartingWindowTest, CreateLeashAndStartingSurfaceNode01, Function | SmallTest | Level2)
490 {
491     GTEST_LOG_(INFO) << "StartingWindow::CreateLeashAndStartingSurfaceNode01 start";
492     node_->leashWinSurfaceNode_ = nullptr;
493     ASSERT_EQ(WMError::WM_OK, StartingWindow::CreateLeashAndStartingSurfaceNode(node_));
494     usleep(10000);
495     GTEST_LOG_(INFO) << "StartingWindow::CreateLeashAndStartingSurfaceNode01 end";
496 }
497 
498 /**
499  * @tc.name: CreateLeashAndStartingSurfaceNode02
500  * @tc.desc: CreateLeashAndStartingSurfaceNode
501  * @tc.type: FUNC
502  */
503 HWTEST_F(StartingWindowTest, CreateLeashAndStartingSurfaceNode02, Function | SmallTest | Level2)
504 {
505     GTEST_LOG_(INFO) << "StartingWindow::CreateLeashAndStartingSurfaceNode02 start";
506     node_->startingWinSurfaceNode_ = nullptr;
507     ASSERT_EQ(WMError::WM_OK, StartingWindow::CreateLeashAndStartingSurfaceNode(node_));
508     usleep(10000);
509     GTEST_LOG_(INFO) << "StartingWindow::CreateLeashAndStartingSurfaceNode02 end";
510 }
511 
512 /**
513  * @tc.name: CreateLeashAndStartingSurfaceNode03
514  * @tc.desc: CreateLeashAndStartingSurfaceNode
515  * @tc.type: FUNC
516  */
517 HWTEST_F(StartingWindowTest, CreateLeashAndStartingSurfaceNode03, Function | SmallTest | Level2)
518 {
519     GTEST_LOG_(INFO) << "StartingWindow::CreateLeashAndStartingSurfaceNode03 start";
520     ASSERT_EQ(WMError::WM_OK, StartingWindow::CreateLeashAndStartingSurfaceNode(node_));
521     usleep(10000);
522     GTEST_LOG_(INFO) << "StartingWindow::CreateLeashAndStartingSurfaceNode03 end";
523 }
524 
525 /**
526  * @tc.name: SetDefaultWindowMode
527  * @tc.desc: SetDefaultWindowMode
528  * @tc.type: FUNC
529  */
530 HWTEST_F(StartingWindowTest, SetDefaultWindowMode, Function | SmallTest | Level2)
531 {
532     GTEST_LOG_(INFO) << "StartingWindow::SetDefaultWindowMode start";
533     WindowMode defaultMode = WindowMode::WINDOW_MODE_FULLSCREEN;
534     StartingWindow::SetDefaultWindowMode(defaultMode);
535     GTEST_LOG_(INFO) << "StartingWindow::SetDefaultWindowMode end";
536 }
537 
538 /**
539  * @tc.name: SetAnimationConfig
540  * @tc.desc: SetAnimationConfig
541  * @tc.type: FUNC
542  */
543 HWTEST_F(StartingWindowTest, SetAnimationConfig, Function | SmallTest | Level2)
544 {
545     GTEST_LOG_(INFO) << "StartingWindow::SetAnimationConfig start";
546     auto& animationConfig = WindowNodeContainer::GetAnimationConfigRef();
547     StartingWindow::SetAnimationConfig(animationConfig);
548     GTEST_LOG_(INFO) << "StartingWindow::SetAnimationConfig end";
549 }
550 }
551 }
552 }
553