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