1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License.
5e0dac50fSopenharmony_ci * You may obtain a copy of the License at
6e0dac50fSopenharmony_ci *
7e0dac50fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e0dac50fSopenharmony_ci *
9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and
13e0dac50fSopenharmony_ci * limitations under the License.
14e0dac50fSopenharmony_ci */
15e0dac50fSopenharmony_ci
16e0dac50fSopenharmony_ci#include <iremote_object.h>
17e0dac50fSopenharmony_ci#include <gtest/gtest.h>
18e0dac50fSopenharmony_ci#include "iremote_object_mocker.h"
19e0dac50fSopenharmony_ci#include "window_root.h"
20e0dac50fSopenharmony_ci#include "window_manager.h"
21e0dac50fSopenharmony_ci#include "window_manager_service.h"
22e0dac50fSopenharmony_ci#include "display_manager.h"
23e0dac50fSopenharmony_ci
24e0dac50fSopenharmony_ciusing namespace testing;
25e0dac50fSopenharmony_ciusing namespace testing::ext;
26e0dac50fSopenharmony_cinamespace OHOS {
27e0dac50fSopenharmony_cinamespace Rosen {
28e0dac50fSopenharmony_ci
29e0dac50fSopenharmony_ciclass WindowRootTest : public testing::Test {
30e0dac50fSopenharmony_cipublic:
31e0dac50fSopenharmony_ci    static void SetUpTestCase();
32e0dac50fSopenharmony_ci    static void TearDownTestCase();
33e0dac50fSopenharmony_ci    void SetUp() override;
34e0dac50fSopenharmony_ci    void TearDown() override;
35e0dac50fSopenharmony_ci    static sptr<WindowRoot> windowRoot_;
36e0dac50fSopenharmony_ci};
37e0dac50fSopenharmony_ci
38e0dac50fSopenharmony_cisptr<WindowRoot> WindowRootTest::windowRoot_ = nullptr;
39e0dac50fSopenharmony_ci
40e0dac50fSopenharmony_civoid WindowRootTest::SetUpTestCase()
41e0dac50fSopenharmony_ci{
42e0dac50fSopenharmony_ci}
43e0dac50fSopenharmony_ci
44e0dac50fSopenharmony_civoid WindowRootTest::TearDownTestCase()
45e0dac50fSopenharmony_ci{
46e0dac50fSopenharmony_ci}
47e0dac50fSopenharmony_ci
48e0dac50fSopenharmony_civoid WindowRootTest::SetUp()
49e0dac50fSopenharmony_ci{
50e0dac50fSopenharmony_ci    windowRoot_ = new WindowRoot(nullptr);
51e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
52e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
53e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
54e0dac50fSopenharmony_ci    ASSERT_TRUE((displayInfo != nullptr));
55e0dac50fSopenharmony_ci}
56e0dac50fSopenharmony_ci
57e0dac50fSopenharmony_civoid WindowRootTest::TearDown()
58e0dac50fSopenharmony_ci{
59e0dac50fSopenharmony_ci    windowRoot_ = nullptr;
60e0dac50fSopenharmony_ci}
61e0dac50fSopenharmony_ci
62e0dac50fSopenharmony_cinamespace {
63e0dac50fSopenharmony_ci/**
64e0dac50fSopenharmony_ci * @tc.name: WindowRootTest01
65e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetTotalWindowNum
66e0dac50fSopenharmony_ci * @tc.type: FUNC
67e0dac50fSopenharmony_ci */
68e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest01, Function | SmallTest | Level2)
69e0dac50fSopenharmony_ci{
70e0dac50fSopenharmony_ci    uint32_t size = windowRoot_->GetTotalWindowNum();
71e0dac50fSopenharmony_ci    ASSERT_EQ(size, 0);
72e0dac50fSopenharmony_ci}
73e0dac50fSopenharmony_ci
74e0dac50fSopenharmony_ci/**
75e0dac50fSopenharmony_ci * @tc.name: WindowRootTest02
76e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetWindowForDumpAceHelpInfo
77e0dac50fSopenharmony_ci * @tc.type: FUNC
78e0dac50fSopenharmony_ci */
79e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest02, Function | SmallTest | Level2)
80e0dac50fSopenharmony_ci{
81e0dac50fSopenharmony_ci    windowRoot_->GetWindowForDumpAceHelpInfo();
82e0dac50fSopenharmony_ci    sptr<WindowProperty> property = new WindowProperty();
83e0dac50fSopenharmony_ci    property->SetWindowType(WindowType::WINDOW_TYPE_DESKTOP);
84e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode;
85e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode);
86e0dac50fSopenharmony_ci    windowNode = new WindowNode(property);
87e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode);
88e0dac50fSopenharmony_ci    sptr<WindowNode> node = windowRoot_->GetWindowForDumpAceHelpInfo();
89e0dac50fSopenharmony_ci    ASSERT_NE(node, nullptr);
90e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode);
91e0dac50fSopenharmony_ci
92e0dac50fSopenharmony_ci    property = new WindowProperty();
93e0dac50fSopenharmony_ci    property->SetWindowType(WindowType::WINDOW_TYPE_NAVIGATION_BAR);
94e0dac50fSopenharmony_ci    windowNode = new WindowNode(property);
95e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode);
96e0dac50fSopenharmony_ci    node = windowRoot_->GetWindowForDumpAceHelpInfo();
97e0dac50fSopenharmony_ci    ASSERT_NE(node, nullptr);
98e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode);
99e0dac50fSopenharmony_ci
100e0dac50fSopenharmony_ci    property = new WindowProperty();
101e0dac50fSopenharmony_ci    property->SetWindowType(WindowType::WINDOW_TYPE_STATUS_BAR);
102e0dac50fSopenharmony_ci    windowNode = new WindowNode(property);
103e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode);
104e0dac50fSopenharmony_ci    node = windowRoot_->GetWindowForDumpAceHelpInfo();
105e0dac50fSopenharmony_ci    ASSERT_NE(node, nullptr);
106e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode);
107e0dac50fSopenharmony_ci
108e0dac50fSopenharmony_ci    property = new WindowProperty();
109e0dac50fSopenharmony_ci    property->SetWindowType(WindowType::WINDOW_TYPE_KEYGUARD);
110e0dac50fSopenharmony_ci    windowNode = new WindowNode(property);
111e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode);
112e0dac50fSopenharmony_ci    node = windowRoot_->GetWindowForDumpAceHelpInfo();
113e0dac50fSopenharmony_ci    ASSERT_NE(node, nullptr);
114e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode);
115e0dac50fSopenharmony_ci    windowNode->SetVisibilityState(WINDOW_VISIBILITY_STATE_NO_OCCLUSION);
116e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode);
117e0dac50fSopenharmony_ci}
118e0dac50fSopenharmony_ci
119e0dac50fSopenharmony_ci/**
120e0dac50fSopenharmony_ci * @tc.name: WindowRootTest03
121e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot CreateWindowNodeContainer
122e0dac50fSopenharmony_ci * @tc.type: FUNC
123e0dac50fSopenharmony_ci */
124e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest03, Function | SmallTest | Level2)
125e0dac50fSopenharmony_ci{
126e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = new DisplayInfo();
127e0dac50fSopenharmony_ci
128e0dac50fSopenharmony_ci    displayInfo->SetWidth(49);
129e0dac50fSopenharmony_ci    auto container = windowRoot_->CreateWindowNodeContainer(0, displayInfo);
130e0dac50fSopenharmony_ci    ASSERT_EQ(container, nullptr);
131e0dac50fSopenharmony_ci
132e0dac50fSopenharmony_ci    displayInfo->SetWidth(7681);
133e0dac50fSopenharmony_ci    container = windowRoot_->CreateWindowNodeContainer(0, displayInfo);
134e0dac50fSopenharmony_ci    ASSERT_EQ(container, nullptr);
135e0dac50fSopenharmony_ci
136e0dac50fSopenharmony_ci    displayInfo->SetWidth(50);
137e0dac50fSopenharmony_ci    displayInfo->SetHeight(49);
138e0dac50fSopenharmony_ci    container = windowRoot_->CreateWindowNodeContainer(0, displayInfo);
139e0dac50fSopenharmony_ci    ASSERT_EQ(container, nullptr);
140e0dac50fSopenharmony_ci
141e0dac50fSopenharmony_ci    displayInfo->SetHeight(7681);
142e0dac50fSopenharmony_ci    container = windowRoot_->CreateWindowNodeContainer(0, displayInfo);
143e0dac50fSopenharmony_ci    ASSERT_EQ(container, nullptr);
144e0dac50fSopenharmony_ci}
145e0dac50fSopenharmony_ci
146e0dac50fSopenharmony_ci/**
147e0dac50fSopenharmony_ci * @tc.name: WindowRootTest04
148e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetWindowNodeContainer
149e0dac50fSopenharmony_ci * @tc.type: FUNC
150e0dac50fSopenharmony_ci */
151e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest04, Function | SmallTest | Level2)
152e0dac50fSopenharmony_ci{
153e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
154e0dac50fSopenharmony_ci    ASSERT_NE(display, nullptr);
155e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
156e0dac50fSopenharmony_ci    ASSERT_NE(displayInfo, nullptr);
157e0dac50fSopenharmony_ci    displayInfo->SetDisplayId(0);
158e0dac50fSopenharmony_ci    displayInfo->SetScreenGroupId(SCREEN_ID_INVALID);
159e0dac50fSopenharmony_ci    auto container = windowRoot_->CreateWindowNodeContainer(0, displayInfo);
160e0dac50fSopenharmony_ci    ASSERT_NE(container, nullptr);
161e0dac50fSopenharmony_ci
162e0dac50fSopenharmony_ci    windowRoot_->GetWindowNodeContainer(DISPLAY_ID_INVALID);
163e0dac50fSopenharmony_ci}
164e0dac50fSopenharmony_ci
165e0dac50fSopenharmony_ci/**
166e0dac50fSopenharmony_ci * @tc.name: WindowRootTest05
167e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetBackgroundNodesByScreenId
168e0dac50fSopenharmony_ci * @tc.type: FUNC
169e0dac50fSopenharmony_ci */
170e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest05, Function | SmallTest | Level2)
171e0dac50fSopenharmony_ci{
172e0dac50fSopenharmony_ci    std::vector<sptr<WindowNode>> windowNodes;
173e0dac50fSopenharmony_ci
174e0dac50fSopenharmony_ci    sptr<WindowProperty> property = new WindowProperty();
175e0dac50fSopenharmony_ci    property->SetDisplayId(DISPLAY_ID_INVALID);
176e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode1 = new WindowNode(property);
177e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode1);
178e0dac50fSopenharmony_ci    property->SetDisplayId(0);
179e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode2 = new WindowNode(property);
180e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode2);
181e0dac50fSopenharmony_ci
182e0dac50fSopenharmony_ci    auto screenGroupId = DisplayManagerServiceInner::GetInstance().GetScreenGroupIdByDisplayId(DISPLAY_ID_INVALID);
183e0dac50fSopenharmony_ci    windowRoot_->GetBackgroundNodesByScreenId(screenGroupId, windowNodes);
184e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode3 = new WindowNode();
185e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode3);
186e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode3->GetWindowId(), windowNode3));
187e0dac50fSopenharmony_ci    windowNodes.push_back(windowNode1);
188e0dac50fSopenharmony_ci    windowNodes.push_back(windowNode2);
189e0dac50fSopenharmony_ci    windowNodes.push_back(windowNode3);
190e0dac50fSopenharmony_ci    windowRoot_->GetBackgroundNodesByScreenId(screenGroupId, windowNodes);
191e0dac50fSopenharmony_ci
192e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode1);
193e0dac50fSopenharmony_ci    windowRoot_->DestroyWindowInner(windowNode2);
194e0dac50fSopenharmony_ci
195e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
196e0dac50fSopenharmony_ci}
197e0dac50fSopenharmony_ci
198e0dac50fSopenharmony_ci/**
199e0dac50fSopenharmony_ci * @tc.name: WindowRootTest06
200e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot AddDeathRecipient
201e0dac50fSopenharmony_ci * @tc.type: FUNC
202e0dac50fSopenharmony_ci */
203e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest06, Function | SmallTest | Level2)
204e0dac50fSopenharmony_ci{
205e0dac50fSopenharmony_ci    windowRoot_->AddDeathRecipient(nullptr);
206e0dac50fSopenharmony_ci
207e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
208e0dac50fSopenharmony_ci
209e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
210e0dac50fSopenharmony_ci    sptr<IRemoteObject> iRemoteObjectMocker = new IRemoteObjectMocker();
211e0dac50fSopenharmony_ci    sptr<IWindow> iWindow = iface_cast<IWindow>(iRemoteObjectMocker);
212e0dac50fSopenharmony_ci    windowNode->SetWindowToken(iWindow);
213e0dac50fSopenharmony_ci    windowRoot_->windowDeath_ = nullptr;
214e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
215e0dac50fSopenharmony_ci    windowRoot_->AddDeathRecipient(windowNode);
216e0dac50fSopenharmony_ci}
217e0dac50fSopenharmony_ci
218e0dac50fSopenharmony_ci/**
219e0dac50fSopenharmony_ci * @tc.name: WindowRootTest07
220e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SaveWindow
221e0dac50fSopenharmony_ci * @tc.type: FUNC
222e0dac50fSopenharmony_ci */
223e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest07, Function | SmallTest | Level2)
224e0dac50fSopenharmony_ci{
225e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(nullptr);
226e0dac50fSopenharmony_ci
227e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
228e0dac50fSopenharmony_ci}
229e0dac50fSopenharmony_ci
230e0dac50fSopenharmony_ci/**
231e0dac50fSopenharmony_ci * @tc.name: WindowRootTest08
232e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot MinimizeStructuredAppWindowsExceptSelf
233e0dac50fSopenharmony_ci * @tc.type: FUNC
234e0dac50fSopenharmony_ci */
235e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest08, Function | SmallTest | Level2)
236e0dac50fSopenharmony_ci{
237e0dac50fSopenharmony_ci    sptr<WindowProperty> property = new WindowProperty();
238e0dac50fSopenharmony_ci    property->SetDisplayId(DISPLAY_ID_INVALID);
239e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode(property);
240e0dac50fSopenharmony_ci
241e0dac50fSopenharmony_ci    WMError ret = windowRoot_->MinimizeStructuredAppWindowsExceptSelf(windowNode);
242e0dac50fSopenharmony_ci
243e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_NULLPTR);
244e0dac50fSopenharmony_ci}
245e0dac50fSopenharmony_ci
246e0dac50fSopenharmony_ci/**
247e0dac50fSopenharmony_ci * @tc.name: WindowRootTest09
248e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot MinimizeTargetWindows
249e0dac50fSopenharmony_ci * @tc.type: FUNC
250e0dac50fSopenharmony_ci */
251e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest09, Function | SmallTest | Level2)
252e0dac50fSopenharmony_ci{
253e0dac50fSopenharmony_ci    std::vector<uint32_t> windowIds;
254e0dac50fSopenharmony_ci
255e0dac50fSopenharmony_ci    windowRoot_->MinimizeTargetWindows(windowIds);
256e0dac50fSopenharmony_ci
257e0dac50fSopenharmony_ci    windowIds.push_back(INVALID_WINDOW_ID);
258e0dac50fSopenharmony_ci    windowRoot_->MinimizeTargetWindows(windowIds);
259e0dac50fSopenharmony_ci
260e0dac50fSopenharmony_ci    sptr<WindowProperty> property = new WindowProperty();
261e0dac50fSopenharmony_ci    property->SetWindowId(1);
262e0dac50fSopenharmony_ci    property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW);
263e0dac50fSopenharmony_ci    auto windowNode = new WindowNode(property);
264e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode);
265e0dac50fSopenharmony_ci    property = new WindowProperty();
266e0dac50fSopenharmony_ci    property->SetWindowId(2);
267e0dac50fSopenharmony_ci    property->SetWindowType(WindowType::WINDOW_TYPE_APP_SUB_WINDOW);
268e0dac50fSopenharmony_ci    windowNode = new WindowNode(property);
269e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode);
270e0dac50fSopenharmony_ci    windowIds.push_back(1);
271e0dac50fSopenharmony_ci    windowIds.push_back(2);
272e0dac50fSopenharmony_ci    windowRoot_->MinimizeTargetWindows(windowIds);
273e0dac50fSopenharmony_ci
274e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
275e0dac50fSopenharmony_ci}
276e0dac50fSopenharmony_ci
277e0dac50fSopenharmony_ci/**
278e0dac50fSopenharmony_ci * @tc.name: WindowRootTest10
279e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetSplitScreenWindowNodes
280e0dac50fSopenharmony_ci * @tc.type: FUNC
281e0dac50fSopenharmony_ci */
282e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest10, Function | SmallTest | Level2)
283e0dac50fSopenharmony_ci{
284e0dac50fSopenharmony_ci    std::vector<sptr<WindowNode>> windowNodes = windowRoot_->GetSplitScreenWindowNodes(DISPLAY_ID_INVALID);
285e0dac50fSopenharmony_ci    ASSERT_EQ(windowNodes.empty(), true);
286e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayManagerServiceInner::GetInstance().GetDefaultDisplayId();
287e0dac50fSopenharmony_ci    windowNodes = windowRoot_->GetSplitScreenWindowNodes(defaultDisplayId);
288e0dac50fSopenharmony_ci    ASSERT_EQ(windowNodes.empty(), true);
289e0dac50fSopenharmony_ci}
290e0dac50fSopenharmony_ci
291e0dac50fSopenharmony_ci/**
292e0dac50fSopenharmony_ci * @tc.name: WindowRootTest11
293e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot IsForbidDockSliceMove
294e0dac50fSopenharmony_ci * @tc.type: FUNC
295e0dac50fSopenharmony_ci */
296e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest11, Function | SmallTest | Level2)
297e0dac50fSopenharmony_ci{
298e0dac50fSopenharmony_ci    bool ret = windowRoot_->IsForbidDockSliceMove(DISPLAY_ID_INVALID);
299e0dac50fSopenharmony_ci    ASSERT_EQ(ret, true);
300e0dac50fSopenharmony_ci
301e0dac50fSopenharmony_ci    ret = windowRoot_->IsForbidDockSliceMove(0);
302e0dac50fSopenharmony_ci    ASSERT_EQ(ret, true);
303e0dac50fSopenharmony_ci}
304e0dac50fSopenharmony_ci
305e0dac50fSopenharmony_ci/**
306e0dac50fSopenharmony_ci * @tc.name: WindowRootTest12
307e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot IsDockSliceInExitSplitModeArea
308e0dac50fSopenharmony_ci * @tc.type: FUNC
309e0dac50fSopenharmony_ci */
310e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest12, Function | SmallTest | Level2)
311e0dac50fSopenharmony_ci{
312e0dac50fSopenharmony_ci    bool ret = windowRoot_->IsDockSliceInExitSplitModeArea(DISPLAY_ID_INVALID);
313e0dac50fSopenharmony_ci    ASSERT_EQ(ret, false);
314e0dac50fSopenharmony_ci
315e0dac50fSopenharmony_ci    ret = windowRoot_->IsDockSliceInExitSplitModeArea(0);
316e0dac50fSopenharmony_ci    ASSERT_EQ(ret, false);
317e0dac50fSopenharmony_ci
318e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayManagerServiceInner::GetInstance().GetDefaultDisplayId();
319e0dac50fSopenharmony_ci    ret = windowRoot_->IsDockSliceInExitSplitModeArea(defaultDisplayId);
320e0dac50fSopenharmony_ci    ASSERT_EQ(ret, false);
321e0dac50fSopenharmony_ci}
322e0dac50fSopenharmony_ci
323e0dac50fSopenharmony_ci/**
324e0dac50fSopenharmony_ci * @tc.name: WindowRootTest13
325e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ExitSplitMode
326e0dac50fSopenharmony_ci * @tc.type: FUNC
327e0dac50fSopenharmony_ci */
328e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest13, Function | SmallTest | Level2)
329e0dac50fSopenharmony_ci{
330e0dac50fSopenharmony_ci    windowRoot_->ExitSplitMode(DISPLAY_ID_INVALID);
331e0dac50fSopenharmony_ci
332e0dac50fSopenharmony_ci    windowRoot_->ExitSplitMode(0);
333e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
334e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayManagerServiceInner::GetInstance().GetDefaultDisplayId();
335e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
336e0dac50fSopenharmony_ci    windowRoot_->ExitSplitMode(defaultDisplayId);
337e0dac50fSopenharmony_ci}
338e0dac50fSopenharmony_ci
339e0dac50fSopenharmony_ci/**
340e0dac50fSopenharmony_ci * @tc.name: WindowRootTest14
341e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot AddSurfaceNodeIdWindowNodePair
342e0dac50fSopenharmony_ci * @tc.type: FUNC
343e0dac50fSopenharmony_ci */
344e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest14, Function | SmallTest | Level2)
345e0dac50fSopenharmony_ci{
346e0dac50fSopenharmony_ci    windowRoot_->AddSurfaceNodeIdWindowNodePair(INVALID_WINDOW_ID, nullptr);
347e0dac50fSopenharmony_ci
348e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
349e0dac50fSopenharmony_ci}
350e0dac50fSopenharmony_ci
351e0dac50fSopenharmony_ci/**
352e0dac50fSopenharmony_ci * @tc.name: WindowRootTest15
353e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetVisibilityWindowInfo
354e0dac50fSopenharmony_ci * @tc.type: FUNC
355e0dac50fSopenharmony_ci */
356e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest15, Function | SmallTest | Level2)
357e0dac50fSopenharmony_ci{
358e0dac50fSopenharmony_ci    std::vector<sptr<WindowVisibilityInfo>> infos = {};
359e0dac50fSopenharmony_ci
360e0dac50fSopenharmony_ci    windowRoot_->GetVisibilityWindowInfo(infos);
361e0dac50fSopenharmony_ci
362e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
363e0dac50fSopenharmony_ci
364e0dac50fSopenharmony_ci    windowRoot_->lastVisibleData_.emplace_back(1, WINDOW_VISIBILITY_STATE_NO_OCCLUSION); // 1 is surafceId
365e0dac50fSopenharmony_ci    windowRoot_->lastVisibleData_.emplace_back(2, WINDOW_VISIBILITY_STATE_NO_OCCLUSION); // 2 is surafceId
366e0dac50fSopenharmony_ci    windowRoot_->lastVisibleData_.emplace_back(3, WINDOW_VISIBILITY_STATE_NO_OCCLUSION); // 3 is surafceId
367e0dac50fSopenharmony_ci    windowRoot_->GetVisibilityWindowInfo(infos);
368e0dac50fSopenharmony_ci}
369e0dac50fSopenharmony_ci
370e0dac50fSopenharmony_ci/**
371e0dac50fSopenharmony_ci * @tc.name: WindowRootTest16
372e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetAvoidAreaByType
373e0dac50fSopenharmony_ci * @tc.type: FUNC
374e0dac50fSopenharmony_ci */
375e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest16, Function | SmallTest | Level2)
376e0dac50fSopenharmony_ci{
377e0dac50fSopenharmony_ci    AvoidArea emptyArea;
378e0dac50fSopenharmony_ci    AvoidArea area;
379e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
380e0dac50fSopenharmony_ci
381e0dac50fSopenharmony_ci    area = windowRoot_->GetAvoidAreaByType(node->GetWindowId(), AvoidAreaType::TYPE_CUTOUT);
382e0dac50fSopenharmony_ci    ASSERT_EQ(area, emptyArea);
383e0dac50fSopenharmony_ci
384e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
385e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
386e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
387e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
388e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
389e0dac50fSopenharmony_ci    area = windowRoot_->GetAvoidAreaByType(node->GetWindowId(), AvoidAreaType::TYPE_CUTOUT);
390e0dac50fSopenharmony_ci    ASSERT_EQ(area, emptyArea);
391e0dac50fSopenharmony_ci}
392e0dac50fSopenharmony_ci
393e0dac50fSopenharmony_ci/**
394e0dac50fSopenharmony_ci * @tc.name: WindowRootTest17
395e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot MinimizeAllAppWindows
396e0dac50fSopenharmony_ci * @tc.type: FUNC
397e0dac50fSopenharmony_ci */
398e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest17, Function | SmallTest | Level2)
399e0dac50fSopenharmony_ci{
400e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
401e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
402e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
403e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(DISPLAY_ID_INVALID, container));
404e0dac50fSopenharmony_ci    windowRoot_->MinimizeAllAppWindows(DISPLAY_ID_INVALID);
405e0dac50fSopenharmony_ci
406e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
407e0dac50fSopenharmony_ci}
408e0dac50fSopenharmony_ci
409e0dac50fSopenharmony_ci/**
410e0dac50fSopenharmony_ci * @tc.name: WindowRootTest18
411e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot DestroyLeakStartingWindow
412e0dac50fSopenharmony_ci * @tc.type: FUNC
413e0dac50fSopenharmony_ci */
414e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest18, Function | SmallTest | Level2)
415e0dac50fSopenharmony_ci{
416e0dac50fSopenharmony_ci    windowRoot_->DestroyLeakStartingWindow();
417e0dac50fSopenharmony_ci
418e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
419e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
420e0dac50fSopenharmony_ci    node->startingWindowShown_ = true;
421e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
422e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
423e0dac50fSopenharmony_ci    windowRoot_->DestroyLeakStartingWindow();
424e0dac50fSopenharmony_ci}
425e0dac50fSopenharmony_ci
426e0dac50fSopenharmony_ci/**
427e0dac50fSopenharmony_ci * @tc.name: WindowRootTest20
428e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot LayoutWhenAddWindowNode
429e0dac50fSopenharmony_ci * @tc.type: FUNC
430e0dac50fSopenharmony_ci */
431e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest20, Function | SmallTest | Level2)
432e0dac50fSopenharmony_ci{
433e0dac50fSopenharmony_ci    sptr<WindowNode> node = nullptr;
434e0dac50fSopenharmony_ci    windowRoot_->LayoutWhenAddWindowNode(node, true);
435e0dac50fSopenharmony_ci
436e0dac50fSopenharmony_ci    node = new WindowNode();
437e0dac50fSopenharmony_ci    windowRoot_->LayoutWhenAddWindowNode(node, true);
438e0dac50fSopenharmony_ci
439e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
440e0dac50fSopenharmony_ci}
441e0dac50fSopenharmony_ci
442e0dac50fSopenharmony_ci/**
443e0dac50fSopenharmony_ci * @tc.name: WindowRootTest21
444e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot AddWindowNode
445e0dac50fSopenharmony_ci * @tc.type: FUNC
446e0dac50fSopenharmony_ci */
447e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest21, Function | SmallTest | Level2)
448e0dac50fSopenharmony_ci{
449e0dac50fSopenharmony_ci    WMError ret;
450e0dac50fSopenharmony_ci    sptr<WindowNode> node = nullptr;
451e0dac50fSopenharmony_ci
452e0dac50fSopenharmony_ci    ret = windowRoot_->AddWindowNode(INVALID_WINDOW_ID, node, true);
453e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_NULLPTR);
454e0dac50fSopenharmony_ci}
455e0dac50fSopenharmony_ci
456e0dac50fSopenharmony_ci/**
457e0dac50fSopenharmony_ci * @tc.name: WindowRootTest22
458e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RemoveWindowNode
459e0dac50fSopenharmony_ci * @tc.type: FUNC
460e0dac50fSopenharmony_ci */
461e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest22, Function | SmallTest | Level2)
462e0dac50fSopenharmony_ci{
463e0dac50fSopenharmony_ci    WMError ret;
464e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
465e0dac50fSopenharmony_ci
466e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
467e0dac50fSopenharmony_ci    ret = windowRoot_->RemoveWindowNode(node->GetWindowId(), true);
468e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
469e0dac50fSopenharmony_ci    sptr<WindowNode> node1 = new WindowNode();
470e0dac50fSopenharmony_ci    node->children_.push_back(node1);
471e0dac50fSopenharmony_ci    ret = windowRoot_->RemoveWindowNode(node->GetWindowId(), true);
472e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
473e0dac50fSopenharmony_ci}
474e0dac50fSopenharmony_ci
475e0dac50fSopenharmony_ci/**
476e0dac50fSopenharmony_ci * @tc.name: WindowRootTest23
477e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateWindowNode
478e0dac50fSopenharmony_ci * @tc.type: FUNC
479e0dac50fSopenharmony_ci */
480e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest23, Function | SmallTest | Level2)
481e0dac50fSopenharmony_ci{
482e0dac50fSopenharmony_ci    WMError ret;
483e0dac50fSopenharmony_ci
484e0dac50fSopenharmony_ci    ret = windowRoot_->UpdateWindowNode(INVALID_WINDOW_ID, WindowUpdateReason::UPDATE_MODE);
485e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_NULLPTR);
486e0dac50fSopenharmony_ci
487e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
488e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
489e0dac50fSopenharmony_ci    ret = windowRoot_->UpdateWindowNode(node->GetWindowId(), WindowUpdateReason::UPDATE_MODE);
490e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
491e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
492e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
493e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
494e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
495e0dac50fSopenharmony_ci    ret = windowRoot_->UpdateWindowNode(node->GetWindowId(), WindowUpdateReason::UPDATE_MODE);
496e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
497e0dac50fSopenharmony_ci}
498e0dac50fSopenharmony_ci
499e0dac50fSopenharmony_ci/**
500e0dac50fSopenharmony_ci * @tc.name: WindowRootTest24
501e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateSizeChangeReason
502e0dac50fSopenharmony_ci * @tc.type: FUNC
503e0dac50fSopenharmony_ci */
504e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest24, Function | SmallTest | Level2)
505e0dac50fSopenharmony_ci{
506e0dac50fSopenharmony_ci    WMError ret;
507e0dac50fSopenharmony_ci
508e0dac50fSopenharmony_ci    ret = windowRoot_->UpdateSizeChangeReason(INVALID_WINDOW_ID, WindowSizeChangeReason::UNDEFINED);
509e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_NULLPTR);
510e0dac50fSopenharmony_ci
511e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
512e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
513e0dac50fSopenharmony_ci    ret = windowRoot_->UpdateSizeChangeReason(node->GetWindowId(), WindowSizeChangeReason::UNDEFINED);
514e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
515e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
516e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
517e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
518e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
519e0dac50fSopenharmony_ci    ret = windowRoot_->UpdateSizeChangeReason(node->GetWindowId(), WindowSizeChangeReason::UNDEFINED);
520e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
521e0dac50fSopenharmony_ci}
522e0dac50fSopenharmony_ci
523e0dac50fSopenharmony_ci/**
524e0dac50fSopenharmony_ci * @tc.name: WindowRootTest25
525e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetBrightness
526e0dac50fSopenharmony_ci * @tc.type: FUNC
527e0dac50fSopenharmony_ci */
528e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, WindowRootTest25, Function | SmallTest | Level2)
529e0dac50fSopenharmony_ci{
530e0dac50fSopenharmony_ci    windowRoot_->SetBrightness(INVALID_WINDOW_ID, 0);
531e0dac50fSopenharmony_ci
532e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
533e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
534e0dac50fSopenharmony_ci    windowRoot_->SetBrightness(node->GetWindowId(), 0);
535e0dac50fSopenharmony_ci
536e0dac50fSopenharmony_ci    ASSERT_EQ(true, true);
537e0dac50fSopenharmony_ci}
538e0dac50fSopenharmony_ci
539e0dac50fSopenharmony_ci/**
540e0dac50fSopenharmony_ci * @tc.name: CheckAndNotifyWaterMarkChangedResult
541e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot CheckAndNotifyWaterMarkChangedResult
542e0dac50fSopenharmony_ci * @tc.type: FUNC
543e0dac50fSopenharmony_ci */
544e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, CheckAndNotifyWaterMarkChangedResult, Function | SmallTest | Level2)
545e0dac50fSopenharmony_ci{
546e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
547e0dac50fSopenharmony_ci    ASSERT_NE(display, nullptr);
548e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
549e0dac50fSopenharmony_ci    auto container = windowRoot_->CreateWindowNodeContainer(display->GetId(), displayInfo);
550e0dac50fSopenharmony_ci    ASSERT_NE(container, nullptr);
551e0dac50fSopenharmony_ci
552e0dac50fSopenharmony_ci    windowRoot_->lastWaterMarkShowStates_ = false;
553e0dac50fSopenharmony_ci    windowRoot_->CheckAndNotifyWaterMarkChangedResult();
554e0dac50fSopenharmony_ci    ASSERT_EQ(windowRoot_->lastWaterMarkShowStates_, false);
555e0dac50fSopenharmony_ci
556e0dac50fSopenharmony_ci    auto windowNode = new (std::nothrow)WindowNode();
557e0dac50fSopenharmony_ci    ASSERT_NE(windowNode, nullptr);
558e0dac50fSopenharmony_ci    windowNode->SetVisibilityState(WINDOW_VISIBILITY_STATE_NO_OCCLUSION);
559e0dac50fSopenharmony_ci    windowNode->SetDisplayId(displayInfo->GetDisplayId());
560e0dac50fSopenharmony_ci    windowNode->property_->flags_ |= static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_WATER_MARK);
561e0dac50fSopenharmony_ci    container->appWindowNode_->children_.push_back(windowNode);
562e0dac50fSopenharmony_ci
563e0dac50fSopenharmony_ci    windowRoot_->CheckAndNotifyWaterMarkChangedResult();
564e0dac50fSopenharmony_ci    ASSERT_EQ(windowRoot_->lastWaterMarkShowStates_, true);
565e0dac50fSopenharmony_ci
566e0dac50fSopenharmony_ci    container->appWindowNode_->children_.clear();
567e0dac50fSopenharmony_ci    windowRoot_->CheckAndNotifyWaterMarkChangedResult();
568e0dac50fSopenharmony_ci    ASSERT_EQ(windowRoot_->lastWaterMarkShowStates_, false);
569e0dac50fSopenharmony_ci}
570e0dac50fSopenharmony_ci
571e0dac50fSopenharmony_ci/**
572e0dac50fSopenharmony_ci * @tc.name: SetGestureNavigationEnabled
573e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetGestureNavigationEnabled
574e0dac50fSopenharmony_ci * @tc.type: FUNC
575e0dac50fSopenharmony_ci */
576e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetGestureNavigationEnabled, Function | SmallTest | Level2)
577e0dac50fSopenharmony_ci{
578e0dac50fSopenharmony_ci    windowRoot_->lastGestureNativeEnabled_ = false;
579e0dac50fSopenharmony_ci    auto ret = windowRoot_->SetGestureNavigationEnabled(false);
580e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_DO_NOTHING);
581e0dac50fSopenharmony_ci
582e0dac50fSopenharmony_ci    ret = windowRoot_->SetGestureNavigationEnabled(true);
583e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
584e0dac50fSopenharmony_ci
585e0dac50fSopenharmony_ci    windowRoot_->lastGestureNativeEnabled_ = false;
586e0dac50fSopenharmony_ci}
587e0dac50fSopenharmony_ci
588e0dac50fSopenharmony_ci/**
589e0dac50fSopenharmony_ci * @tc.name: GetWindowVisibilityChangeInfo
590e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetWindowVisibilityChangeInfo
591e0dac50fSopenharmony_ci * @tc.type: FUNC
592e0dac50fSopenharmony_ci */
593e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetWindowVisibilityChangeInfo, Function | SmallTest | Level2)
594e0dac50fSopenharmony_ci{
595e0dac50fSopenharmony_ci    std::shared_ptr<RSOcclusionData> occlusionData = std::make_shared<RSOcclusionData>();
596e0dac50fSopenharmony_ci    ASSERT_NE(occlusionData, nullptr);
597e0dac50fSopenharmony_ci    windowRoot_->GetWindowVisibilityChangeInfo(occlusionData);
598e0dac50fSopenharmony_ci    occlusionData->visibleData_.emplace_back(4, ALL_VISIBLE); // 4 is surfaceid
599e0dac50fSopenharmony_ci    occlusionData->visibleData_.emplace_back(5, ALL_VISIBLE); // 5 is surfaceid
600e0dac50fSopenharmony_ci    occlusionData->visibleData_.emplace_back(6, ALL_VISIBLE); // 6 is surfaceid
601e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
602e0dac50fSopenharmony_ci    windowRoot_->GetWindowVisibilityChangeInfo(occlusionData);
603e0dac50fSopenharmony_ci}
604e0dac50fSopenharmony_ci
605e0dac50fSopenharmony_ci/**
606e0dac50fSopenharmony_ci * @tc.name: NotifyWindowVisibilityChange
607e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot NotifyWindowVisibilityChange
608e0dac50fSopenharmony_ci * @tc.type: FUNC
609e0dac50fSopenharmony_ci */
610e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, NotifyWindowVisibilityChange, Function | SmallTest | Level2)
611e0dac50fSopenharmony_ci{
612e0dac50fSopenharmony_ci    std::shared_ptr<RSOcclusionData> occlusionData = std::make_shared<RSOcclusionData>();
613e0dac50fSopenharmony_ci    ASSERT_NE(occlusionData, nullptr);
614e0dac50fSopenharmony_ci    windowRoot_->NotifyWindowVisibilityChange(occlusionData);
615e0dac50fSopenharmony_ci    occlusionData->visibleData_.emplace_back(4, ALL_VISIBLE); // 4 is surfaceid
616e0dac50fSopenharmony_ci    occlusionData->visibleData_.emplace_back(5, ALL_VISIBLE); // 5 is surfaceid
617e0dac50fSopenharmony_ci    occlusionData->visibleData_.emplace_back(6, ALL_VISIBLE); // 6 is surfaceid
618e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
619e0dac50fSopenharmony_ci    windowRoot_->NotifyWindowVisibilityChange(occlusionData);
620e0dac50fSopenharmony_ci}
621e0dac50fSopenharmony_ci
622e0dac50fSopenharmony_ci/**
623e0dac50fSopenharmony_ci * @tc.name: ToggleShownStateForAllAppWindows
624e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ToggleShownStateForAllAppWindows
625e0dac50fSopenharmony_ci * @tc.type: FUNC
626e0dac50fSopenharmony_ci */
627e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ToggleShownStateForAllAppWindows, Function | SmallTest | Level2)
628e0dac50fSopenharmony_ci{
629e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
630e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
631e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
632e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
633e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
634e0dac50fSopenharmony_ci    auto ret = windowRoot_->ToggleShownStateForAllAppWindows();
635e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
636e0dac50fSopenharmony_ci}
637e0dac50fSopenharmony_ci
638e0dac50fSopenharmony_ci/**
639e0dac50fSopenharmony_ci * @tc.name: PostProcessAddWindowNode01
640e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot PostProcessAddWindowNode01
641e0dac50fSopenharmony_ci * @tc.type: FUNC
642e0dac50fSopenharmony_ci */
643e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, PostProcessAddWindowNode01, Function | SmallTest | Level2)
644e0dac50fSopenharmony_ci{
645e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
646e0dac50fSopenharmony_ci    sptr<WindowNode> parentNode = new WindowNode();
647e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container;
648e0dac50fSopenharmony_ci    auto ret = windowRoot_->PostProcessAddWindowNode(node, parentNode, container);
649e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_DO_NOTHING);
650e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_SUB_WINDOW_BASE);
651e0dac50fSopenharmony_ci    node->property_->SetWindowId(1);
652e0dac50fSopenharmony_ci    ret = windowRoot_->PostProcessAddWindowNode(node, parentNode, container);
653e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_DO_NOTHING);
654e0dac50fSopenharmony_ci}
655e0dac50fSopenharmony_ci
656e0dac50fSopenharmony_ci/**
657e0dac50fSopenharmony_ci * @tc.name: PostProcessAddWindowNode02
658e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot PostProcessAddWindowNode02
659e0dac50fSopenharmony_ci * @tc.type: FUNC
660e0dac50fSopenharmony_ci */
661e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, PostProcessAddWindowNode02, Function | SmallTest | Level2)
662e0dac50fSopenharmony_ci{
663e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
664e0dac50fSopenharmony_ci    sptr<WindowNode> parentNode = nullptr;
665e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = new DisplayInfo();
666e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container;
667e0dac50fSopenharmony_ci    node->currentVisibility_ = false;
668e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_SUB_WINDOW_BASE);
669e0dac50fSopenharmony_ci    auto ret = windowRoot_->PostProcessAddWindowNode(node, parentNode, container);
670e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_DO_NOTHING);
671e0dac50fSopenharmony_ci}
672e0dac50fSopenharmony_ci
673e0dac50fSopenharmony_ci/**
674e0dac50fSopenharmony_ci * @tc.name: PostProcessAddWindowNode03
675e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot PostProcessAddWindowNode03
676e0dac50fSopenharmony_ci * @tc.type: FUNC
677e0dac50fSopenharmony_ci */
678e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, PostProcessAddWindowNode03, Function | SmallTest | Level2)
679e0dac50fSopenharmony_ci{
680e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
681e0dac50fSopenharmony_ci    sptr<WindowNode> parentNode = new WindowNode();
682e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
683e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
684e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
685e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_SUB_WINDOW_BASE);
686e0dac50fSopenharmony_ci    node->property_->SetWindowId(1);
687e0dac50fSopenharmony_ci    node->property_->SetFocusable(true);
688e0dac50fSopenharmony_ci    node->currentVisibility_ = true;
689e0dac50fSopenharmony_ci    auto ret = windowRoot_->PostProcessAddWindowNode(node, parentNode, container);
690e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
691e0dac50fSopenharmony_ci}
692e0dac50fSopenharmony_ci
693e0dac50fSopenharmony_ci/**
694e0dac50fSopenharmony_ci * @tc.name: PostProcessAddWindowNode04
695e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot PostProcessAddWindowNode04
696e0dac50fSopenharmony_ci * @tc.type: FUNC
697e0dac50fSopenharmony_ci */
698e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, PostProcessAddWindowNode04, Function | SmallTest | Level2)
699e0dac50fSopenharmony_ci{
700e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
701e0dac50fSopenharmony_ci    sptr<WindowNode> parentNode = new WindowNode();
702e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
703e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
704e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
705e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_SUB_WINDOW_BASE);
706e0dac50fSopenharmony_ci    node->property_->SetWindowId(1);
707e0dac50fSopenharmony_ci    node->property_->SetFocusable(true);
708e0dac50fSopenharmony_ci    node->currentVisibility_ = true;
709e0dac50fSopenharmony_ci    sptr<WindowNode> node1 = new WindowNode();
710e0dac50fSopenharmony_ci    node->children_.push_back(node1);
711e0dac50fSopenharmony_ci    auto ret = windowRoot_->PostProcessAddWindowNode(node, parentNode, container);
712e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
713e0dac50fSopenharmony_ci}
714e0dac50fSopenharmony_ci
715e0dac50fSopenharmony_ci/**
716e0dac50fSopenharmony_ci * @tc.name: BindDialogToParent01
717e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot BindDialogToParent01
718e0dac50fSopenharmony_ci * @tc.type: FUNC
719e0dac50fSopenharmony_ci */
720e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, BindDialogToParent01, Function | SmallTest | Level2)
721e0dac50fSopenharmony_ci{
722e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
723e0dac50fSopenharmony_ci    node->dialogTargetToken_ = nullptr;
724e0dac50fSopenharmony_ci    sptr<WindowNode> parentNode = new WindowNode();
725e0dac50fSopenharmony_ci    auto ret = windowRoot_->BindDialogToParent(node, parentNode);
726e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
727e0dac50fSopenharmony_ci}
728e0dac50fSopenharmony_ci
729e0dac50fSopenharmony_ci/**
730e0dac50fSopenharmony_ci * @tc.name: BindDialogToParent02
731e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot BindDialogToParent02
732e0dac50fSopenharmony_ci * @tc.type: FUNC
733e0dac50fSopenharmony_ci */
734e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, BindDialogToParent02, Function | SmallTest | Level2)
735e0dac50fSopenharmony_ci{
736e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
737e0dac50fSopenharmony_ci    sptr<WindowNode> parentNode = new WindowNode();
738e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG);
739e0dac50fSopenharmony_ci    node->dialogTargetToken_ = new (std::nothrow) IRemoteObjectMocker();
740e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode3 = new WindowNode();
741e0dac50fSopenharmony_ci    windowNode3->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE);
742e0dac50fSopenharmony_ci    windowNode3->abilityToken_ = node->dialogTargetToken_;
743e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode3);
744e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode3->GetWindowId(), windowNode3));
745e0dac50fSopenharmony_ci    auto ret = windowRoot_->BindDialogToParent(node, parentNode);
746e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
747e0dac50fSopenharmony_ci}
748e0dac50fSopenharmony_ci
749e0dac50fSopenharmony_ci/**
750e0dac50fSopenharmony_ci * @tc.name: UpdateFocusableProperty
751e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateFocusableProperty
752e0dac50fSopenharmony_ci * @tc.type: FUNC
753e0dac50fSopenharmony_ci */
754e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateFocusableProperty, Function | SmallTest | Level2)
755e0dac50fSopenharmony_ci{
756e0dac50fSopenharmony_ci    uint32_t windowId = 1;
757e0dac50fSopenharmony_ci    windowRoot_->UpdateFocusableProperty(windowId);
758e0dac50fSopenharmony_ci    auto node = windowRoot_->GetWindowNode(windowId);
759e0dac50fSopenharmony_ci    ASSERT_EQ(node, nullptr);
760e0dac50fSopenharmony_ci}
761e0dac50fSopenharmony_ci
762e0dac50fSopenharmony_ci/**
763e0dac50fSopenharmony_ci * @tc.name: SetWindowMode
764e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetWindowMode
765e0dac50fSopenharmony_ci * @tc.type: FUNC
766e0dac50fSopenharmony_ci */
767e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetWindowMode, Function | SmallTest | Level2)
768e0dac50fSopenharmony_ci{
769e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
770e0dac50fSopenharmony_ci    WindowMode dstMode = WindowMode::WINDOW_MODE_UNDEFINED;
771e0dac50fSopenharmony_ci    auto ret = windowRoot_->SetWindowMode(node, dstMode);
772e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
773e0dac50fSopenharmony_ci    dstMode = WindowMode::WINDOW_MODE_FULLSCREEN;
774e0dac50fSopenharmony_ci    ret = windowRoot_->SetWindowMode(node, dstMode);
775e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
776e0dac50fSopenharmony_ci}
777e0dac50fSopenharmony_ci
778e0dac50fSopenharmony_ci/**
779e0dac50fSopenharmony_ci * @tc.name: DestroyWindowSelf
780e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot DestroyWindowSelf
781e0dac50fSopenharmony_ci * @tc.type: FUNC
782e0dac50fSopenharmony_ci */
783e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, DestroyWindowSelf, Function | SmallTest | Level2)
784e0dac50fSopenharmony_ci{
785e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
786e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
787e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
788e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
789e0dac50fSopenharmony_ci    auto ret = windowRoot_->DestroyWindowSelf(node, container);
790e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
791e0dac50fSopenharmony_ci}
792e0dac50fSopenharmony_ci
793e0dac50fSopenharmony_ci/**
794e0dac50fSopenharmony_ci * @tc.name: IsVerticalDisplay
795e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot IsVerticalDisplay
796e0dac50fSopenharmony_ci * @tc.type: FUNC
797e0dac50fSopenharmony_ci */
798e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, IsVerticalDisplay, Function | SmallTest | Level2)
799e0dac50fSopenharmony_ci{
800e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
801e0dac50fSopenharmony_ci    ASSERT_EQ(false, windowRoot_->IsVerticalDisplay(node));
802e0dac50fSopenharmony_ci}
803e0dac50fSopenharmony_ci
804e0dac50fSopenharmony_ci/**
805e0dac50fSopenharmony_ci * @tc.name: RequestFocus
806e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RequestFocus
807e0dac50fSopenharmony_ci * @tc.type: FUNC
808e0dac50fSopenharmony_ci */
809e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RequestFocus, Function | SmallTest | Level2)
810e0dac50fSopenharmony_ci{
811e0dac50fSopenharmony_ci    uint32_t windowId = 1;
812e0dac50fSopenharmony_ci    auto ret = windowRoot_->RequestFocus(windowId);
813e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
814e0dac50fSopenharmony_ci}
815e0dac50fSopenharmony_ci
816e0dac50fSopenharmony_ci/**
817e0dac50fSopenharmony_ci * @tc.name: RequestActiveWindow
818e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RequestActiveWindow
819e0dac50fSopenharmony_ci * @tc.type: FUNC
820e0dac50fSopenharmony_ci */
821e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RequestActiveWindow, Function | SmallTest | Level2)
822e0dac50fSopenharmony_ci{
823e0dac50fSopenharmony_ci    uint32_t windowId = 1;
824e0dac50fSopenharmony_ci    auto ret = windowRoot_->RequestActiveWindow(windowId);
825e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
826e0dac50fSopenharmony_ci}
827e0dac50fSopenharmony_ci
828e0dac50fSopenharmony_ci/**
829e0dac50fSopenharmony_ci * @tc.name: ProcessWindowStateChange
830e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessWindowStateChange
831e0dac50fSopenharmony_ci * @tc.type: FUNC
832e0dac50fSopenharmony_ci */
833e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessWindowStateChange, Function | SmallTest | Level2)
834e0dac50fSopenharmony_ci{
835e0dac50fSopenharmony_ci    WindowState state = WindowState::STATE_INITIAL;
836e0dac50fSopenharmony_ci    WindowStateChangeReason reason = WindowStateChangeReason::NORMAL;
837e0dac50fSopenharmony_ci    windowRoot_->ProcessWindowStateChange(state, reason);
838e0dac50fSopenharmony_ci    ASSERT_EQ(reason, WindowStateChangeReason::NORMAL);
839e0dac50fSopenharmony_ci}
840e0dac50fSopenharmony_ci
841e0dac50fSopenharmony_ci/**
842e0dac50fSopenharmony_ci * @tc.name: NotifySystemBarTints
843e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot NotifySystemBarTints
844e0dac50fSopenharmony_ci * @tc.type: FUNC
845e0dac50fSopenharmony_ci */
846e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, NotifySystemBarTints, Function | SmallTest | Level2)
847e0dac50fSopenharmony_ci{
848e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
849e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
850e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
851e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
852e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
853e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
854e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
855e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
856e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(displayGroupId, displayVec));
857e0dac50fSopenharmony_ci    windowRoot_->NotifySystemBarTints();
858e0dac50fSopenharmony_ci}
859e0dac50fSopenharmony_ci
860e0dac50fSopenharmony_ci/**
861e0dac50fSopenharmony_ci * @tc.name: NotifyDesktopUnfrozen
862e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot NotifyDesktopUnfrozen
863e0dac50fSopenharmony_ci * @tc.type: FUNC
864e0dac50fSopenharmony_ci */
865e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, NotifyDesktopUnfrozen, Function | SmallTest | Level2)
866e0dac50fSopenharmony_ci{
867e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode3 = new WindowNode();
868e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode3);
869e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode3->GetWindowId(), windowNode3));
870e0dac50fSopenharmony_ci    auto ret = windowRoot_->NotifyDesktopUnfrozen();
871e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, ret);
872e0dac50fSopenharmony_ci}
873e0dac50fSopenharmony_ci
874e0dac50fSopenharmony_ci/**
875e0dac50fSopenharmony_ci * @tc.name: RaiseZOrderForAppWindow
876e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RaiseZOrderForAppWindow
877e0dac50fSopenharmony_ci * @tc.type: FUNC
878e0dac50fSopenharmony_ci */
879e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RaiseZOrderForAppWindow, Function | SmallTest | Level2)
880e0dac50fSopenharmony_ci{
881e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode2 = nullptr;
882e0dac50fSopenharmony_ci    auto ret = windowRoot_->RaiseZOrderForAppWindow(windowNode2);
883e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
884e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode3 = new WindowNode();
885e0dac50fSopenharmony_ci    ret = windowRoot_->RaiseZOrderForAppWindow(windowNode3);
886e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
887e0dac50fSopenharmony_ci}
888e0dac50fSopenharmony_ci
889e0dac50fSopenharmony_ci/**
890e0dac50fSopenharmony_ci * @tc.name: DispatchKeyEvent
891e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot DispatchKeyEvent
892e0dac50fSopenharmony_ci * @tc.type: FUNC
893e0dac50fSopenharmony_ci */
894e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, DispatchKeyEvent, Function | SmallTest | Level2)
895e0dac50fSopenharmony_ci{
896e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
897e0dac50fSopenharmony_ci    std::shared_ptr<MMI::KeyEvent> event = nullptr;
898e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
899e0dac50fSopenharmony_ci    windowRoot_->DispatchKeyEvent(windowNode, event);
900e0dac50fSopenharmony_ci}
901e0dac50fSopenharmony_ci
902e0dac50fSopenharmony_ci/**
903e0dac50fSopenharmony_ci * @tc.name: GetTopWindowId
904e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetTopWindowId
905e0dac50fSopenharmony_ci * @tc.type: FUNC
906e0dac50fSopenharmony_ci */
907e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetTopWindowId, Function | SmallTest | Level2)
908e0dac50fSopenharmony_ci{
909e0dac50fSopenharmony_ci    uint32_t mainWinId = 0;
910e0dac50fSopenharmony_ci    uint32_t topWinId = 1;
911e0dac50fSopenharmony_ci    auto ret = windowRoot_->GetTopWindowId(mainWinId, topWinId);
912e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_WINDOW, ret);
913e0dac50fSopenharmony_ci}
914e0dac50fSopenharmony_ci
915e0dac50fSopenharmony_ci/**
916e0dac50fSopenharmony_ci * @tc.name: SetWindowLayoutMode
917e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetWindowLayoutMode
918e0dac50fSopenharmony_ci * @tc.type: FUNC
919e0dac50fSopenharmony_ci */
920e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetWindowLayoutMode, Function | SmallTest | Level2)
921e0dac50fSopenharmony_ci{
922e0dac50fSopenharmony_ci    DisplayId displayId = 1;
923e0dac50fSopenharmony_ci    WindowLayoutMode mode = WindowLayoutMode::BASE;
924e0dac50fSopenharmony_ci    auto ret = windowRoot_->SetWindowLayoutMode(displayId, mode);
925e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
926e0dac50fSopenharmony_ci}
927e0dac50fSopenharmony_ci
928e0dac50fSopenharmony_ci/**
929e0dac50fSopenharmony_ci * @tc.name: GetAllDisplayIds
930e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetAllDisplayIds,RemoveSingleUserWindowNodes
931e0dac50fSopenharmony_ci * @tc.type: FUNC
932e0dac50fSopenharmony_ci */
933e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetAllDisplayIds, Function | SmallTest | Level2)
934e0dac50fSopenharmony_ci{
935e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
936e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
937e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
938e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
939e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
940e0dac50fSopenharmony_ci    windowRoot_->GetAllDisplayIds();
941e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
942e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
943e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
944e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(displayGroupId, displayVec));
945e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
946e0dac50fSopenharmony_ci    windowRoot_->GetAllDisplayIds();
947e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
948e0dac50fSopenharmony_ci    windowRoot_->RemoveSingleUserWindowNodes(displayGroupId);
949e0dac50fSopenharmony_ci}
950e0dac50fSopenharmony_ci
951e0dac50fSopenharmony_ci/**
952e0dac50fSopenharmony_ci * @tc.name: GenAllWindowsLogInfo
953e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GenAllWindowsLogInfo
954e0dac50fSopenharmony_ci * @tc.type: FUNC
955e0dac50fSopenharmony_ci */
956e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GenAllWindowsLogInfo, Function | SmallTest | Level2)
957e0dac50fSopenharmony_ci{
958e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
959e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
960e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
961e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
962e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
963e0dac50fSopenharmony_ci    windowRoot_->GenAllWindowsLogInfo();
964e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
965e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
966e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
967e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(displayGroupId, displayVec));
968e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
969e0dac50fSopenharmony_ci    windowRoot_->GenAllWindowsLogInfo();
970e0dac50fSopenharmony_ci}
971e0dac50fSopenharmony_ci
972e0dac50fSopenharmony_ci/**
973e0dac50fSopenharmony_ci * @tc.name: FocusFaultDetection
974e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot FocusFaultDetection
975e0dac50fSopenharmony_ci * @tc.type: FUNC
976e0dac50fSopenharmony_ci */
977e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, FocusFaultDetection, Function | SmallTest | Level2)
978e0dac50fSopenharmony_ci{
979e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
980e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
981e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
982e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
983e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
984e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
985e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
986e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
987e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(displayGroupId, displayVec));
988e0dac50fSopenharmony_ci    windowRoot_->needCheckFocusWindow = false;
989e0dac50fSopenharmony_ci    windowRoot_->FocusFaultDetection();
990e0dac50fSopenharmony_ci    windowRoot_->needCheckFocusWindow = true;
991e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
992e0dac50fSopenharmony_ci    windowRoot_->FocusFaultDetection();
993e0dac50fSopenharmony_ci}
994e0dac50fSopenharmony_ci
995e0dac50fSopenharmony_ci/**
996e0dac50fSopenharmony_ci * @tc.name: ProcessExpandDisplayCreate
997e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessExpandDisplayCreate
998e0dac50fSopenharmony_ci * @tc.type: FUNC
999e0dac50fSopenharmony_ci */
1000e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessExpandDisplayCreate, Function | SmallTest | Level2)
1001e0dac50fSopenharmony_ci{
1002e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
1003e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1004e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1005e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1006e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
1007e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1008e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1009e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1010e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(displayGroupId, displayVec));
1011e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1012e0dac50fSopenharmony_ci    ASSERT_NE(display, nullptr);
1013e0dac50fSopenharmony_ci    displayInfo->SetWidth(100);
1014e0dac50fSopenharmony_ci    displayInfo->SetHeight(100);
1015e0dac50fSopenharmony_ci    std::map<DisplayId, Rect> displayRectMap = {};
1016e0dac50fSopenharmony_ci    windowRoot_->ProcessExpandDisplayCreate(defaultDisplayId, displayInfo, displayRectMap);
1017e0dac50fSopenharmony_ci}
1018e0dac50fSopenharmony_ci
1019e0dac50fSopenharmony_ci/**
1020e0dac50fSopenharmony_ci * @tc.name: GetAllDisplayRectsByDisplayInfo
1021e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetAllDisplayRectsByDisplayInfo
1022e0dac50fSopenharmony_ci * @tc.type: FUNC
1023e0dac50fSopenharmony_ci */
1024e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetAllDisplayRectsByDisplayInfo, Function | SmallTest | Level2)
1025e0dac50fSopenharmony_ci{
1026e0dac50fSopenharmony_ci    std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap;
1027e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1028e0dac50fSopenharmony_ci    windowRoot_->GetAllDisplayRectsByDisplayInfo(displayInfoMap);
1029e0dac50fSopenharmony_ci}
1030e0dac50fSopenharmony_ci
1031e0dac50fSopenharmony_ci/**
1032e0dac50fSopenharmony_ci * @tc.name: ProcessDisplayCreate
1033e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessDisplayCreate
1034e0dac50fSopenharmony_ci * @tc.type: FUNC
1035e0dac50fSopenharmony_ci */
1036e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessDisplayCreate, Function | SmallTest | Level2)
1037e0dac50fSopenharmony_ci{
1038e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1039e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1040e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1041e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1042e0dac50fSopenharmony_ci    std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap;
1043e0dac50fSopenharmony_ci    windowRoot_->ProcessDisplayCreate(defaultDisplayId, displayInfo, displayInfoMap);
1044e0dac50fSopenharmony_ci}
1045e0dac50fSopenharmony_ci
1046e0dac50fSopenharmony_ci/**
1047e0dac50fSopenharmony_ci * @tc.name: MoveNotShowingWindowToDefaultDisplay
1048e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot MoveNotShowingWindowToDefaultDisplay
1049e0dac50fSopenharmony_ci * @tc.type: FUNC
1050e0dac50fSopenharmony_ci */
1051e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, MoveNotShowingWindowToDefaultDisplay, Function | SmallTest | Level2)
1052e0dac50fSopenharmony_ci{
1053e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1054e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1055e0dac50fSopenharmony_ci    DisplayId displayId = 1;
1056e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1057e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
1058e0dac50fSopenharmony_ci    windowRoot_->MoveNotShowingWindowToDefaultDisplay(defaultDisplayId, displayId);
1059e0dac50fSopenharmony_ci}
1060e0dac50fSopenharmony_ci
1061e0dac50fSopenharmony_ci/**
1062e0dac50fSopenharmony_ci * @tc.name: ProcessDisplayDestroy
1063e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessDisplayDestroy
1064e0dac50fSopenharmony_ci * @tc.type: FUNC
1065e0dac50fSopenharmony_ci */
1066e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessDisplayDestroy, Function | SmallTest | Level2)
1067e0dac50fSopenharmony_ci{
1068e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1069e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1070e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1071e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1072e0dac50fSopenharmony_ci    std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap;
1073e0dac50fSopenharmony_ci    windowRoot_->ProcessDisplayDestroy(defaultDisplayId, displayInfo, displayInfoMap);
1074e0dac50fSopenharmony_ci}
1075e0dac50fSopenharmony_ci
1076e0dac50fSopenharmony_ci/**
1077e0dac50fSopenharmony_ci * @tc.name: ProcessDisplayChange
1078e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessDisplayChange
1079e0dac50fSopenharmony_ci * @tc.type: FUNC
1080e0dac50fSopenharmony_ci */
1081e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessDisplayChange, Function | SmallTest | Level2)
1082e0dac50fSopenharmony_ci{
1083e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1084e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1085e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1086e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1087e0dac50fSopenharmony_ci    std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap;
1088e0dac50fSopenharmony_ci    DisplayStateChangeType type = DisplayStateChangeType::BEFORE_SUSPEND;
1089e0dac50fSopenharmony_ci    windowRoot_->ProcessDisplayChange(defaultDisplayId, displayInfo, displayInfoMap, type);
1090e0dac50fSopenharmony_ci    displayInfo = nullptr;
1091e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1092e0dac50fSopenharmony_ci    windowRoot_->ProcessDisplayChange(defaultDisplayId, displayInfo, displayInfoMap, type);
1093e0dac50fSopenharmony_ci}
1094e0dac50fSopenharmony_ci
1095e0dac50fSopenharmony_ci/**
1096e0dac50fSopenharmony_ci * @tc.name: GetDisplayGroupRect
1097e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetDisplayGroupRect
1098e0dac50fSopenharmony_ci * @tc.type: FUNC
1099e0dac50fSopenharmony_ci */
1100e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetDisplayGroupRect, Function | SmallTest | Level2)
1101e0dac50fSopenharmony_ci{
1102e0dac50fSopenharmony_ci    DisplayId displayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1103e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1104e0dac50fSopenharmony_ci    windowRoot_->GetDisplayGroupRect(displayId);
1105e0dac50fSopenharmony_ci}
1106e0dac50fSopenharmony_ci
1107e0dac50fSopenharmony_ci/**
1108e0dac50fSopenharmony_ci * @tc.name: RemoveSingleUserWindowNodes
1109e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RemoveSingleUserWindowNodes
1110e0dac50fSopenharmony_ci * @tc.type: FUNC
1111e0dac50fSopenharmony_ci */
1112e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RemoveSingleUserWindowNodes, Function | SmallTest | Level2)
1113e0dac50fSopenharmony_ci{
1114e0dac50fSopenharmony_ci    int accountId = 1;
1115e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1116e0dac50fSopenharmony_ci    windowRoot_->RemoveSingleUserWindowNodes(accountId);
1117e0dac50fSopenharmony_ci}
1118e0dac50fSopenharmony_ci
1119e0dac50fSopenharmony_ci/**
1120e0dac50fSopenharmony_ci * @tc.name: TakeWindowPairSnapshot
1121e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot TakeWindowPairSnapshot
1122e0dac50fSopenharmony_ci * @tc.type: FUNC
1123e0dac50fSopenharmony_ci */
1124e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, TakeWindowPairSnapshot, Function | SmallTest | Level2)
1125e0dac50fSopenharmony_ci{
1126e0dac50fSopenharmony_ci    DisplayId displayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1127e0dac50fSopenharmony_ci    bool flag = windowRoot_->TakeWindowPairSnapshot(displayId);
1128e0dac50fSopenharmony_ci    ASSERT_EQ(false, flag);
1129e0dac50fSopenharmony_ci}
1130e0dac50fSopenharmony_ci
1131e0dac50fSopenharmony_ci/**
1132e0dac50fSopenharmony_ci * @tc.name: ClearWindowPairSnapshot
1133e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ClearWindowPairSnapshot
1134e0dac50fSopenharmony_ci * @tc.type: FUNC
1135e0dac50fSopenharmony_ci */
1136e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ClearWindowPairSnapshot, Function | SmallTest | Level2)
1137e0dac50fSopenharmony_ci{
1138e0dac50fSopenharmony_ci    DisplayId displayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1139e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1140e0dac50fSopenharmony_ci    windowRoot_->ClearWindowPairSnapshot(displayId);
1141e0dac50fSopenharmony_ci}
1142e0dac50fSopenharmony_ci
1143e0dac50fSopenharmony_ci/**
1144e0dac50fSopenharmony_ci * @tc.name: CheckAddingModeAndSize01
1145e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot CheckAddingModeAndSize01
1146e0dac50fSopenharmony_ci * @tc.type: FUNC
1147e0dac50fSopenharmony_ci */
1148e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, CheckAddingModeAndSize01, Function | SmallTest | Level2)
1149e0dac50fSopenharmony_ci{
1150e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1151e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_SUB_WINDOW_BASE);
1152e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container;
1153e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1154e0dac50fSopenharmony_ci    windowRoot_->CheckAddingModeAndSize(node, container);
1155e0dac50fSopenharmony_ci}
1156e0dac50fSopenharmony_ci
1157e0dac50fSopenharmony_ci/**
1158e0dac50fSopenharmony_ci * @tc.name: CheckAddingModeAndSize02
1159e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot CheckAddingModeAndSize02
1160e0dac50fSopenharmony_ci * @tc.type: FUNC
1161e0dac50fSopenharmony_ci */
1162e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, CheckAddingModeAndSize02, Function | SmallTest | Level2)
1163e0dac50fSopenharmony_ci{
1164e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1165e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE);
1166e0dac50fSopenharmony_ci    sptr<Display> defaultDisplay_ = DisplayManager::GetInstance().GetDefaultDisplay();
1167e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(
1168e0dac50fSopenharmony_ci        defaultDisplay_->GetDisplayInfo(), defaultDisplay_->GetScreenId());
1169e0dac50fSopenharmony_ci    container->layoutMode_ = WindowLayoutMode::TILE;
1170e0dac50fSopenharmony_ci    node->property_->SetModeSupportInfo(0);
1171e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1172e0dac50fSopenharmony_ci    windowRoot_->CheckAddingModeAndSize(node, container);
1173e0dac50fSopenharmony_ci}
1174e0dac50fSopenharmony_ci
1175e0dac50fSopenharmony_ci/**
1176e0dac50fSopenharmony_ci * @tc.name: CheckAddingModeAndSize03
1177e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot CheckAddingModeAndSize03
1178e0dac50fSopenharmony_ci * @tc.type: FUNC
1179e0dac50fSopenharmony_ci */
1180e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, CheckAddingModeAndSize03, Function | SmallTest | Level2)
1181e0dac50fSopenharmony_ci{
1182e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1183e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE);
1184e0dac50fSopenharmony_ci    sptr<Display> defaultDisplay_ = DisplayManager::GetInstance().GetDefaultDisplay();
1185e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(
1186e0dac50fSopenharmony_ci        defaultDisplay_->GetDisplayInfo(), defaultDisplay_->GetScreenId());
1187e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1188e0dac50fSopenharmony_ci    windowRoot_->CheckAddingModeAndSize(node, container);
1189e0dac50fSopenharmony_ci}
1190e0dac50fSopenharmony_ci
1191e0dac50fSopenharmony_ci/**
1192e0dac50fSopenharmony_ci * @tc.name: GetDisplayRectWithoutSystemBarAreas
1193e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetDisplayRectWithoutSystemBarAreas
1194e0dac50fSopenharmony_ci * @tc.type: FUNC
1195e0dac50fSopenharmony_ci */
1196e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetDisplayRectWithoutSystemBarAreas, Function | SmallTest | Level2)
1197e0dac50fSopenharmony_ci{
1198e0dac50fSopenharmony_ci    sptr<WindowNode> dstNode = new WindowNode();
1199e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1200e0dac50fSopenharmony_ci    windowRoot_->GetDisplayRectWithoutSystemBarAreas(dstNode);
1201e0dac50fSopenharmony_ci}
1202e0dac50fSopenharmony_ci
1203e0dac50fSopenharmony_ci/**
1204e0dac50fSopenharmony_ci * @tc.name: AddWindowNode01
1205e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot AddWindowNode01
1206e0dac50fSopenharmony_ci * @tc.type: FUNC
1207e0dac50fSopenharmony_ci */
1208e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, AddWindowNode01, Function | SmallTest | Level2)
1209e0dac50fSopenharmony_ci{
1210e0dac50fSopenharmony_ci    WMError ret;
1211e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1212e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_SUB_WINDOW_BASE);
1213e0dac50fSopenharmony_ci
1214e0dac50fSopenharmony_ci    ret = windowRoot_->AddWindowNode(INVALID_WINDOW_ID, node, true);
1215e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
1216e0dac50fSopenharmony_ci}
1217e0dac50fSopenharmony_ci
1218e0dac50fSopenharmony_ci/**
1219e0dac50fSopenharmony_ci * @tc.name: RemoveWindowNode01
1220e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RemoveWindowNode01
1221e0dac50fSopenharmony_ci * @tc.type: FUNC
1222e0dac50fSopenharmony_ci */
1223e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RemoveWindowNode01, Function | SmallTest | Level2)
1224e0dac50fSopenharmony_ci{
1225e0dac50fSopenharmony_ci    uint32_t windowId = 10;
1226e0dac50fSopenharmony_ci    WMError ret = windowRoot_->RemoveWindowNode(windowId, true);
1227e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_NULLPTR);
1228e0dac50fSopenharmony_ci}
1229e0dac50fSopenharmony_ci
1230e0dac50fSopenharmony_ci/**
1231e0dac50fSopenharmony_ci * @tc.name: SetBrightness01
1232e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetBrightness01
1233e0dac50fSopenharmony_ci * @tc.type: FUNC
1234e0dac50fSopenharmony_ci */
1235e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetBrightness01, Function | SmallTest | Level2)
1236e0dac50fSopenharmony_ci{
1237e0dac50fSopenharmony_ci    windowRoot_->SetBrightness(INVALID_WINDOW_ID, 0);
1238e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1239e0dac50fSopenharmony_ci    node->SetDisplayId(0);
1240e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE);
1241e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetDisplayId(), node));
1242e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1243e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1244e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1245e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
1246e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1247e0dac50fSopenharmony_ci    windowRoot_->SetBrightness(node->GetDisplayId(), 0);
1248e0dac50fSopenharmony_ci}
1249e0dac50fSopenharmony_ci
1250e0dac50fSopenharmony_ci/**
1251e0dac50fSopenharmony_ci * @tc.name: SetBrightness02
1252e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetBrightness02
1253e0dac50fSopenharmony_ci * @tc.type: FUNC
1254e0dac50fSopenharmony_ci */
1255e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetBrightness02, Function | SmallTest | Level2)
1256e0dac50fSopenharmony_ci{
1257e0dac50fSopenharmony_ci    windowRoot_->SetBrightness(INVALID_WINDOW_ID, 0);
1258e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1259e0dac50fSopenharmony_ci    node->SetDisplayId(0);
1260e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::SYSTEM_WINDOW_BASE);
1261e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetDisplayId(), node));
1262e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1263e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1264e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1265e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
1266e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1267e0dac50fSopenharmony_ci    windowRoot_->SetBrightness(node->GetDisplayId(), 0);
1268e0dac50fSopenharmony_ci}
1269e0dac50fSopenharmony_ci
1270e0dac50fSopenharmony_ci/**
1271e0dac50fSopenharmony_ci * @tc.name: HandleKeepScreenOn01
1272e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot HandleKeepScreenOn01
1273e0dac50fSopenharmony_ci * @tc.type: FUNC
1274e0dac50fSopenharmony_ci */
1275e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, HandleKeepScreenOn01, Function | SmallTest | Level2)
1276e0dac50fSopenharmony_ci{
1277e0dac50fSopenharmony_ci    uint32_t windowId = 1;
1278e0dac50fSopenharmony_ci    bool requireLock = false;
1279e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1280e0dac50fSopenharmony_ci    windowRoot_->HandleKeepScreenOn(windowId, requireLock);
1281e0dac50fSopenharmony_ci}
1282e0dac50fSopenharmony_ci
1283e0dac50fSopenharmony_ci/**
1284e0dac50fSopenharmony_ci * @tc.name: UpdateFocusableProperty01
1285e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateFocusableProperty01
1286e0dac50fSopenharmony_ci * @tc.type: FUNC
1287e0dac50fSopenharmony_ci */
1288e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateFocusableProperty01, Function | SmallTest | Level2)
1289e0dac50fSopenharmony_ci{
1290e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1291e0dac50fSopenharmony_ci    windowNode->SetDisplayId(0);
1292e0dac50fSopenharmony_ci    windowNode->property_->SetWindowId(0);
1293e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetDisplayId(), windowNode));
1294e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1295e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1296e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1297e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1298e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1299e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1300e0dac50fSopenharmony_ci    windowRoot_->UpdateFocusableProperty(windowNode->GetWindowId());
1301e0dac50fSopenharmony_ci}
1302e0dac50fSopenharmony_ci
1303e0dac50fSopenharmony_ci/**
1304e0dac50fSopenharmony_ci * @tc.name: SetWindowMode01
1305e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetWindowMode01
1306e0dac50fSopenharmony_ci * @tc.type: FUNC
1307e0dac50fSopenharmony_ci */
1308e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetWindowMode01, Function | SmallTest | Level2)
1309e0dac50fSopenharmony_ci{
1310e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1311e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1312e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1313e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1314e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
1315e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1316e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1317e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1318e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(node->GetDisplayId(), displayVec));
1319e0dac50fSopenharmony_ci    WindowMode dstMode = WindowMode::WINDOW_MODE_UNDEFINED;
1320e0dac50fSopenharmony_ci    auto ret = windowRoot_->SetWindowMode(node, dstMode);
1321e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
1322e0dac50fSopenharmony_ci    node->SetWindowMode(dstMode);
1323e0dac50fSopenharmony_ci    ret = windowRoot_->SetWindowMode(node, dstMode);
1324e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
1325e0dac50fSopenharmony_ci}
1326e0dac50fSopenharmony_ci
1327e0dac50fSopenharmony_ci/**
1328e0dac50fSopenharmony_ci * @tc.name: DestroyWindowSelf01
1329e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot DestroyWindowSelf01
1330e0dac50fSopenharmony_ci * @tc.type: FUNC
1331e0dac50fSopenharmony_ci */
1332e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, DestroyWindowSelf01, Function | SmallTest | Level2)
1333e0dac50fSopenharmony_ci{
1334e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1335e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1336e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1337e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1338e0dac50fSopenharmony_ci    node->property_->SetWindowId(0);
1339e0dac50fSopenharmony_ci    sptr<WindowNode> node1 = new WindowNode();
1340e0dac50fSopenharmony_ci    sptr<IRemoteObject> iRemoteObjectMocker = new IRemoteObjectMocker();
1341e0dac50fSopenharmony_ci    sptr<IWindow> iWindow = iface_cast<IWindow>(iRemoteObjectMocker);
1342e0dac50fSopenharmony_ci    node1->SetWindowToken(iWindow);
1343e0dac50fSopenharmony_ci    node1->property_->SetWindowId(1);
1344e0dac50fSopenharmony_ci    node->abilityToken_ = new (std::nothrow) IRemoteObjectMocker();
1345e0dac50fSopenharmony_ci    node1->abilityToken_ = new (std::nothrow) IRemoteObjectMocker();
1346e0dac50fSopenharmony_ci    node1->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG);
1347e0dac50fSopenharmony_ci    node->children_.push_back(node1);
1348e0dac50fSopenharmony_ci    auto ret = windowRoot_->DestroyWindowSelf(node, container);
1349e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_OK);
1350e0dac50fSopenharmony_ci}
1351e0dac50fSopenharmony_ci
1352e0dac50fSopenharmony_ci/**
1353e0dac50fSopenharmony_ci * @tc.name: DestroyWindow
1354e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot DestroyWindow
1355e0dac50fSopenharmony_ci * @tc.type: FUNC
1356e0dac50fSopenharmony_ci */
1357e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, DestroyWindow, Function | SmallTest | Level2)
1358e0dac50fSopenharmony_ci{
1359e0dac50fSopenharmony_ci    uint32_t windowId = 1;
1360e0dac50fSopenharmony_ci    bool onlySelf = false;
1361e0dac50fSopenharmony_ci    auto ret = windowRoot_->DestroyWindow(windowId, onlySelf);
1362e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_NULLPTR);
1363e0dac50fSopenharmony_ci}
1364e0dac50fSopenharmony_ci
1365e0dac50fSopenharmony_ci/**
1366e0dac50fSopenharmony_ci * @tc.name: UpdateFocusWindowWithWindowRemoved01
1367e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateFocusWindowWithWindowRemoved01
1368e0dac50fSopenharmony_ci * @tc.type: FUNC
1369e0dac50fSopenharmony_ci */
1370e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateFocusWindowWithWindowRemoved01, Function | SmallTest | Level2)
1371e0dac50fSopenharmony_ci{
1372e0dac50fSopenharmony_ci    sptr<WindowNode> node = nullptr;
1373e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = nullptr;
1374e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1375e0dac50fSopenharmony_ci    windowRoot_->UpdateFocusWindowWithWindowRemoved(node, container);
1376e0dac50fSopenharmony_ci}
1377e0dac50fSopenharmony_ci
1378e0dac50fSopenharmony_ci/**
1379e0dac50fSopenharmony_ci * @tc.name: UpdateFocusWindowWithWindowRemoved02
1380e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateFocusWindowWithWindowRemoved02
1381e0dac50fSopenharmony_ci * @tc.type: FUNC
1382e0dac50fSopenharmony_ci */
1383e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateFocusWindowWithWindowRemoved02, Function | SmallTest | Level2)
1384e0dac50fSopenharmony_ci{
1385e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1386e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE);
1387e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1388e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1389e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1390e0dac50fSopenharmony_ci    windowRoot_->UpdateFocusWindowWithWindowRemoved(node, container);
1391e0dac50fSopenharmony_ci
1392e0dac50fSopenharmony_ci    node->property_->SetWindowId(1);
1393e0dac50fSopenharmony_ci    sptr<WindowNode> node1 = new WindowNode();
1394e0dac50fSopenharmony_ci    node->children_.push_back(node1);
1395e0dac50fSopenharmony_ci    container->SetFocusWindow(1);
1396e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1397e0dac50fSopenharmony_ci    windowRoot_->UpdateFocusWindowWithWindowRemoved(node, container);
1398e0dac50fSopenharmony_ci}
1399e0dac50fSopenharmony_ci
1400e0dac50fSopenharmony_ci/**
1401e0dac50fSopenharmony_ci * @tc.name: UpdateBrightnessWithWindowRemoved
1402e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateBrightnessWithWindowRemoved
1403e0dac50fSopenharmony_ci * @tc.type: FUNC
1404e0dac50fSopenharmony_ci */
1405e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateBrightnessWithWindowRemoved, Function | SmallTest | Level2)
1406e0dac50fSopenharmony_ci{
1407e0dac50fSopenharmony_ci    uint32_t windowId = 1;
1408e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container;
1409e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1410e0dac50fSopenharmony_ci    windowRoot_->UpdateBrightnessWithWindowRemoved(windowId, container);
1411e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1412e0dac50fSopenharmony_ci    container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1413e0dac50fSopenharmony_ci    container->SetBrightnessWindow(windowId);
1414e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1415e0dac50fSopenharmony_ci    windowRoot_->UpdateBrightnessWithWindowRemoved(windowId, container);
1416e0dac50fSopenharmony_ci}
1417e0dac50fSopenharmony_ci
1418e0dac50fSopenharmony_ci/**
1419e0dac50fSopenharmony_ci * @tc.name: IsVerticalDisplay01
1420e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot IsVerticalDisplay01
1421e0dac50fSopenharmony_ci * @tc.type: FUNC
1422e0dac50fSopenharmony_ci */
1423e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, IsVerticalDisplay01, Function | SmallTest | Level2)
1424e0dac50fSopenharmony_ci{
1425e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1426e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1427e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1428e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
1429e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1430e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1431e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1432e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(node->GetDisplayId(), displayVec));
1433e0dac50fSopenharmony_ci    ASSERT_EQ(true, windowRoot_->IsVerticalDisplay(node));
1434e0dac50fSopenharmony_ci}
1435e0dac50fSopenharmony_ci
1436e0dac50fSopenharmony_ci/**
1437e0dac50fSopenharmony_ci * @tc.name: RequestFocus01
1438e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RequestFocus01
1439e0dac50fSopenharmony_ci * @tc.type: FUNC
1440e0dac50fSopenharmony_ci */
1441e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RequestFocus01, Function | SmallTest | Level2)
1442e0dac50fSopenharmony_ci{
1443e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1444e0dac50fSopenharmony_ci    windowNode->currentVisibility_ = true;
1445e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1446e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1447e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1448e0dac50fSopenharmony_ci    windowNode->property_->SetFocusable(true);
1449e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1450e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1451e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1452e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1453e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1454e0dac50fSopenharmony_ci    auto ret = windowRoot_->RequestFocus(windowNode->GetWindowId());
1455e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_DO_NOTHING, ret);
1456e0dac50fSopenharmony_ci    windowNode->property_->SetFocusable(false);
1457e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1458e0dac50fSopenharmony_ci    ret = windowRoot_->RequestFocus(windowNode->GetWindowId());
1459e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, ret);
1460e0dac50fSopenharmony_ci}
1461e0dac50fSopenharmony_ci
1462e0dac50fSopenharmony_ci/**
1463e0dac50fSopenharmony_ci * @tc.name: RequestActiveWindow01
1464e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RequestActiveWindow01
1465e0dac50fSopenharmony_ci * @tc.type: FUNC
1466e0dac50fSopenharmony_ci */
1467e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RequestActiveWindow01, Function | SmallTest | Level2)
1468e0dac50fSopenharmony_ci{
1469e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1470e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::WINDOW_TYPE_STATUS_BAR);
1471e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1472e0dac50fSopenharmony_ci    auto ret = windowRoot_->RequestActiveWindow(windowNode->GetWindowId());
1473e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_TYPE, ret);
1474e0dac50fSopenharmony_ci}
1475e0dac50fSopenharmony_ci
1476e0dac50fSopenharmony_ci/**
1477e0dac50fSopenharmony_ci * @tc.name: RequestActiveWindow02
1478e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RequestActiveWindow02
1479e0dac50fSopenharmony_ci * @tc.type: FUNC
1480e0dac50fSopenharmony_ci */
1481e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RequestActiveWindow02, Function | SmallTest | Level2)
1482e0dac50fSopenharmony_ci{
1483e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1484e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE);
1485e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1486e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1487e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1488e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1489e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1490e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1491e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1492e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1493e0dac50fSopenharmony_ci    auto ret = windowRoot_->RequestActiveWindow(windowNode->GetWindowId());
1494e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_DO_NOTHING, ret);
1495e0dac50fSopenharmony_ci}
1496e0dac50fSopenharmony_ci
1497e0dac50fSopenharmony_ci/**
1498e0dac50fSopenharmony_ci * @tc.name: ProcessWindowStateChange01
1499e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessWindowStateChange01
1500e0dac50fSopenharmony_ci * @tc.type: FUNC
1501e0dac50fSopenharmony_ci */
1502e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessWindowStateChange01, Function | SmallTest | Level2)
1503e0dac50fSopenharmony_ci{
1504e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1505e0dac50fSopenharmony_ci    WindowState state = WindowState::STATE_INITIAL;
1506e0dac50fSopenharmony_ci    WindowStateChangeReason reason = WindowStateChangeReason::NORMAL;
1507e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1508e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1509e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1510e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1511e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1512e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1513e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1514e0dac50fSopenharmony_ci    windowRoot_->ProcessWindowStateChange(state, reason);
1515e0dac50fSopenharmony_ci    ASSERT_EQ(reason, WindowStateChangeReason::NORMAL);
1516e0dac50fSopenharmony_ci}
1517e0dac50fSopenharmony_ci
1518e0dac50fSopenharmony_ci/**
1519e0dac50fSopenharmony_ci * @tc.name: FindWallpaperWindow
1520e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot FindWallpaperWindow
1521e0dac50fSopenharmony_ci * @tc.type: FUNC
1522e0dac50fSopenharmony_ci */
1523e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, FindWallpaperWindow, Function | SmallTest | Level2)
1524e0dac50fSopenharmony_ci{
1525e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1526e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::WINDOW_TYPE_WALLPAPER);
1527e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1528e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1529e0dac50fSopenharmony_ci    windowRoot_->FindWallpaperWindow();
1530e0dac50fSopenharmony_ci}
1531e0dac50fSopenharmony_ci
1532e0dac50fSopenharmony_ci/**
1533e0dac50fSopenharmony_ci * @tc.name: RaiseZOrderForAppWindow01
1534e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RaiseZOrderForAppWindow01
1535e0dac50fSopenharmony_ci * @tc.type: FUNC
1536e0dac50fSopenharmony_ci */
1537e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RaiseZOrderForAppWindow01, Function | SmallTest | Level2)
1538e0dac50fSopenharmony_ci{
1539e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1540e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE);
1541e0dac50fSopenharmony_ci    auto ret = windowRoot_->RaiseZOrderForAppWindow(windowNode);
1542e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
1543e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1544e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1545e0dac50fSopenharmony_ci    windowNode->property_->SetFocusable(true);
1546e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1547e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1548e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1549e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1550e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1551e0dac50fSopenharmony_ci    ret = windowRoot_->RaiseZOrderForAppWindow(windowNode);
1552e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_OK, ret);
1553e0dac50fSopenharmony_ci}
1554e0dac50fSopenharmony_ci
1555e0dac50fSopenharmony_ci/**
1556e0dac50fSopenharmony_ci * @tc.name: RaiseZOrderForAppWindow02
1557e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RaiseZOrderForAppWindow02
1558e0dac50fSopenharmony_ci * @tc.type: FUNC
1559e0dac50fSopenharmony_ci */
1560e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RaiseZOrderForAppWindow02, Function | SmallTest | Level2)
1561e0dac50fSopenharmony_ci{
1562e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1563e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG);
1564e0dac50fSopenharmony_ci    auto ret = windowRoot_->RaiseZOrderForAppWindow(windowNode);
1565e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
1566e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1567e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1568e0dac50fSopenharmony_ci    windowNode->property_->SetFocusable(true);
1569e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1570e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1571e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1572e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1573e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1574e0dac50fSopenharmony_ci    ret = windowRoot_->RaiseZOrderForAppWindow(windowNode);
1575e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_OK, ret);
1576e0dac50fSopenharmony_ci}
1577e0dac50fSopenharmony_ci
1578e0dac50fSopenharmony_ci/**
1579e0dac50fSopenharmony_ci * @tc.name: RaiseZOrderForAppWindow03
1580e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot RaiseZOrderForAppWindow03
1581e0dac50fSopenharmony_ci * @tc.type: FUNC
1582e0dac50fSopenharmony_ci */
1583e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, RaiseZOrderForAppWindow03, Function | SmallTest | Level2)
1584e0dac50fSopenharmony_ci{
1585e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1586e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::WINDOW_TYPE_FLOAT);
1587e0dac50fSopenharmony_ci    auto ret = windowRoot_->RaiseZOrderForAppWindow(windowNode);
1588e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_TYPE, ret);
1589e0dac50fSopenharmony_ci}
1590e0dac50fSopenharmony_ci
1591e0dac50fSopenharmony_ci/**
1592e0dac50fSopenharmony_ci * @tc.name: DispatchKeyEvent01
1593e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot DispatchKeyEvent01
1594e0dac50fSopenharmony_ci * @tc.type: FUNC
1595e0dac50fSopenharmony_ci */
1596e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, DispatchKeyEvent01, Function | SmallTest | Level2)
1597e0dac50fSopenharmony_ci{
1598e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1599e0dac50fSopenharmony_ci    std::shared_ptr<MMI::KeyEvent> event = nullptr;
1600e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1601e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1602e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1603e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1604e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1605e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1606e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1607e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1608e0dac50fSopenharmony_ci    windowRoot_->DispatchKeyEvent(windowNode, event);
1609e0dac50fSopenharmony_ci}
1610e0dac50fSopenharmony_ci
1611e0dac50fSopenharmony_ci/**
1612e0dac50fSopenharmony_ci * @tc.name: GetTopWindowId01
1613e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetTopWindowId01
1614e0dac50fSopenharmony_ci * @tc.type: FUNC
1615e0dac50fSopenharmony_ci */
1616e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetTopWindowId01, Function | SmallTest | Level2)
1617e0dac50fSopenharmony_ci{
1618e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode1 = new WindowNode();
1619e0dac50fSopenharmony_ci    windowNode1->currentVisibility_ = false;
1620e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode1);
1621e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode1->GetWindowId(), windowNode1));
1622e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode2 = new WindowNode();
1623e0dac50fSopenharmony_ci    windowNode2->currentVisibility_ = true;
1624e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode2);
1625e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode2->GetWindowId(), windowNode2));
1626e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode3 = new WindowNode();
1627e0dac50fSopenharmony_ci    windowNode3->currentVisibility_ = true;
1628e0dac50fSopenharmony_ci    windowNode3->children_.push_back(windowNode2);
1629e0dac50fSopenharmony_ci    windowRoot_->SaveWindow(windowNode3);
1630e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode3->GetWindowId(), windowNode3));
1631e0dac50fSopenharmony_ci    uint32_t topWinId = windowNode1->GetWindowId();
1632e0dac50fSopenharmony_ci    auto ret = windowRoot_->GetTopWindowId(windowNode3->GetWindowId(), topWinId);
1633e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_WINDOW, ret);
1634e0dac50fSopenharmony_ci    ret = windowRoot_->GetTopWindowId(windowNode1->GetWindowId(), topWinId);
1635e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_WINDOW, ret);
1636e0dac50fSopenharmony_ci    ret = windowRoot_->GetTopWindowId(windowNode2->GetWindowId(), topWinId);
1637e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_INVALID_WINDOW, ret);
1638e0dac50fSopenharmony_ci}
1639e0dac50fSopenharmony_ci
1640e0dac50fSopenharmony_ci/**
1641e0dac50fSopenharmony_ci * @tc.name: SetWindowLayoutMode01
1642e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot SetWindowLayoutMode01
1643e0dac50fSopenharmony_ci * @tc.type: FUNC
1644e0dac50fSopenharmony_ci */
1645e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, SetWindowLayoutMode01, Function | SmallTest | Level2)
1646e0dac50fSopenharmony_ci{
1647e0dac50fSopenharmony_ci    WindowLayoutMode mode = WindowLayoutMode::BASE;
1648e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1649e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1650e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1651e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1652e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1653e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1654e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1655e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1656e0dac50fSopenharmony_ci    auto ret = windowRoot_->SetWindowLayoutMode(windowNode->GetDisplayId(), mode);
1657e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_OK, ret);
1658e0dac50fSopenharmony_ci}
1659e0dac50fSopenharmony_ci
1660e0dac50fSopenharmony_ci/**
1661e0dac50fSopenharmony_ci * @tc.name: GetAllDisplayRectsByDMS
1662e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetAllDisplayRectsByDMS
1663e0dac50fSopenharmony_ci * @tc.type: FUNC
1664e0dac50fSopenharmony_ci */
1665e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetAllDisplayRectsByDMS, Function | SmallTest | Level2)
1666e0dac50fSopenharmony_ci{
1667e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
1668e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1669e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1670e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
1671e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1672e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1673e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1674e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(displayGroupId, displayVec));
1675e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1676e0dac50fSopenharmony_ci    windowRoot_->GetAllDisplayRectsByDMS(displayInfo);
1677e0dac50fSopenharmony_ci}
1678e0dac50fSopenharmony_ci
1679e0dac50fSopenharmony_ci/**
1680e0dac50fSopenharmony_ci * @tc.name: MoveNotShowingWindowToDefaultDisplay01
1681e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot MoveNotShowingWindowToDefaultDisplay01
1682e0dac50fSopenharmony_ci * @tc.type: FUNC
1683e0dac50fSopenharmony_ci */
1684e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, MoveNotShowingWindowToDefaultDisplay01, Function | SmallTest | Level2)
1685e0dac50fSopenharmony_ci{
1686e0dac50fSopenharmony_ci    DisplayId defaultDisplayId = DisplayGroupInfo::GetInstance().GetDefaultDisplayId();
1687e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1688e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1689e0dac50fSopenharmony_ci    sptr<IRemoteObject> iRemoteObjectMocker = new IRemoteObjectMocker();
1690e0dac50fSopenharmony_ci    sptr<IWindow> iWindow = iface_cast<IWindow>(iRemoteObjectMocker);
1691e0dac50fSopenharmony_ci    node->SetWindowToken(iWindow);
1692e0dac50fSopenharmony_ci    node->currentVisibility_ = false;
1693e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(node->GetWindowId(), node));
1694e0dac50fSopenharmony_ci    windowRoot_->MoveNotShowingWindowToDefaultDisplay(defaultDisplayId, node->GetDisplayId());
1695e0dac50fSopenharmony_ci}
1696e0dac50fSopenharmony_ci
1697e0dac50fSopenharmony_ci/**
1698e0dac50fSopenharmony_ci * @tc.name: ProcessDisplayDestroy01
1699e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot ProcessDisplayDestroy01
1700e0dac50fSopenharmony_ci * @tc.type: FUNC
1701e0dac50fSopenharmony_ci */
1702e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, ProcessDisplayDestroy01, Function | SmallTest | Level2)
1703e0dac50fSopenharmony_ci{
1704e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1705e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1706e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1707e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1708e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1709e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1710e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1711e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1712e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1713e0dac50fSopenharmony_ci    std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap;
1714e0dac50fSopenharmony_ci    displayInfoMap.insert(std::make_pair(windowNode->GetDisplayId(), display->GetDisplayInfo()));
1715e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1716e0dac50fSopenharmony_ci    windowRoot_->ProcessDisplayDestroy(windowNode->GetDisplayId(), display->GetDisplayInfo(), displayInfoMap);
1717e0dac50fSopenharmony_ci}
1718e0dac50fSopenharmony_ci
1719e0dac50fSopenharmony_ci/**
1720e0dac50fSopenharmony_ci * @tc.name: GetDisplayGroupRect
1721e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetDisplayGroupRect,HasPrivateWindow,HasMainFullScreenWindowShown
1722e0dac50fSopenharmony_ci * @tc.type: FUNC
1723e0dac50fSopenharmony_ci */
1724e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetDisplayGroupRect01, Function | SmallTest | Level2)
1725e0dac50fSopenharmony_ci{
1726e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1727e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1728e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1729e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1730e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1731e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1732e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1733e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1734e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1735e0dac50fSopenharmony_ci    windowRoot_->GetDisplayGroupRect(windowNode->GetDisplayId());
1736e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1737e0dac50fSopenharmony_ci    windowRoot_->HasPrivateWindow(windowNode->GetDisplayId());
1738e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1739e0dac50fSopenharmony_ci    windowRoot_->HasMainFullScreenWindowShown(windowNode->GetDisplayId());
1740e0dac50fSopenharmony_ci}
1741e0dac50fSopenharmony_ci
1742e0dac50fSopenharmony_ci/**
1743e0dac50fSopenharmony_ci * @tc.name: UpdateRsTree
1744e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateRsTree
1745e0dac50fSopenharmony_ci * @tc.type: FUNC
1746e0dac50fSopenharmony_ci */
1747e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateRsTree, Function | SmallTest | Level2)
1748e0dac50fSopenharmony_ci{
1749e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1750e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1751e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1752e0dac50fSopenharmony_ci    auto res = windowRoot_->UpdateRsTree(windowNode->GetWindowId(), true);
1753e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res);
1754e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1755e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1756e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(windowNode->GetDisplayId(), container));
1757e0dac50fSopenharmony_ci    sptr<DisplayInfo> displayInfo = display->GetDisplayInfo();
1758e0dac50fSopenharmony_ci    DisplayId displayId = displayInfo->GetDisplayId();
1759e0dac50fSopenharmony_ci    std::vector<DisplayId> displayVec = { displayId };
1760e0dac50fSopenharmony_ci    windowRoot_->displayIdMap_.insert(std::make_pair(windowNode->GetDisplayId(), displayVec));
1761e0dac50fSopenharmony_ci    res = windowRoot_->UpdateRsTree(windowNode->GetWindowId(), true);
1762e0dac50fSopenharmony_ci    ASSERT_EQ(WMError::WM_OK, res);
1763e0dac50fSopenharmony_ci}
1764e0dac50fSopenharmony_ci
1765e0dac50fSopenharmony_ci/**
1766e0dac50fSopenharmony_ci * @tc.name: CheckMultiDialogWindows
1767e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot CheckMultiDialogWindows
1768e0dac50fSopenharmony_ci * @tc.type: FUNC
1769e0dac50fSopenharmony_ci */
1770e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, CheckMultiDialogWindows, Function | SmallTest | Level2)
1771e0dac50fSopenharmony_ci{
1772e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1773e0dac50fSopenharmony_ci    windowNode->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG);
1774e0dac50fSopenharmony_ci    windowNode->abilityToken_ = new IRemoteObjectMocker();
1775e0dac50fSopenharmony_ci    auto res = windowRoot_->CheckMultiDialogWindows(WindowType::WINDOW_TYPE_DIALOG, windowNode->abilityToken_);
1776e0dac50fSopenharmony_ci    ASSERT_EQ(false, res);
1777e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode));
1778e0dac50fSopenharmony_ci    res = windowRoot_->CheckMultiDialogWindows(WindowType::WINDOW_TYPE_DIALOG, windowNode->abilityToken_);
1779e0dac50fSopenharmony_ci    ASSERT_EQ(false, res);
1780e0dac50fSopenharmony_ci}
1781e0dac50fSopenharmony_ci
1782e0dac50fSopenharmony_ci
1783e0dac50fSopenharmony_ci/**
1784e0dac50fSopenharmony_ci * @tc.name: GetSplitScreenWindowNodes
1785e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetSplitScreenWindowNodes
1786e0dac50fSopenharmony_ci * @tc.type: FUNC
1787e0dac50fSopenharmony_ci */
1788e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetSplitScreenWindowNodes, Function | SmallTest | Level2)
1789e0dac50fSopenharmony_ci{
1790e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
1791e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1792e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1793e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1794e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
1795e0dac50fSopenharmony_ci    std::vector<sptr<WindowNode>> windowNodes = windowRoot_->GetSplitScreenWindowNodes(DISPLAY_ID_INVALID);
1796e0dac50fSopenharmony_ci    ASSERT_EQ(windowNodes.empty(), true);
1797e0dac50fSopenharmony_ci    windowNodes = windowRoot_->GetSplitScreenWindowNodes(displayGroupId);
1798e0dac50fSopenharmony_ci    ASSERT_EQ(windowNodes.empty(), true);
1799e0dac50fSopenharmony_ci}
1800e0dac50fSopenharmony_ci
1801e0dac50fSopenharmony_ci/**
1802e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove01
1803e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot IsForbidDockSliceMove01
1804e0dac50fSopenharmony_ci * @tc.type: FUNC
1805e0dac50fSopenharmony_ci */
1806e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, IsForbidDockSliceMove01, Function | SmallTest | Level2)
1807e0dac50fSopenharmony_ci{
1808e0dac50fSopenharmony_ci    ScreenId displayGroupId = 1;
1809e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1810e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1811e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1812e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(displayGroupId, container));
1813e0dac50fSopenharmony_ci    bool ret = windowRoot_->IsForbidDockSliceMove(displayGroupId);
1814e0dac50fSopenharmony_ci    ASSERT_EQ(ret, true);
1815e0dac50fSopenharmony_ci    ret = windowRoot_->IsDockSliceInExitSplitModeArea(displayGroupId);
1816e0dac50fSopenharmony_ci    ASSERT_EQ(ret, false);
1817e0dac50fSopenharmony_ci    windowRoot_->ExitSplitMode(displayGroupId);
1818e0dac50fSopenharmony_ci}
1819e0dac50fSopenharmony_ci
1820e0dac50fSopenharmony_ci/**
1821e0dac50fSopenharmony_ci * @tc.name: GetVisibilityWindowInfo01
1822e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetVisibilityWindowInfo01
1823e0dac50fSopenharmony_ci * @tc.type: FUNC
1824e0dac50fSopenharmony_ci */
1825e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetVisibilityWindowInfo01, Function | SmallTest | Level2)
1826e0dac50fSopenharmony_ci{
1827e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1828e0dac50fSopenharmony_ci    windowRoot_->AddSurfaceNodeIdWindowNodePair(node->GetDisplayId(), node);
1829e0dac50fSopenharmony_ci    std::vector<sptr<WindowVisibilityInfo>> infos = {};
1830e0dac50fSopenharmony_ci    windowRoot_->lastVisibleData_.clear();
1831e0dac50fSopenharmony_ci    windowRoot_->lastVisibleData_.emplace_back(node->GetDisplayId(), WINDOW_VISIBILITY_STATE_NO_OCCLUSION);
1832e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1833e0dac50fSopenharmony_ci    windowRoot_->GetVisibilityWindowInfo(infos);
1834e0dac50fSopenharmony_ci}
1835e0dac50fSopenharmony_ci
1836e0dac50fSopenharmony_ci/**
1837e0dac50fSopenharmony_ci * @tc.name: GetUnreliableWindowInfo
1838e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot GetUnreliableWindowInfo
1839e0dac50fSopenharmony_ci * @tc.type: FUNC
1840e0dac50fSopenharmony_ci */
1841e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, GetUnreliableWindowInfo, Function | SmallTest | Level2)
1842e0dac50fSopenharmony_ci{
1843e0dac50fSopenharmony_ci    int32_t windowId = 0;
1844e0dac50fSopenharmony_ci    sptr<WindowNode> windowNode = new WindowNode();
1845e0dac50fSopenharmony_ci    ASSERT_NE(windowNode, nullptr);
1846e0dac50fSopenharmony_ci    windowId = windowNode->GetWindowId();
1847e0dac50fSopenharmony_ci    windowRoot_->windowNodeMap_.insert(std::make_pair(windowId, windowNode));
1848e0dac50fSopenharmony_ci    ASSERT_NE(windowRoot_, nullptr);
1849e0dac50fSopenharmony_ci    std::vector<sptr<UnreliableWindowInfo>> infos;
1850e0dac50fSopenharmony_ci    windowRoot_->GetUnreliableWindowInfo(windowId, infos);
1851e0dac50fSopenharmony_ci}
1852e0dac50fSopenharmony_ci
1853e0dac50fSopenharmony_ci/**
1854e0dac50fSopenharmony_ci * @tc.name: AddWindowNode05
1855e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot AddWindowNode05
1856e0dac50fSopenharmony_ci * @tc.type: FUNC
1857e0dac50fSopenharmony_ci */
1858e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, AddWindowNode05, Function | SmallTest | Level2)
1859e0dac50fSopenharmony_ci{
1860e0dac50fSopenharmony_ci    WMError ret;
1861e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1862e0dac50fSopenharmony_ci    node->property_->SetWindowType(WindowType::SYSTEM_WINDOW_BASE);
1863e0dac50fSopenharmony_ci    node->property_->SetModeSupportInfo(0);
1864e0dac50fSopenharmony_ci
1865e0dac50fSopenharmony_ci    ret = windowRoot_->AddWindowNode(INVALID_WINDOW_ID, node, false);
1866e0dac50fSopenharmony_ci    ASSERT_EQ(ret, WMError::WM_ERROR_INVALID_DISPLAY);
1867e0dac50fSopenharmony_ci}
1868e0dac50fSopenharmony_ci
1869e0dac50fSopenharmony_ci/**
1870e0dac50fSopenharmony_ci * @tc.name: UpdateDisplayOrientationWhenHideWindow
1871e0dac50fSopenharmony_ci * @tc.desc: test WindowRoot UpdateDisplayOrientationWhenHideWindow
1872e0dac50fSopenharmony_ci * @tc.type: FUNC
1873e0dac50fSopenharmony_ci */
1874e0dac50fSopenharmony_ciHWTEST_F(WindowRootTest, UpdateDisplayOrientationWhenHideWindow, Function | SmallTest | Level2)
1875e0dac50fSopenharmony_ci{
1876e0dac50fSopenharmony_ci    sptr<WindowNode> node = new WindowNode();
1877e0dac50fSopenharmony_ci    auto display = DisplayManager::GetInstance().GetDefaultDisplay();
1878e0dac50fSopenharmony_ci    ASSERT_TRUE((display != nullptr));
1879e0dac50fSopenharmony_ci    sptr<WindowNodeContainer> container = new WindowNodeContainer(display->GetDisplayInfo(), display->GetScreenId());
1880e0dac50fSopenharmony_ci    windowRoot_->windowNodeContainerMap_.insert(std::make_pair(node->GetDisplayId(), container));
1881e0dac50fSopenharmony_ci    ASSERT_TRUE((windowRoot_ != nullptr));
1882e0dac50fSopenharmony_ci    windowRoot_->UpdateDisplayOrientationWhenHideWindow(node);
1883e0dac50fSopenharmony_ci}
1884e0dac50fSopenharmony_ci}
1885e0dac50fSopenharmony_ci}
1886e0dac50fSopenharmony_ci}
1887