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 <gtest/gtest.h> 17e0dac50fSopenharmony_ci#include <map> 18e0dac50fSopenharmony_ci#include "display_manager.h" 19e0dac50fSopenharmony_ci#include "iremote_object_mocker.h" 20e0dac50fSopenharmony_ci#include "mock_rs_iwindow_animation_controller.h" 21e0dac50fSopenharmony_ci#include "remote_animation.h" 22e0dac50fSopenharmony_ci#include "starting_window.h" 23e0dac50fSopenharmony_ci#include "window_controller.h" 24e0dac50fSopenharmony_ci#include "scene_board_judgement.h" 25e0dac50fSopenharmony_ci 26e0dac50fSopenharmony_ciusing namespace testing; 27e0dac50fSopenharmony_ciusing namespace testing::ext; 28e0dac50fSopenharmony_ci 29e0dac50fSopenharmony_cinamespace OHOS { 30e0dac50fSopenharmony_cinamespace Rosen { 31e0dac50fSopenharmony_ciclass WindowControllerTest : public testing::Test { 32e0dac50fSopenharmony_cipublic: 33e0dac50fSopenharmony_ci static void SetUpTestCase(); 34e0dac50fSopenharmony_ci static void TearDownTestCase(); 35e0dac50fSopenharmony_ci void SetUp() override; 36e0dac50fSopenharmony_ci void TearDown() override; 37e0dac50fSopenharmony_ci 38e0dac50fSopenharmony_ci static sptr<WindowController> windowController_; 39e0dac50fSopenharmony_ci static sptr<WindowRoot> windowRoot_; 40e0dac50fSopenharmony_ci static sptr<InputWindowMonitor> inputWindowMonitor_; 41e0dac50fSopenharmony_ci static sptr<WindowNode> node_; 42e0dac50fSopenharmony_ci static sptr<WindowTransitionInfo> transitionInfo_; 43e0dac50fSopenharmony_ci}; 44e0dac50fSopenharmony_ci 45e0dac50fSopenharmony_cisptr<WindowController> WindowControllerTest::windowController_ = nullptr; 46e0dac50fSopenharmony_cisptr<WindowRoot> WindowControllerTest::windowRoot_ = nullptr; 47e0dac50fSopenharmony_cisptr<InputWindowMonitor> WindowControllerTest::inputWindowMonitor_ = nullptr; 48e0dac50fSopenharmony_cisptr<WindowNode> WindowControllerTest::node_ = nullptr; 49e0dac50fSopenharmony_cisptr<WindowTransitionInfo> WindowControllerTest::transitionInfo_ = nullptr; 50e0dac50fSopenharmony_ci 51e0dac50fSopenharmony_civoid RootCallback(Event event, const sptr<IRemoteObject>& remoteObject) 52e0dac50fSopenharmony_ci{ 53e0dac50fSopenharmony_ci return; 54e0dac50fSopenharmony_ci} 55e0dac50fSopenharmony_ci 56e0dac50fSopenharmony_civoid WindowControllerTest::SetUpTestCase() 57e0dac50fSopenharmony_ci{ 58e0dac50fSopenharmony_ci windowRoot_ = new WindowRoot(RootCallback); 59e0dac50fSopenharmony_ci windowRoot_->displayIdMap_[0].push_back(0); 60e0dac50fSopenharmony_ci inputWindowMonitor_ = new InputWindowMonitor(windowRoot_); 61e0dac50fSopenharmony_ci windowController_ = new WindowController(windowRoot_, inputWindowMonitor_); 62e0dac50fSopenharmony_ci transitionInfo_ = new WindowTransitionInfo(); 63e0dac50fSopenharmony_ci transitionInfo_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 64e0dac50fSopenharmony_ci node_ = StartingWindow::CreateWindowNode(transitionInfo_, 101); // 101 is windowId 65e0dac50fSopenharmony_ci node_->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 66e0dac50fSopenharmony_ci} 67e0dac50fSopenharmony_ci 68e0dac50fSopenharmony_civoid WindowControllerTest::TearDownTestCase() 69e0dac50fSopenharmony_ci{ 70e0dac50fSopenharmony_ci} 71e0dac50fSopenharmony_ci 72e0dac50fSopenharmony_civoid WindowControllerTest::SetUp() 73e0dac50fSopenharmony_ci{ 74e0dac50fSopenharmony_ci} 75e0dac50fSopenharmony_ci 76e0dac50fSopenharmony_civoid WindowControllerTest::TearDown() 77e0dac50fSopenharmony_ci{ 78e0dac50fSopenharmony_ci} 79e0dac50fSopenharmony_ci 80e0dac50fSopenharmony_cinamespace { 81e0dac50fSopenharmony_ci/** 82e0dac50fSopenharmony_ci * @tc.name: GetSnapshot 83e0dac50fSopenharmony_ci * @tc.desc: test GetSnapshot 84e0dac50fSopenharmony_ci * @tc.type: FUNC 85e0dac50fSopenharmony_ci */ 86e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, GetSnapshot, Function | SmallTest | Level3) 87e0dac50fSopenharmony_ci{ 88e0dac50fSopenharmony_ci int windowId = INVALID_WINDOW_ID; 89e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowController_->GetSnapshot(windowId)); 90e0dac50fSopenharmony_ci} 91e0dac50fSopenharmony_ci 92e0dac50fSopenharmony_ci/** 93e0dac50fSopenharmony_ci * @tc.name: StartingWindow 94e0dac50fSopenharmony_ci * @tc.desc: Window controller starting window 95e0dac50fSopenharmony_ci * @tc.type: FUNC 96e0dac50fSopenharmony_ci */ 97e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, StartingWindow, Function | SmallTest | Level3) 98e0dac50fSopenharmony_ci{ 99e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 100e0dac50fSopenharmony_ci windowController_->StartingWindow(nullptr, nullptr, 0, false); 101e0dac50fSopenharmony_ci ASSERT_EQ(0, windowRoot_->windowNodeMap_.size()); 102e0dac50fSopenharmony_ci 103e0dac50fSopenharmony_ci transitionInfo_->SetWindowMode(WindowMode::WINDOW_MODE_UNDEFINED); 104e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, false); 105e0dac50fSopenharmony_ci ASSERT_EQ(0, windowRoot_->windowNodeMap_.size()); 106e0dac50fSopenharmony_ci 107e0dac50fSopenharmony_ci sptr<IRemoteObject> abilityTokenMocker = new IRemoteObjectMocker(); 108e0dac50fSopenharmony_ci transitionInfo_->SetAbilityToken(abilityTokenMocker); 109e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, false); 110e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, true); 111e0dac50fSopenharmony_ci ASSERT_EQ(1, windowRoot_->windowNodeMap_.size()); 112e0dac50fSopenharmony_ci 113e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 114e0dac50fSopenharmony_ci sptr<IRemoteObject> iRemoteObjectMocker = new IRemoteObjectMocker(); 115e0dac50fSopenharmony_ci RemoteAnimation::windowAnimationController_ = iface_cast<RSIWindowAnimationController>(iRemoteObjectMocker); 116e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, true); 117e0dac50fSopenharmony_ci ASSERT_EQ(1, windowRoot_->windowNodeMap_.size()); 118e0dac50fSopenharmony_ci 119e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 120e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(node_->GetWindowId(), node_)); 121e0dac50fSopenharmony_ci node_->abilityToken_ = abilityTokenMocker; 122e0dac50fSopenharmony_ci node_->stateMachine_.currState_ = WindowNodeState::SHOW_ANIMATION_PLAYING; 123e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, false); 124e0dac50fSopenharmony_ci ASSERT_EQ(1, windowRoot_->windowNodeMap_.size()); 125e0dac50fSopenharmony_ci 126e0dac50fSopenharmony_ci node_->stateMachine_.currState_ = WindowNodeState::STARTING_CREATED; 127e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, false); 128e0dac50fSopenharmony_ci transitionInfo_->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 129e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, false); 130e0dac50fSopenharmony_ci transitionInfo_->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 131e0dac50fSopenharmony_ci node_->property_->modeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_ALL; 132e0dac50fSopenharmony_ci windowController_->StartingWindow(transitionInfo_, nullptr, 0, false); 133e0dac50fSopenharmony_ci ASSERT_EQ(1, windowRoot_->windowNodeMap_.size()); 134e0dac50fSopenharmony_ci 135e0dac50fSopenharmony_ci // Cancel starting window 136e0dac50fSopenharmony_ci windowController_->CancelStartingWindow(nullptr); 137e0dac50fSopenharmony_ci windowController_->CancelStartingWindow(abilityTokenMocker); 138e0dac50fSopenharmony_ci 139e0dac50fSopenharmony_ci node_->startingWindowShown_ = true; 140e0dac50fSopenharmony_ci windowController_->CancelStartingWindow(abilityTokenMocker); 141e0dac50fSopenharmony_ci ASSERT_EQ(0, windowRoot_->windowNodeMap_.size()); 142e0dac50fSopenharmony_ci 143e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 144e0dac50fSopenharmony_ci RemoteAnimation::windowAnimationController_ = nullptr; 145e0dac50fSopenharmony_ci} 146e0dac50fSopenharmony_ci 147e0dac50fSopenharmony_ci/** 148e0dac50fSopenharmony_ci * @tc.name: NotifyWindowTransition 149e0dac50fSopenharmony_ci * @tc.desc: Window controller notify window transtition 150e0dac50fSopenharmony_ci * @tc.type: FUNC 151e0dac50fSopenharmony_ci */ 152e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyWindowTransition, Function | SmallTest | Level3) 153e0dac50fSopenharmony_ci{ 154e0dac50fSopenharmony_ci sptr<WindowTransitionInfo> srcInfo = nullptr; 155e0dac50fSopenharmony_ci sptr<WindowTransitionInfo> dstInfo = nullptr; 156e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NO_REMOTE_ANIMATION, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 157e0dac50fSopenharmony_ci 158e0dac50fSopenharmony_ci srcInfo = new WindowTransitionInfo(); 159e0dac50fSopenharmony_ci sptr<IRemoteObject> srcAbilityTokenMocker = new IRemoteObjectMocker(); 160e0dac50fSopenharmony_ci srcInfo->SetAbilityToken(srcAbilityTokenMocker); 161e0dac50fSopenharmony_ci sptr<WindowNode> srcNode = StartingWindow::CreateWindowNode(srcInfo, 102); // 102 is windowId 162e0dac50fSopenharmony_ci srcNode->property_->modeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_ALL; 163e0dac50fSopenharmony_ci 164e0dac50fSopenharmony_ci dstInfo = new WindowTransitionInfo(); 165e0dac50fSopenharmony_ci sptr<IRemoteObject> dstAbilityTokenMocker = new IRemoteObjectMocker(); 166e0dac50fSopenharmony_ci dstInfo->SetAbilityToken(dstAbilityTokenMocker); 167e0dac50fSopenharmony_ci sptr<WindowNode> dstNode = StartingWindow::CreateWindowNode(dstInfo, 103); // 103 is windowId 168e0dac50fSopenharmony_ci dstNode->property_->modeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_ALL; 169e0dac50fSopenharmony_ci 170e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 171e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(srcNode->GetWindowId(), srcNode)); 172e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(dstNode->GetWindowId(), dstNode)); 173e0dac50fSopenharmony_ci 174e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 175e0dac50fSopenharmony_ci sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, 0); 176e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.insert(std::make_pair(0, container)); 177e0dac50fSopenharmony_ci 178e0dac50fSopenharmony_ci sptr<MockRSIWindowAnimationController> mock = new MockRSIWindowAnimationController(); 179e0dac50fSopenharmony_ci RemoteAnimation::windowAnimationController_ = mock; 180e0dac50fSopenharmony_ci RemoteAnimation::windowRoot_ = windowRoot_; 181e0dac50fSopenharmony_ci RemoteAnimation::animationFirst_ = true; 182e0dac50fSopenharmony_ci 183e0dac50fSopenharmony_ci srcInfo->SetTransitionReason(TransitionReason::MINIMIZE); 184e0dac50fSopenharmony_ci srcNode->stateMachine_.currState_ = WindowNodeState::HIDDEN; 185e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NO_REMOTE_ANIMATION, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 186e0dac50fSopenharmony_ci 187e0dac50fSopenharmony_ci srcInfo->SetTransitionReason(TransitionReason::MINIMIZE); 188e0dac50fSopenharmony_ci srcNode->stateMachine_.currState_ = WindowNodeState::STARTING_CREATED; 189e0dac50fSopenharmony_ci EXPECT_CALL(*mock, OnMinimizeWindow(_, _)).Times(1); 190e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 191e0dac50fSopenharmony_ci 192e0dac50fSopenharmony_ci srcInfo->SetTransitionReason(TransitionReason::CLOSE); 193e0dac50fSopenharmony_ci srcNode->stateMachine_.currState_ = WindowNodeState::STARTING_CREATED; 194e0dac50fSopenharmony_ci EXPECT_CALL(*mock, OnCloseWindow(_, _)).Times(1); 195e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 196e0dac50fSopenharmony_ci 197e0dac50fSopenharmony_ci srcInfo->SetTransitionReason(TransitionReason::BACK_TRANSITION); 198e0dac50fSopenharmony_ci srcNode->stateMachine_.currState_ = WindowNodeState::STARTING_CREATED; 199e0dac50fSopenharmony_ci EXPECT_CALL(*mock, OnAppBackTransition(_, _, _)).Times(1); 200e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 201e0dac50fSopenharmony_ci 202e0dac50fSopenharmony_ci srcInfo->SetTransitionReason(TransitionReason::ABILITY_TRANSITION); 203e0dac50fSopenharmony_ci dstNode->stateMachine_.currState_ = WindowNodeState::STARTING_CREATED; 204e0dac50fSopenharmony_ci dstNode->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 205e0dac50fSopenharmony_ci dstNode->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 206e0dac50fSopenharmony_ci EXPECT_CALL(*mock, OnStartApp(_, _, _)).Times(1); 207e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 208e0dac50fSopenharmony_ci 209e0dac50fSopenharmony_ci dstNode->stateMachine_.currState_ = WindowNodeState::STARTING_CREATED; 210e0dac50fSopenharmony_ci dstNode->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 211e0dac50fSopenharmony_ci EXPECT_CALL(*mock, OnStartApp(_, _, _)).Times(1); 212e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->NotifyWindowTransition(srcInfo, dstInfo)); 213e0dac50fSopenharmony_ci 214e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.clear(); 215e0dac50fSopenharmony_ci RemoteAnimation::windowAnimationController_ = nullptr; 216e0dac50fSopenharmony_ci} 217e0dac50fSopenharmony_ci 218e0dac50fSopenharmony_ci/** 219e0dac50fSopenharmony_ci * @tc.name: FocusWindow 220e0dac50fSopenharmony_ci * @tc.desc: Window controller focus window 221e0dac50fSopenharmony_ci * @tc.type: FUNC 222e0dac50fSopenharmony_ci */ 223e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, FocusWindow, Function | SmallTest | Level3) 224e0dac50fSopenharmony_ci{ 225e0dac50fSopenharmony_ci sptr<IRemoteObject> abilityToken = nullptr; 226e0dac50fSopenharmony_ci windowController_->GetFocusWindowInfo(abilityToken); 227e0dac50fSopenharmony_ci 228e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 229e0dac50fSopenharmony_ci sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, 0); 230e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.insert(std::make_pair(0, container)); 231e0dac50fSopenharmony_ci 232e0dac50fSopenharmony_ci sptr<WindowNode> windowNode; 233e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_WINDOW, windowController_->GetFocusWindowNode(0, windowNode)); 234e0dac50fSopenharmony_ci 235e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 236e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(node_->GetWindowId(), node_)); 237e0dac50fSopenharmony_ci container->focusedWindow_ = node_->GetWindowId(); 238e0dac50fSopenharmony_ci node_->currentVisibility_ = false; 239e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_WINDOW, windowController_->GetFocusWindowNode(0, windowNode)); 240e0dac50fSopenharmony_ci 241e0dac50fSopenharmony_ci node_->currentVisibility_ = true; 242e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetFocusWindowNode(0, windowNode)); 243e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.clear(); 244e0dac50fSopenharmony_ci} 245e0dac50fSopenharmony_ci 246e0dac50fSopenharmony_ci/** 247e0dac50fSopenharmony_ci * @tc.name: CreateWindow 248e0dac50fSopenharmony_ci * @tc.desc: Window controller create window 249e0dac50fSopenharmony_ci * @tc.type: FUNC 250e0dac50fSopenharmony_ci */ 251e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, CreateWindow, Function | SmallTest | Level3) 252e0dac50fSopenharmony_ci{ 253e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 254e0dac50fSopenharmony_ci sptr<IWindow> window; 255e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 256e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 257e0dac50fSopenharmony_ci 258e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 259e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 260e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property2); 261e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1,windowNode)); 262e0dac50fSopenharmony_ci sptr<WindowProperty> property3 = new WindowProperty(); 263e0dac50fSopenharmony_ci property3->SetWindowType(WindowType::BELOW_APP_SYSTEM_WINDOW_BASE); 264e0dac50fSopenharmony_ci sptr<WindowNode> windowNode2 = new WindowNode(property3); 265e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(2,windowNode2)); 266e0dac50fSopenharmony_ci 267e0dac50fSopenharmony_ci uint32_t windowId; 268e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 269e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, 270e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 271e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 272e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "SurfaceNode"; 273e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 274e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 275e0dac50fSopenharmony_ci 276e0dac50fSopenharmony_ci property->SetParentId(1); 277e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 278e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_PARENT, 279e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 280e0dac50fSopenharmony_ci 281e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_SUB_WINDOW); 282e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 283e0dac50fSopenharmony_ci 284e0dac50fSopenharmony_ci property->SetParentId(2); 285e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_SYSTEM_SUB_WINDOW); 286e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 287e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 288e0dac50fSopenharmony_ci 289e0dac50fSopenharmony_ci sptr<IRemoteObject> abilityTokenMocker = new IRemoteObjectMocker(); 290e0dac50fSopenharmony_ci node_->abilityToken_ = abilityTokenMocker; 291e0dac50fSopenharmony_ci 292e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 293e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 294e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 295e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, abilityTokenMocker, 0, 0)); 296e0dac50fSopenharmony_ci 297e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_SUB_WINDOW); 298e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_PARENT, 299e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, abilityTokenMocker, 0, 0)); 300e0dac50fSopenharmony_ci 301e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 302e0dac50fSopenharmony_ci node_->startingWindowShown_ = false; 303e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 304e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, abilityTokenMocker, 0, 0)); 305e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 306e0dac50fSopenharmony_ci} 307e0dac50fSopenharmony_ci 308e0dac50fSopenharmony_ci/** 309e0dac50fSopenharmony_ci * @tc.name: NotifyAfterAddWindow 310e0dac50fSopenharmony_ci * @tc.desc: Window controller notify after add window 311e0dac50fSopenharmony_ci * @tc.type: FUNC 312e0dac50fSopenharmony_ci */ 313e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyAfterAddWindow, Function | SmallTest | Level3) 314e0dac50fSopenharmony_ci{ 315e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowController_); 316e0dac50fSopenharmony_ci sptr<WindowNode> node0 = new WindowNode(); 317e0dac50fSopenharmony_ci windowController_->NotifyAfterAddWindow(node0); 318e0dac50fSopenharmony_ci ASSERT_EQ(0, node0->children_.size()); 319e0dac50fSopenharmony_ci 320e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(); 321e0dac50fSopenharmony_ci node1->currentVisibility_ = false; 322e0dac50fSopenharmony_ci sptr<WindowNode> node2= new WindowNode(); 323e0dac50fSopenharmony_ci node2->currentVisibility_ = true; 324e0dac50fSopenharmony_ci 325e0dac50fSopenharmony_ci node0->children_.push_back(node1); 326e0dac50fSopenharmony_ci node0->children_.push_back(node2); 327e0dac50fSopenharmony_ci windowController_->NotifyAfterAddWindow(node0); 328e0dac50fSopenharmony_ci ASSERT_EQ(2, node0->children_.size()); 329e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, node0->children_[0]->abilityToken_); 330e0dac50fSopenharmony_ci} 331e0dac50fSopenharmony_ci 332e0dac50fSopenharmony_ci/** 333e0dac50fSopenharmony_ci * @tc.name: AddWindowNode 334e0dac50fSopenharmony_ci * @tc.desc: Window controller add window node 335e0dac50fSopenharmony_ci * @tc.type: FUNC 336e0dac50fSopenharmony_ci */ 337e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, AddWindowNode, Function | SmallTest | Level3) 338e0dac50fSopenharmony_ci{ 339e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 340e0dac50fSopenharmony_ci property->SetWindowId(0); 341e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, windowController_->AddWindowNode(property)); 342e0dac50fSopenharmony_ci 343e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 344e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(node_->GetWindowId(), node_)); 345e0dac50fSopenharmony_ci property->SetWindowId(node_->GetWindowId()); 346e0dac50fSopenharmony_ci node_->currentVisibility_ = true; 347e0dac50fSopenharmony_ci node_->startingWindowShown_ = false; 348e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, windowController_->AddWindowNode(property)); 349e0dac50fSopenharmony_ci 350e0dac50fSopenharmony_ci node_->currentVisibility_ = false; 351e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, windowController_->AddWindowNode(property)); 352e0dac50fSopenharmony_ci 353e0dac50fSopenharmony_ci Rect requestRect{0, 0, 100, 100}; 354e0dac50fSopenharmony_ci property->SetRequestRect(requestRect); 355e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, windowController_->AddWindowNode(property)); 356e0dac50fSopenharmony_ci 357e0dac50fSopenharmony_ci node_->startingWindowShown_ = true; 358e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, windowController_->AddWindowNode(property)); 359e0dac50fSopenharmony_ci 360e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 361e0dac50fSopenharmony_ci} 362e0dac50fSopenharmony_ci 363e0dac50fSopenharmony_ci/** 364e0dac50fSopenharmony_ci * @tc.name: InputCallingWindow 365e0dac50fSopenharmony_ci * @tc.desc: Window controller input calling window 366e0dac50fSopenharmony_ci * @tc.type: FUNC 367e0dac50fSopenharmony_ci */ 368e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, InputCallingWindow, Function | SmallTest | Level3) 369e0dac50fSopenharmony_ci{ 370e0dac50fSopenharmony_ci windowController_->callingWindowId_ = 0; 371e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 372e0dac50fSopenharmony_ci sptr<WindowNode> node = new WindowNode(); 373e0dac50fSopenharmony_ci node->property_->callingWindow_ = 0; 374e0dac50fSopenharmony_ci node->property_->displayId_ = DISPLAY_ID_INVALID; 375e0dac50fSopenharmony_ci windowController_->ResizeSoftInputCallingWindowIfNeed(node); 376e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 377e0dac50fSopenharmony_ci 378e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 379e0dac50fSopenharmony_ci sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, 0); 380e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.insert(std::make_pair(0, container)); 381e0dac50fSopenharmony_ci node->property_->displayId_ = 0; 382e0dac50fSopenharmony_ci windowController_->ResizeSoftInputCallingWindowIfNeed(node); 383e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 384e0dac50fSopenharmony_ci 385e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(node_->GetWindowId(), node_)); 386e0dac50fSopenharmony_ci container->focusedWindow_ = node_->GetWindowId(); 387e0dac50fSopenharmony_ci node_->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 388e0dac50fSopenharmony_ci node_->currentVisibility_ = false; 389e0dac50fSopenharmony_ci windowController_->ResizeSoftInputCallingWindowIfNeed(node); 390e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 391e0dac50fSopenharmony_ci 392e0dac50fSopenharmony_ci node_->currentVisibility_ = true; 393e0dac50fSopenharmony_ci node_->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 394e0dac50fSopenharmony_ci windowController_->ResizeSoftInputCallingWindowIfNeed(node); 395e0dac50fSopenharmony_ci 396e0dac50fSopenharmony_ci node_->currentVisibility_ = true; 397e0dac50fSopenharmony_ci node_->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 398e0dac50fSopenharmony_ci windowController_->ResizeSoftInputCallingWindowIfNeed(node); 399e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 400e0dac50fSopenharmony_ci 401e0dac50fSopenharmony_ci windowController_->callingWindowId_ = node_->GetWindowId(); 402e0dac50fSopenharmony_ci windowController_->callingWindowRestoringRect_ = {0, 0, 0, 0}; 403e0dac50fSopenharmony_ci windowController_->RestoreCallingWindowSizeIfNeed(); 404e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 405e0dac50fSopenharmony_ci 406e0dac50fSopenharmony_ci windowController_->callingWindowRestoringRect_ = {0, 0, 1, 1}; 407e0dac50fSopenharmony_ci windowController_->callingWindowId_ = 0; 408e0dac50fSopenharmony_ci windowController_->RestoreCallingWindowSizeIfNeed(); 409e0dac50fSopenharmony_ci 410e0dac50fSopenharmony_ci windowController_->callingWindowId_ = node_->GetWindowId(); 411e0dac50fSopenharmony_ci windowController_->RestoreCallingWindowSizeIfNeed(); 412e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 413e0dac50fSopenharmony_ci 414e0dac50fSopenharmony_ci windowController_->callingWindowId_ = node_->GetWindowId(); 415e0dac50fSopenharmony_ci node_->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 416e0dac50fSopenharmony_ci windowController_->RestoreCallingWindowSizeIfNeed(); 417e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->callingWindowId_); 418e0dac50fSopenharmony_ci 419e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 420e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.clear(); 421e0dac50fSopenharmony_ci} 422e0dac50fSopenharmony_ci 423e0dac50fSopenharmony_ci/** 424e0dac50fSopenharmony_ci * @tc.name: SetDefaultDisplayInfo 425e0dac50fSopenharmony_ci * @tc.desc: Window controller set default display info 426e0dac50fSopenharmony_ci * @tc.type: FUNC 427e0dac50fSopenharmony_ci */ 428e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, SetDefaultDisplayInfo, Function | SmallTest | Level3) 429e0dac50fSopenharmony_ci{ 430e0dac50fSopenharmony_ci const int32_t displayWidth = 100; 431e0dac50fSopenharmony_ci const int32_t displayHeight = 200; 432e0dac50fSopenharmony_ci windowController_->defaultDisplayRect_ = { 0, 0, 0, 0 }; 433e0dac50fSopenharmony_ci 434e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = nullptr; 435e0dac50fSopenharmony_ci windowController_->SetDefaultDisplayInfo(0, displayInfo); 436e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->defaultDisplayRect_.width_); 437e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->defaultDisplayRect_.height_); 438e0dac50fSopenharmony_ci 439e0dac50fSopenharmony_ci displayInfo = new DisplayInfo(); 440e0dac50fSopenharmony_ci displayInfo->id_ = 1; 441e0dac50fSopenharmony_ci displayInfo->width_ = displayWidth; 442e0dac50fSopenharmony_ci displayInfo->height_ = displayHeight; 443e0dac50fSopenharmony_ci 444e0dac50fSopenharmony_ci windowController_->SetDefaultDisplayInfo(0, displayInfo); 445e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->defaultDisplayRect_.width_); 446e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->defaultDisplayRect_.height_); 447e0dac50fSopenharmony_ci 448e0dac50fSopenharmony_ci displayInfo->id_ = 0; 449e0dac50fSopenharmony_ci windowController_->SetDefaultDisplayInfo(0, displayInfo); 450e0dac50fSopenharmony_ci ASSERT_EQ(displayWidth, windowController_->defaultDisplayRect_.width_); 451e0dac50fSopenharmony_ci ASSERT_EQ(displayHeight, windowController_->defaultDisplayRect_.height_); 452e0dac50fSopenharmony_ci} 453e0dac50fSopenharmony_ci 454e0dac50fSopenharmony_ci/** 455e0dac50fSopenharmony_ci * @tc.name: ProcessDisplayCompression 456e0dac50fSopenharmony_ci * @tc.desc: Window controller process display compression 457e0dac50fSopenharmony_ci * @tc.type: FUNC 458e0dac50fSopenharmony_ci */ 459e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessDisplayCompression, Function | SmallTest | Level3) 460e0dac50fSopenharmony_ci{ 461e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowController_); 462e0dac50fSopenharmony_ci DisplayId defaultDisplayId = 0; 463e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 464e0dac50fSopenharmony_ci displayInfo->id_ = 1; 465e0dac50fSopenharmony_ci windowController_->ProcessDisplayCompression(defaultDisplayId, displayInfo); 466e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowController_->maskingSurfaceNode_); 467e0dac50fSopenharmony_ci 468e0dac50fSopenharmony_ci displayInfo->id_ = defaultDisplayId; 469e0dac50fSopenharmony_ci displayInfo->waterfallDisplayCompressionStatus_ = false; 470e0dac50fSopenharmony_ci windowController_->ProcessDisplayCompression(defaultDisplayId, displayInfo); 471e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowController_->maskingSurfaceNode_); 472e0dac50fSopenharmony_ci 473e0dac50fSopenharmony_ci displayInfo->waterfallDisplayCompressionStatus_ = true; 474e0dac50fSopenharmony_ci windowController_->ProcessDisplayCompression(defaultDisplayId, displayInfo); 475e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowController_->maskingSurfaceNode_); 476e0dac50fSopenharmony_ci} 477e0dac50fSopenharmony_ci 478e0dac50fSopenharmony_ci/** 479e0dac50fSopenharmony_ci * @tc.name: StopBootAnimationIfNeed 480e0dac50fSopenharmony_ci * @tc.desc: Window controller stop boot animation if need 481e0dac50fSopenharmony_ci * @tc.type: FUNC 482e0dac50fSopenharmony_ci */ 483e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, StopBootAnimationIfNeed, Function | SmallTest | Level3) 484e0dac50fSopenharmony_ci{ 485e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowController_); 486e0dac50fSopenharmony_ci 487e0dac50fSopenharmony_ci sptr<WindowNode> node = nullptr; 488e0dac50fSopenharmony_ci windowController_->isBootAnimationStopped_ = true; 489e0dac50fSopenharmony_ci windowController_->StopBootAnimationIfNeed(node); 490e0dac50fSopenharmony_ci ASSERT_EQ(true, windowController_->isBootAnimationStopped_); 491e0dac50fSopenharmony_ci 492e0dac50fSopenharmony_ci windowController_->isBootAnimationStopped_ = false; 493e0dac50fSopenharmony_ci windowController_->StopBootAnimationIfNeed(node); 494e0dac50fSopenharmony_ci ASSERT_EQ(false, windowController_->isBootAnimationStopped_); 495e0dac50fSopenharmony_ci 496e0dac50fSopenharmony_ci node = new WindowNode(); 497e0dac50fSopenharmony_ci node->SetDisplayId(DISPLAY_ID_INVALID + 1); 498e0dac50fSopenharmony_ci windowController_->StopBootAnimationIfNeed(node); 499e0dac50fSopenharmony_ci ASSERT_EQ(false, windowController_->isBootAnimationStopped_); 500e0dac50fSopenharmony_ci 501e0dac50fSopenharmony_ci node->SetDisplayId(DISPLAY_ID_INVALID); 502e0dac50fSopenharmony_ci windowController_->StopBootAnimationIfNeed(node); 503e0dac50fSopenharmony_ci ASSERT_EQ(false, windowController_->isBootAnimationStopped_); 504e0dac50fSopenharmony_ci} 505e0dac50fSopenharmony_ci 506e0dac50fSopenharmony_ci/** 507e0dac50fSopenharmony_ci * @tc.name: GetEmbedNodeId 508e0dac50fSopenharmony_ci * @tc.desc: Window controller get embed node id 509e0dac50fSopenharmony_ci * @tc.type: FUNC 510e0dac50fSopenharmony_ci */ 511e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, GetEmbedNodeId, Function | SmallTest | Level3) 512e0dac50fSopenharmony_ci{ 513e0dac50fSopenharmony_ci std::vector<sptr<WindowNode>> windowNodes; 514e0dac50fSopenharmony_ci sptr<WindowNode> node0 = nullptr; 515e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(); 516e0dac50fSopenharmony_ci node1->property_->windowId_ = 1; 517e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(); 518e0dac50fSopenharmony_ci node2->property_->windowId_ = 2; 519e0dac50fSopenharmony_ci sptr<WindowNode> node3 = new WindowNode(); 520e0dac50fSopenharmony_ci node3->property_->windowId_ = 3; 521e0dac50fSopenharmony_ci 522e0dac50fSopenharmony_ci node1->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 523e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->GetEmbedNodeId(windowNodes, node1)); 524e0dac50fSopenharmony_ci 525e0dac50fSopenharmony_ci node1->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_COMPONENT); 526e0dac50fSopenharmony_ci ASSERT_EQ(0, windowController_->GetEmbedNodeId(windowNodes, node1)); 527e0dac50fSopenharmony_ci 528e0dac50fSopenharmony_ci windowNodes.push_back(node0); 529e0dac50fSopenharmony_ci windowNodes.push_back(node2); 530e0dac50fSopenharmony_ci windowNodes.push_back(node1); 531e0dac50fSopenharmony_ci windowNodes.push_back(node2); 532e0dac50fSopenharmony_ci windowNodes.push_back(node3); 533e0dac50fSopenharmony_ci 534e0dac50fSopenharmony_ci node1->SetWindowRect({50, 50, 50, 50}); 535e0dac50fSopenharmony_ci node3->SetWindowRect({0, 0, 200, 200}); 536e0dac50fSopenharmony_ci ASSERT_EQ(node3->GetWindowId(), windowController_->GetEmbedNodeId(windowNodes, node1)); 537e0dac50fSopenharmony_ci} 538e0dac50fSopenharmony_ci 539e0dac50fSopenharmony_ci/** 540e0dac50fSopenharmony_ci * @tc.name: BindDialogTarget 541e0dac50fSopenharmony_ci * @tc.desc: Window controller bind dialog target 542e0dac50fSopenharmony_ci * @tc.type: FUNC 543e0dac50fSopenharmony_ci */ 544e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, BindDialogTarget, Function | SmallTest | Level3) 545e0dac50fSopenharmony_ci{ 546e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 547e0dac50fSopenharmony_ci 548e0dac50fSopenharmony_ci uint32_t id = 0; 549e0dac50fSopenharmony_ci sptr<IRemoteObject> abilityTokenMocker = new IRemoteObjectMocker(); 550e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, windowController_->BindDialogTarget(id, abilityTokenMocker)); 551e0dac50fSopenharmony_ci 552e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(node_->GetWindowId(), node_)); 553e0dac50fSopenharmony_ci id = node_->GetWindowId(); 554e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->BindDialogTarget(id, abilityTokenMocker)); 555e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 556e0dac50fSopenharmony_ci} 557e0dac50fSopenharmony_ci 558e0dac50fSopenharmony_ci/** 559e0dac50fSopenharmony_ci * @tc.name: RaiseToAppTop 560e0dac50fSopenharmony_ci * @tc.desc: check app subwindow raise to top 561e0dac50fSopenharmony_ci * @tc.type: FUNC 562e0dac50fSopenharmony_ci */ 563e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RaiseToAppTop, Function | SmallTest | Level3) 564e0dac50fSopenharmony_ci{ 565e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 566e0dac50fSopenharmony_ci 567e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new (std::nothrow)WindowNode(); 568e0dac50fSopenharmony_ci windowNode->property_->windowId_ = 100; 569e0dac50fSopenharmony_ci windowNode->SetDisplayId(DISPLAY_ID_INVALID); 570e0dac50fSopenharmony_ci 571e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 572e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_DO_NOTHING, windowController_->RaiseToAppTop(windowId)); 573e0dac50fSopenharmony_ci 574e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode)); 575e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_PARENT, windowController_->RaiseToAppTop(windowId)); 576e0dac50fSopenharmony_ci 577e0dac50fSopenharmony_ci sptr<WindowNode> parentWindow = new (std::nothrow)WindowNode(); 578e0dac50fSopenharmony_ci parentWindow->property_->windowId_ = 90; 579e0dac50fSopenharmony_ci parentWindow->SetDisplayId(DISPLAY_ID_INVALID); 580e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(parentWindow->GetWindowId(), parentWindow)); 581e0dac50fSopenharmony_ci 582e0dac50fSopenharmony_ci windowNode->parent_ = parentWindow; 583e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_DO_NOTHING, windowController_->RaiseToAppTop(windowId)); 584e0dac50fSopenharmony_ci 585e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 586e0dac50fSopenharmony_ci} 587e0dac50fSopenharmony_ci 588e0dac50fSopenharmony_ci/** 589e0dac50fSopenharmony_ci * @tc.name: GetFocusWindowInfo 590e0dac50fSopenharmony_ci * @tc.desc: Window controller focus window 591e0dac50fSopenharmony_ci * @tc.type: FUNC 592e0dac50fSopenharmony_ci */ 593e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, GetFocusWindowInfo, Function | SmallTest | Level3) 594e0dac50fSopenharmony_ci{ 595e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 596e0dac50fSopenharmony_ci sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, 0); 597e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.insert(std::make_pair(0, container)); 598e0dac50fSopenharmony_ci 599e0dac50fSopenharmony_ci FocusChangeInfo focusInfo; 600e0dac50fSopenharmony_ci WMError res = windowController_->GetFocusWindowInfo(focusInfo); 601e0dac50fSopenharmony_ci windowRoot_->windowNodeContainerMap_.clear(); 602e0dac50fSopenharmony_ci ASSERT_EQ(res, WMError::WM_ERROR_INVALID_WINDOW); 603e0dac50fSopenharmony_ci} 604e0dac50fSopenharmony_ci 605e0dac50fSopenharmony_ci/** 606e0dac50fSopenharmony_ci * @tc.name: CheckParentWindowValid 607e0dac50fSopenharmony_ci * @tc.desc: Window controller CheckParentWindowValid 608e0dac50fSopenharmony_ci * @tc.type: FUNC 609e0dac50fSopenharmony_ci */ 610e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, CreateWindow01, Function | SmallTest | Level3) 611e0dac50fSopenharmony_ci{ 612e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 613e0dac50fSopenharmony_ci sptr<IWindow> window; 614e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 615e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 616e0dac50fSopenharmony_ci 617e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 618e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::SYSTEM_SUB_WINDOW_BASE); 619e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property2); 620e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 621e0dac50fSopenharmony_ci sptr<WindowProperty> property3 = new WindowProperty(); 622e0dac50fSopenharmony_ci property3->SetWindowType(WindowType::SYSTEM_SUB_WINDOW_BASE); 623e0dac50fSopenharmony_ci sptr<WindowNode> windowNode2 = new WindowNode(property3); 624e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(2, windowNode2)); 625e0dac50fSopenharmony_ci 626e0dac50fSopenharmony_ci uint32_t windowId; 627e0dac50fSopenharmony_ci property->SetParentId(1); 628e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_SUB_WINDOW_BASE); 629e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 630e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "CheckParentWindowValid"; 631e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 632e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 633e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 634e0dac50fSopenharmony_ci 635e0dac50fSopenharmony_ci property2->SetParentId(INVALID_WINDOW_ID); 636e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_PARENT, 637e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property2, surfaceNode, windowId, nullptr, 0, 0)); 638e0dac50fSopenharmony_ci 639e0dac50fSopenharmony_ci property3->SetParentId(1); 640e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_PARENT, 641e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property2, surfaceNode, windowId, nullptr, 0, 0)); 642e0dac50fSopenharmony_ci} 643e0dac50fSopenharmony_ci 644e0dac50fSopenharmony_ci/** 645e0dac50fSopenharmony_ci * @tc.name: CheckMultiDialogWindows 646e0dac50fSopenharmony_ci * @tc.desc: Window controller CheckParentWindowValid 647e0dac50fSopenharmony_ci * @tc.type: FUNC 648e0dac50fSopenharmony_ci */ 649e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, CreateWindow02, Function | SmallTest | Level3) 650e0dac50fSopenharmony_ci{ 651e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 652e0dac50fSopenharmony_ci sptr<IWindow> window; 653e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 654e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 655e0dac50fSopenharmony_ci 656e0dac50fSopenharmony_ci uint32_t windowId; 657e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 658e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 659e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 660e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "CheckMultiDialogWindows"; 661e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 662e0dac50fSopenharmony_ci sptr<IRemoteObject> abilityTokenMocker = new IRemoteObjectMocker(); 663e0dac50fSopenharmony_ci node_->abilityToken_ = abilityTokenMocker; 664e0dac50fSopenharmony_ci 665e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 666e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, abilityTokenMocker, 0, 0)); 667e0dac50fSopenharmony_ci} 668e0dac50fSopenharmony_ci 669e0dac50fSopenharmony_ci/** 670e0dac50fSopenharmony_ci * @tc.name: CheckMultiDialogWindows 671e0dac50fSopenharmony_ci * @tc.desc: Window controller CheckParentWindowValid 672e0dac50fSopenharmony_ci * @tc.type: FUNC 673e0dac50fSopenharmony_ci */ 674e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, CreateWindow03, Function | SmallTest | Level3) 675e0dac50fSopenharmony_ci{ 676e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 677e0dac50fSopenharmony_ci sptr<IWindow> window; 678e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 679e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 680e0dac50fSopenharmony_ci 681e0dac50fSopenharmony_ci uint32_t windowId; 682e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 683e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 684e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 685e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "CheckMultiDialogWindows1"; 686e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 687e0dac50fSopenharmony_ci sptr<IRemoteObject> abilityTokenMocker = new IRemoteObjectMocker(); 688e0dac50fSopenharmony_ci node_->abilityToken_ = abilityTokenMocker; 689e0dac50fSopenharmony_ci node_->startingWindowShown_ = true; 690e0dac50fSopenharmony_ci 691e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 692e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, abilityTokenMocker, 0, 0)); 693e0dac50fSopenharmony_ci} 694e0dac50fSopenharmony_ci 695e0dac50fSopenharmony_ci/** 696e0dac50fSopenharmony_ci * @tc.name: RemoveWindowNode 697e0dac50fSopenharmony_ci * @tc.desc: Window controller RemoveWindowNode 698e0dac50fSopenharmony_ci * @tc.type: FUNC 699e0dac50fSopenharmony_ci */ 700e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RemoveWindowNode, Function | SmallTest | Level3) 701e0dac50fSopenharmony_ci{ 702e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 703e0dac50fSopenharmony_ci sptr<IWindow> window; 704e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 705e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 706e0dac50fSopenharmony_ci 707e0dac50fSopenharmony_ci uint32_t windowId; 708e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 709e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 710e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 711e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RemoveWindowNode"; 712e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 713e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 714e0dac50fSopenharmony_ci 715e0dac50fSopenharmony_ci WMError res = windowController_->RemoveWindowNode(windowId, false); 716e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 717e0dac50fSopenharmony_ci} 718e0dac50fSopenharmony_ci 719e0dac50fSopenharmony_ci/** 720e0dac50fSopenharmony_ci * @tc.name: RemoveWindowNode 721e0dac50fSopenharmony_ci * @tc.desc: Window controller RemoveWindowNode 722e0dac50fSopenharmony_ci * @tc.type: FUNC 723e0dac50fSopenharmony_ci */ 724e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RemoveWindowNode1, Function | SmallTest | Level3) 725e0dac50fSopenharmony_ci{ 726e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 727e0dac50fSopenharmony_ci sptr<IWindow> window; 728e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 729e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 730e0dac50fSopenharmony_ci 731e0dac50fSopenharmony_ci uint32_t windowId; 732e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 733e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 734e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 735e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RemoveWindowNode1"; 736e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 737e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 738e0dac50fSopenharmony_ci 739e0dac50fSopenharmony_ci WMError res = windowController_->RemoveWindowNode(windowId, true); 740e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 741e0dac50fSopenharmony_ci} 742e0dac50fSopenharmony_ci 743e0dac50fSopenharmony_ci/** 744e0dac50fSopenharmony_ci * @tc.name: RemoveWindowNode 745e0dac50fSopenharmony_ci * @tc.desc: Window controller RemoveWindowNode 746e0dac50fSopenharmony_ci * @tc.type: FUNC 747e0dac50fSopenharmony_ci */ 748e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RemoveWindowNode2, Function | SmallTest | Level3) 749e0dac50fSopenharmony_ci{ 750e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 751e0dac50fSopenharmony_ci sptr<IWindow> window; 752e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 753e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 754e0dac50fSopenharmony_ci 755e0dac50fSopenharmony_ci uint32_t windowId; 756e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 757e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_KEYGUARD); 758e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 759e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RemoveWindowNode2"; 760e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 761e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 762e0dac50fSopenharmony_ci 763e0dac50fSopenharmony_ci WMError res = windowController_->RemoveWindowNode(windowId, true); 764e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 765e0dac50fSopenharmony_ci} 766e0dac50fSopenharmony_ci 767e0dac50fSopenharmony_ci/** 768e0dac50fSopenharmony_ci * @tc.name: DestroyWindow 769e0dac50fSopenharmony_ci * @tc.desc: Window controller DestroyWindow true 770e0dac50fSopenharmony_ci * @tc.type: FUNC 771e0dac50fSopenharmony_ci */ 772e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, DestroyWindow, Function | SmallTest | Level3) 773e0dac50fSopenharmony_ci{ 774e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 775e0dac50fSopenharmony_ci sptr<IWindow> window; 776e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 777e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 778e0dac50fSopenharmony_ci 779e0dac50fSopenharmony_ci uint32_t windowId; 780e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 781e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 782e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 783e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "DestroyWindow"; 784e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 785e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 786e0dac50fSopenharmony_ci 787e0dac50fSopenharmony_ci WMError res = windowController_->DestroyWindow(100, true); 788e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 789e0dac50fSopenharmony_ci 790e0dac50fSopenharmony_ci res = windowController_->DestroyWindow(windowId, true); 791e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 792e0dac50fSopenharmony_ci} 793e0dac50fSopenharmony_ci 794e0dac50fSopenharmony_ci/** 795e0dac50fSopenharmony_ci * @tc.name: DestroyWindow1 796e0dac50fSopenharmony_ci * @tc.desc: Window controller DestroyWindow false 797e0dac50fSopenharmony_ci * @tc.type: FUNC 798e0dac50fSopenharmony_ci */ 799e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, DestroyWindow1, Function | SmallTest | Level3) 800e0dac50fSopenharmony_ci{ 801e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 802e0dac50fSopenharmony_ci sptr<IWindow> window; 803e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 804e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 805e0dac50fSopenharmony_ci 806e0dac50fSopenharmony_ci uint32_t windowId; 807e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 808e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 809e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 810e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "DestroyWindow1"; 811e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 812e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 813e0dac50fSopenharmony_ci 814e0dac50fSopenharmony_ci WMError res = windowController_->DestroyWindow(100, false); 815e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 816e0dac50fSopenharmony_ci 817e0dac50fSopenharmony_ci res = windowController_->DestroyWindow(windowId, false); 818e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 819e0dac50fSopenharmony_ci} 820e0dac50fSopenharmony_ci 821e0dac50fSopenharmony_ci/** 822e0dac50fSopenharmony_ci * @tc.name: RequestFocus 823e0dac50fSopenharmony_ci * @tc.desc: Window controller RequestFocus false 824e0dac50fSopenharmony_ci * @tc.type: FUNC 825e0dac50fSopenharmony_ci */ 826e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RequestFocus, Function | SmallTest | Level3) 827e0dac50fSopenharmony_ci{ 828e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 829e0dac50fSopenharmony_ci sptr<IWindow> window; 830e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 831e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 832e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 833e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 834e0dac50fSopenharmony_ci 835e0dac50fSopenharmony_ci uint32_t windowId; 836e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 837e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 838e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 839e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RequestFocus"; 840e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 841e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 842e0dac50fSopenharmony_ci 843e0dac50fSopenharmony_ci WMError res = windowController_->RequestFocus(10); 844e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 845e0dac50fSopenharmony_ci 846e0dac50fSopenharmony_ci windowId = windowNode->GetWindowId(); 847e0dac50fSopenharmony_ci res = windowController_->RequestFocus(windowId); 848e0dac50fSopenharmony_ci if (!SceneBoardJudgement::IsSceneBoardEnabled()) { 849e0dac50fSopenharmony_ci ASSERT_NE(WMError::WM_ERROR_INVALID_OPERATION, res); 850e0dac50fSopenharmony_ci } else { 851e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 852e0dac50fSopenharmony_ci } 853e0dac50fSopenharmony_ci} 854e0dac50fSopenharmony_ci 855e0dac50fSopenharmony_ci/** 856e0dac50fSopenharmony_ci * @tc.name: NotifyDisplayStateChange 857e0dac50fSopenharmony_ci * @tc.desc: Window controller NotifyDisplayStateChange 858e0dac50fSopenharmony_ci * @tc.type: FUNC 859e0dac50fSopenharmony_ci */ 860e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyDisplayStateChange, Function | SmallTest | Level3) 861e0dac50fSopenharmony_ci{ 862e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 863e0dac50fSopenharmony_ci sptr<IWindow> window; 864e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 865e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 866e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 867e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 868e0dac50fSopenharmony_ci 869e0dac50fSopenharmony_ci uint32_t windowId; 870e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 871e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 872e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 873e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "NotifyDisplayStateChange"; 874e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 875e0dac50fSopenharmony_ci 876e0dac50fSopenharmony_ci DisplayId defaultDisplayId = 0; 877e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 878e0dac50fSopenharmony_ci std::map < DisplayId, sptr < DisplayInfo >> displayInfoMap; 879e0dac50fSopenharmony_ci 880e0dac50fSopenharmony_ci DisplayStateChangeType type = DisplayStateChangeType::BEFORE_SUSPEND; 881e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 882e0dac50fSopenharmony_ci type = DisplayStateChangeType::BEFORE_UNLOCK; 883e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 884e0dac50fSopenharmony_ci type = DisplayStateChangeType::CREATE; 885e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 886e0dac50fSopenharmony_ci type = DisplayStateChangeType::DESTROY; 887e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 888e0dac50fSopenharmony_ci type = DisplayStateChangeType::VIRTUAL_PIXEL_RATIO_CHANGE; 889e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 890e0dac50fSopenharmony_ci type = DisplayStateChangeType::UNKNOWN; 891e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 892e0dac50fSopenharmony_ci 893e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 894e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 895e0dac50fSopenharmony_ci} 896e0dac50fSopenharmony_ci 897e0dac50fSopenharmony_ci/** 898e0dac50fSopenharmony_ci * @tc.name: NotifyDisplayStateChange 899e0dac50fSopenharmony_ci * @tc.desc: Window controller NotifyDisplayStateChange 900e0dac50fSopenharmony_ci * @tc.type: FUNC 901e0dac50fSopenharmony_ci */ 902e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyDisplayStateChange1, Function | SmallTest | Level3) 903e0dac50fSopenharmony_ci{ 904e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 905e0dac50fSopenharmony_ci sptr<IWindow> window; 906e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 907e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 908e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 909e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 910e0dac50fSopenharmony_ci 911e0dac50fSopenharmony_ci uint32_t windowId; 912e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 913e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 914e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 915e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "NotifyDisplayStateChange1"; 916e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 917e0dac50fSopenharmony_ci 918e0dac50fSopenharmony_ci DisplayId defaultDisplayId = 0; 919e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 920e0dac50fSopenharmony_ci std::map < DisplayId, sptr < DisplayInfo >> displayInfoMap; 921e0dac50fSopenharmony_ci 922e0dac50fSopenharmony_ci DisplayStateChangeType type = DisplayStateChangeType::VIRTUAL_PIXEL_RATIO_CHANGE; 923e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 924e0dac50fSopenharmony_ci 925e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 926e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 927e0dac50fSopenharmony_ci} 928e0dac50fSopenharmony_ci 929e0dac50fSopenharmony_ci/** 930e0dac50fSopenharmony_ci * @tc.name: ProcessDisplayChange 931e0dac50fSopenharmony_ci * @tc.desc: Window controller ProcessDisplayChange 932e0dac50fSopenharmony_ci * @tc.type: FUNC 933e0dac50fSopenharmony_ci */ 934e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessDisplayChange, Function | SmallTest | Level3) 935e0dac50fSopenharmony_ci{ 936e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 937e0dac50fSopenharmony_ci sptr<IWindow> window; 938e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 939e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 940e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 941e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 942e0dac50fSopenharmony_ci 943e0dac50fSopenharmony_ci uint32_t windowId; 944e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 945e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 946e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 947e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessDisplayChange"; 948e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 949e0dac50fSopenharmony_ci 950e0dac50fSopenharmony_ci DisplayId defaultDisplayId = 0; 951e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = new DisplayInfo(); 952e0dac50fSopenharmony_ci std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap; 953e0dac50fSopenharmony_ci DisplayStateChangeType type = DisplayStateChangeType::VIRTUAL_PIXEL_RATIO_CHANGE; 954e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 955e0dac50fSopenharmony_ci 956e0dac50fSopenharmony_ci displayInfo->SetDisplayId(defaultDisplayId); 957e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo, displayInfoMap, type); 958e0dac50fSopenharmony_ci 959e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo1 = nullptr; 960e0dac50fSopenharmony_ci windowController_->NotifyDisplayStateChange(defaultDisplayId, displayInfo1, displayInfoMap, type); 961e0dac50fSopenharmony_ci 962e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 963e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 964e0dac50fSopenharmony_ci} 965e0dac50fSopenharmony_ci 966e0dac50fSopenharmony_ci/** 967e0dac50fSopenharmony_ci * @tc.name: ChangeMouseStyle 968e0dac50fSopenharmony_ci * @tc.desc: Window controller ChangeMouseStyle width > height 969e0dac50fSopenharmony_ci * @tc.type: FUNC 970e0dac50fSopenharmony_ci */ 971e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ChangeMouseStyle1, Function | SmallTest | Level3) 972e0dac50fSopenharmony_ci{ 973e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 974e0dac50fSopenharmony_ci sptr<IWindow> window; 975e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 976e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 977e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 978e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 979e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 980e0dac50fSopenharmony_ci windowNode->SetWindowRect({50, 50, 100, 50}); 981e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 982e0dac50fSopenharmony_ci 983e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 984e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 985e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ChangeMouseStyle1"; 986e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 987e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 988e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 989e0dac50fSopenharmony_ci 990e0dac50fSopenharmony_ci sptr<MoveDragProperty> moveDragProperty; 991e0dac50fSopenharmony_ci WMError res = windowController_->ChangeMouseStyle(windowId, moveDragProperty); 992e0dac50fSopenharmony_ci if (SceneBoardJudgement::IsSceneBoardEnabled()) { 993e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 994e0dac50fSopenharmony_ci } else { 995e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 996e0dac50fSopenharmony_ci } 997e0dac50fSopenharmony_ci} 998e0dac50fSopenharmony_ci 999e0dac50fSopenharmony_ci/** 1000e0dac50fSopenharmony_ci * @tc.name: ChangeMouseStyle 1001e0dac50fSopenharmony_ci * @tc.desc: Window controller ChangeMouseStyle width < height 1002e0dac50fSopenharmony_ci * @tc.type: FUNC 1003e0dac50fSopenharmony_ci */ 1004e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ChangeMouseStyle2, Function | SmallTest | Level3) 1005e0dac50fSopenharmony_ci{ 1006e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1007e0dac50fSopenharmony_ci sptr<IWindow> window; 1008e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1009e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1010e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1011e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 1012e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1013e0dac50fSopenharmony_ci windowNode->SetWindowRect({50, 50, 20, 50}); 1014e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1015e0dac50fSopenharmony_ci 1016e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1017e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1018e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ChangeMouseStyle2"; 1019e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1020e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1021e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1022e0dac50fSopenharmony_ci 1023e0dac50fSopenharmony_ci sptr<MoveDragProperty> moveDragProperty; 1024e0dac50fSopenharmony_ci WMError res = windowController_->ChangeMouseStyle(windowId, moveDragProperty); 1025e0dac50fSopenharmony_ci if (SceneBoardJudgement::IsSceneBoardEnabled()) { 1026e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1027e0dac50fSopenharmony_ci } else { 1028e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1029e0dac50fSopenharmony_ci } 1030e0dac50fSopenharmony_ci} 1031e0dac50fSopenharmony_ci 1032e0dac50fSopenharmony_ci/** 1033e0dac50fSopenharmony_ci * @tc.name: ChangeMouseStyle 1034e0dac50fSopenharmony_ci * @tc.desc: Window controller ChangeMouseStyle 1035e0dac50fSopenharmony_ci * @tc.type: FUNC 1036e0dac50fSopenharmony_ci */ 1037e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ChangeMouseStyle3, Function | SmallTest | Level3) 1038e0dac50fSopenharmony_ci{ 1039e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1040e0dac50fSopenharmony_ci sptr<IWindow> window; 1041e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1042e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1043e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1044e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1045e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1046e0dac50fSopenharmony_ci windowNode->SetWindowRect({50, 50, 50, 50}); 1047e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1048e0dac50fSopenharmony_ci 1049e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1050e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1051e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ChangeMouseStyle3"; 1052e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1053e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1054e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1055e0dac50fSopenharmony_ci 1056e0dac50fSopenharmony_ci sptr<MoveDragProperty> moveDragProperty = new MoveDragProperty(); 1057e0dac50fSopenharmony_ci moveDragProperty->dragType_ = DragType::DRAG_UNDEFINED; 1058e0dac50fSopenharmony_ci WMError res = windowController_->ChangeMouseStyle(windowId, moveDragProperty); 1059e0dac50fSopenharmony_ci if (!SceneBoardJudgement::IsSceneBoardEnabled()) { 1060e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1061e0dac50fSopenharmony_ci } else { 1062e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1063e0dac50fSopenharmony_ci } 1064e0dac50fSopenharmony_ci} 1065e0dac50fSopenharmony_ci 1066e0dac50fSopenharmony_ci/** 1067e0dac50fSopenharmony_ci * @tc.name: NotifyServerReadyToMoveOrDrag 1068e0dac50fSopenharmony_ci * @tc.desc: Window controller NotifyServerReadyToMoveOrDrag1 1069e0dac50fSopenharmony_ci * @tc.type: FUNC 1070e0dac50fSopenharmony_ci */ 1071e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyServerReadyToMoveOrDrag1, Function | SmallTest | Level3) 1072e0dac50fSopenharmony_ci{ 1073e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1074e0dac50fSopenharmony_ci sptr<IWindow> window; 1075e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1076e0dac50fSopenharmony_ci property->SetMaximizeMode(MaximizeMode::MODE_AVOID_SYSTEM_BAR); 1077e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1078e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1079e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1080e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1081e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1082e0dac50fSopenharmony_ci 1083e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1084e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1085e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "NotifyServerReadyToMoveOrDrag1"; 1086e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1087e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1088e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1089e0dac50fSopenharmony_ci 1090e0dac50fSopenharmony_ci sptr<MoveDragProperty> moveDragProperty = new MoveDragProperty(); 1091e0dac50fSopenharmony_ci WMError res = windowController_->NotifyServerReadyToMoveOrDrag(10, moveDragProperty); 1092e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1093e0dac50fSopenharmony_ci 1094e0dac50fSopenharmony_ci ASSERT_EQ(windowNode->currentVisibility_, false); 1095e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1096e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1097e0dac50fSopenharmony_ci 1098e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1099e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1100e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1101e0dac50fSopenharmony_ci} 1102e0dac50fSopenharmony_ci 1103e0dac50fSopenharmony_ci/** 1104e0dac50fSopenharmony_ci * @tc.name: NotifyServerReadyToMoveOrDrag 1105e0dac50fSopenharmony_ci * @tc.desc: Window controller NotifyServerReadyToMoveOrDrag2 1106e0dac50fSopenharmony_ci * @tc.type: FUNC 1107e0dac50fSopenharmony_ci */ 1108e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyServerReadyToMoveOrDrag2, Function | SmallTest | Level3) 1109e0dac50fSopenharmony_ci{ 1110e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1111e0dac50fSopenharmony_ci sptr<IWindow> window; 1112e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1113e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1114e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1115e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1116e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1117e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1118e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1119e0dac50fSopenharmony_ci 1120e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1121e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1122e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "NotifyServerReadyToMoveOrDrag2"; 1123e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1124e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1125e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1126e0dac50fSopenharmony_ci 1127e0dac50fSopenharmony_ci sptr<MoveDragProperty> moveDragProperty = new MoveDragProperty(); 1128e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = false; 1129e0dac50fSopenharmony_ci moveDragProperty->startDragFlag_ = false; 1130e0dac50fSopenharmony_ci WMError res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1131e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1132e0dac50fSopenharmony_ci 1133e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = true; 1134e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1135e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1136e0dac50fSopenharmony_ci 1137e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = false; 1138e0dac50fSopenharmony_ci moveDragProperty->startDragFlag_ = true; 1139e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1140e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1141e0dac50fSopenharmony_ci 1142e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = true; 1143e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1144e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1145e0dac50fSopenharmony_ci} 1146e0dac50fSopenharmony_ci 1147e0dac50fSopenharmony_ci/** 1148e0dac50fSopenharmony_ci * @tc.name: NotifyServerReadyToMoveOrDrag 1149e0dac50fSopenharmony_ci * @tc.desc: Window controller NotifyServerReadyToMoveOrDrag WindowType = WINDOW_TYPE_DOCK_SLICE 1150e0dac50fSopenharmony_ci * @tc.type: FUNC 1151e0dac50fSopenharmony_ci */ 1152e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyServerReadyToMoveOrDrag3, Function | SmallTest | Level3) 1153e0dac50fSopenharmony_ci{ 1154e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1155e0dac50fSopenharmony_ci sptr<IWindow> window; 1156e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1157e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1158e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1159e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1160e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 1161e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1162e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1163e0dac50fSopenharmony_ci 1164e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1165e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1166e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "NotifyServerReadyToMoveOrDrag3"; 1167e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1168e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1169e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1170e0dac50fSopenharmony_ci 1171e0dac50fSopenharmony_ci sptr<MoveDragProperty> moveDragProperty = new MoveDragProperty(); 1172e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = false; 1173e0dac50fSopenharmony_ci moveDragProperty->startDragFlag_ = false; 1174e0dac50fSopenharmony_ci WMError res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1175e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1176e0dac50fSopenharmony_ci 1177e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = true; 1178e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1179e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1180e0dac50fSopenharmony_ci 1181e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = false; 1182e0dac50fSopenharmony_ci moveDragProperty->startDragFlag_ = true; 1183e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1184e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1185e0dac50fSopenharmony_ci 1186e0dac50fSopenharmony_ci moveDragProperty->startMoveFlag_ = true; 1187e0dac50fSopenharmony_ci res = windowController_->NotifyServerReadyToMoveOrDrag(windowId, moveDragProperty); 1188e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1189e0dac50fSopenharmony_ci} 1190e0dac50fSopenharmony_ci 1191e0dac50fSopenharmony_ci/** 1192e0dac50fSopenharmony_ci * @tc.name: ProcessPointDown 1193e0dac50fSopenharmony_ci * @tc.desc: Window controller ProcessPointDown 1194e0dac50fSopenharmony_ci * @tc.type: FUNC 1195e0dac50fSopenharmony_ci */ 1196e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessPointDown1, Function | SmallTest | Level3) 1197e0dac50fSopenharmony_ci{ 1198e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1199e0dac50fSopenharmony_ci sptr<IWindow> window; 1200e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1201e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1202e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1203e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1204e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1205e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1206e0dac50fSopenharmony_ci 1207e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1208e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1209e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessPointDown1"; 1210e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1211e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1212e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1213e0dac50fSopenharmony_ci 1214e0dac50fSopenharmony_ci bool isPointDown = true; 1215e0dac50fSopenharmony_ci WMError res = windowController_->ProcessPointDown(10, isPointDown); 1216e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1217e0dac50fSopenharmony_ci 1218e0dac50fSopenharmony_ci ASSERT_EQ(windowNode->currentVisibility_, false); 1219e0dac50fSopenharmony_ci res = windowController_->ProcessPointDown(windowId, isPointDown); 1220e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1221e0dac50fSopenharmony_ci 1222e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1223e0dac50fSopenharmony_ci res = windowController_->ProcessPointDown(windowId, isPointDown); 1224e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1225e0dac50fSopenharmony_ci} 1226e0dac50fSopenharmony_ci 1227e0dac50fSopenharmony_ci/** 1228e0dac50fSopenharmony_ci * @tc.name: ProcessPointDown 1229e0dac50fSopenharmony_ci * @tc.desc: Window controller ProcessPointDown 1230e0dac50fSopenharmony_ci * @tc.type: FUNC 1231e0dac50fSopenharmony_ci */ 1232e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessPointDown2, Function | SmallTest | Level3) 1233e0dac50fSopenharmony_ci{ 1234e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1235e0dac50fSopenharmony_ci sptr<IWindow> window; 1236e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1237e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1238e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1239e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1240e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 1241e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1242e0dac50fSopenharmony_ci 1243e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1244e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1245e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessPointDown2"; 1246e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1247e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1248e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1249e0dac50fSopenharmony_ci 1250e0dac50fSopenharmony_ci bool isPointDown = true; 1251e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1252e0dac50fSopenharmony_ci WMError res = windowController_->ProcessPointDown(windowId, isPointDown); 1253e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1254e0dac50fSopenharmony_ci 1255e0dac50fSopenharmony_ci isPointDown = false; 1256e0dac50fSopenharmony_ci res = windowController_->ProcessPointDown(windowId, isPointDown); 1257e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1258e0dac50fSopenharmony_ci} 1259e0dac50fSopenharmony_ci 1260e0dac50fSopenharmony_ci/** 1261e0dac50fSopenharmony_ci * @tc.name: ProcessPointUp 1262e0dac50fSopenharmony_ci * @tc.desc: Window controller ProcessPointUp WindowType = WINDOW_TYPE_DOCK_SLICE 1263e0dac50fSopenharmony_ci * @tc.type: FUNC 1264e0dac50fSopenharmony_ci */ 1265e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessPointUp, Function | SmallTest | Level3) 1266e0dac50fSopenharmony_ci{ 1267e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1268e0dac50fSopenharmony_ci sptr<IWindow> window; 1269e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1270e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1271e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1272e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1273e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 1274e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1275e0dac50fSopenharmony_ci 1276e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1277e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1278e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessPointUp"; 1279e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1280e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1281e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1282e0dac50fSopenharmony_ci 1283e0dac50fSopenharmony_ci WMError res = windowController_->ProcessPointUp(10); 1284e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1285e0dac50fSopenharmony_ci 1286e0dac50fSopenharmony_ci res = windowController_->ProcessPointUp(windowId); 1287e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1288e0dac50fSopenharmony_ci} 1289e0dac50fSopenharmony_ci 1290e0dac50fSopenharmony_ci/** 1291e0dac50fSopenharmony_ci * @tc.name: ProcessPointUp2 1292e0dac50fSopenharmony_ci * @tc.desc: Window controller ProcessPointUp2 WindowType = WINDOW_TYPE_APP_MAIN_WINDOW 1293e0dac50fSopenharmony_ci * @tc.type: FUNC 1294e0dac50fSopenharmony_ci */ 1295e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessPointUp2, Function | SmallTest | Level3) 1296e0dac50fSopenharmony_ci{ 1297e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1298e0dac50fSopenharmony_ci sptr<IWindow> window; 1299e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1300e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1301e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1302e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1303e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 1304e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1305e0dac50fSopenharmony_ci 1306e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1307e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1308e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessPointUp2"; 1309e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1310e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1311e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1312e0dac50fSopenharmony_ci 1313e0dac50fSopenharmony_ci WMError res = windowController_->ProcessPointUp(windowId); 1314e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1315e0dac50fSopenharmony_ci} 1316e0dac50fSopenharmony_ci 1317e0dac50fSopenharmony_ci/** 1318e0dac50fSopenharmony_ci * @tc.name: ProcessPointUp3 1319e0dac50fSopenharmony_ci * @tc.desc: Window controller ProcessPointUp3 WindowType = APP_WINDOW_BASE 1320e0dac50fSopenharmony_ci * @tc.type: FUNC 1321e0dac50fSopenharmony_ci */ 1322e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ProcessPointUp3, Function | SmallTest | Level3) 1323e0dac50fSopenharmony_ci{ 1324e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1325e0dac50fSopenharmony_ci sptr<IWindow> window; 1326e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1327e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1328e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1329e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1330e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1331e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1332e0dac50fSopenharmony_ci 1333e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1334e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1335e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessPointUp3"; 1336e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1337e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1338e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1339e0dac50fSopenharmony_ci 1340e0dac50fSopenharmony_ci WMError res = windowController_->ProcessPointUp(windowId); 1341e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1342e0dac50fSopenharmony_ci} 1343e0dac50fSopenharmony_ci 1344e0dac50fSopenharmony_ci/** 1345e0dac50fSopenharmony_ci * @tc.name: InterceptInputEventToServer 1346e0dac50fSopenharmony_ci * @tc.desc: Window controller InterceptInputEventToServer 1347e0dac50fSopenharmony_ci * @tc.type: FUNC 1348e0dac50fSopenharmony_ci */ 1349e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, InterceptInputEventToServer, Function | SmallTest | Level3) 1350e0dac50fSopenharmony_ci{ 1351e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1352e0dac50fSopenharmony_ci sptr<IWindow> window; 1353e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1354e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1355e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1356e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1357e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1358e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1359e0dac50fSopenharmony_ci 1360e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1361e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1362e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "InterceptInputEventToServer"; 1363e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1364e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1365e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1366e0dac50fSopenharmony_ci 1367e0dac50fSopenharmony_ci WMError res = windowController_->InterceptInputEventToServer(10); 1368e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1369e0dac50fSopenharmony_ci 1370e0dac50fSopenharmony_ci res = windowController_->InterceptInputEventToServer(windowId); 1371e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1372e0dac50fSopenharmony_ci} 1373e0dac50fSopenharmony_ci 1374e0dac50fSopenharmony_ci/** 1375e0dac50fSopenharmony_ci * @tc.name: RecoverInputEventToClient 1376e0dac50fSopenharmony_ci * @tc.desc: Window controller RecoverInputEventToClient 1377e0dac50fSopenharmony_ci * @tc.type: FUNC 1378e0dac50fSopenharmony_ci */ 1379e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RecoverInputEventToClient, Function | SmallTest | Level3) 1380e0dac50fSopenharmony_ci{ 1381e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1382e0dac50fSopenharmony_ci sptr<IWindow> window; 1383e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1384e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1385e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1386e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1387e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1388e0dac50fSopenharmony_ci windowNode->SetInputEventCallingPid(2048); 1389e0dac50fSopenharmony_ci windowNode->SetCallingPid(2048); 1390e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1391e0dac50fSopenharmony_ci 1392e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1393e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1394e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RecoverInputEventToClient"; 1395e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1396e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1397e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1398e0dac50fSopenharmony_ci 1399e0dac50fSopenharmony_ci WMError res = windowController_->RecoverInputEventToClient(10); 1400e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1401e0dac50fSopenharmony_ci 1402e0dac50fSopenharmony_ci res = windowController_->RecoverInputEventToClient(windowId); 1403e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1404e0dac50fSopenharmony_ci} 1405e0dac50fSopenharmony_ci 1406e0dac50fSopenharmony_ci/** 1407e0dac50fSopenharmony_ci * @tc.name: RecoverInputEventToClient2 1408e0dac50fSopenharmony_ci * @tc.desc: Window controller RecoverInputEventToClient2 1409e0dac50fSopenharmony_ci * @tc.type: FUNC 1410e0dac50fSopenharmony_ci */ 1411e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RecoverInputEventToClient2, Function | SmallTest | Level3) 1412e0dac50fSopenharmony_ci{ 1413e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1414e0dac50fSopenharmony_ci sptr<IWindow> window; 1415e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1416e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1417e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1418e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1419e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1420e0dac50fSopenharmony_ci windowNode->SetInputEventCallingPid(2048); 1421e0dac50fSopenharmony_ci windowNode->SetCallingPid(1024); 1422e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1423e0dac50fSopenharmony_ci 1424e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1425e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1426e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RecoverInputEventToClient2"; 1427e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1428e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1429e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1430e0dac50fSopenharmony_ci 1431e0dac50fSopenharmony_ci WMError res = windowController_->RecoverInputEventToClient(windowId); 1432e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1433e0dac50fSopenharmony_ci} 1434e0dac50fSopenharmony_ci 1435e0dac50fSopenharmony_ci/** 1436e0dac50fSopenharmony_ci * @tc.name: RecoverDefaultMouseStyle 1437e0dac50fSopenharmony_ci * @tc.desc: Window controller RecoverDefaultMouseStyle 1438e0dac50fSopenharmony_ci * @tc.type: FUNC 1439e0dac50fSopenharmony_ci */ 1440e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, RecoverDefaultMouseStyle, Function | SmallTest | Level3) 1441e0dac50fSopenharmony_ci{ 1442e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1443e0dac50fSopenharmony_ci sptr<IWindow> window; 1444e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1445e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1446e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1447e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1448e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1449e0dac50fSopenharmony_ci windowNode->SetInputEventCallingPid(2048); 1450e0dac50fSopenharmony_ci windowNode->SetCallingPid(1024); 1451e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1452e0dac50fSopenharmony_ci 1453e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1454e0dac50fSopenharmony_ci windowController_->RecoverDefaultMouseStyle(windowId); 1455e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1456e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "RecoverDefaultMouseStyle"; 1457e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1458e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1459e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1460e0dac50fSopenharmony_ci} 1461e0dac50fSopenharmony_ci 1462e0dac50fSopenharmony_ci/** 1463e0dac50fSopenharmony_ci * @tc.name: DispatchKeyEvent 1464e0dac50fSopenharmony_ci * @tc.desc: Window controller DispatchKeyEvent 1465e0dac50fSopenharmony_ci * @tc.type: FUNC 1466e0dac50fSopenharmony_ci */ 1467e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, DispatchKeyEvent, Function | SmallTest | Level3) 1468e0dac50fSopenharmony_ci{ 1469e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1470e0dac50fSopenharmony_ci sptr<IWindow> window; 1471e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1472e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1473e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1474e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1475e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1476e0dac50fSopenharmony_ci windowNode->SetInputEventCallingPid(2048); 1477e0dac50fSopenharmony_ci windowNode->SetCallingPid(2048); 1478e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1479e0dac50fSopenharmony_ci 1480e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1481e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1482e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "DispatchKeyEvent"; 1483e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1484e0dac50fSopenharmony_ci std::shared_ptr<MMI::KeyEvent> event = nullptr; 1485e0dac50fSopenharmony_ci windowController_->DispatchKeyEvent(10, event); 1486e0dac50fSopenharmony_ci windowController_->DispatchKeyEvent(windowId, event); 1487e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1488e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1489e0dac50fSopenharmony_ci} 1490e0dac50fSopenharmony_ci 1491e0dac50fSopenharmony_ci/** 1492e0dac50fSopenharmony_ci * @tc.name: DispatchKeyEvent 1493e0dac50fSopenharmony_ci * @tc.desc: Window controller DispatchKeyEvent WindowType = WINDOW_TYPE_APP_COMPONENT 1494e0dac50fSopenharmony_ci * @tc.type: FUNC 1495e0dac50fSopenharmony_ci */ 1496e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, DispatchKeyEvent2, Function | SmallTest | Level3) 1497e0dac50fSopenharmony_ci{ 1498e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1499e0dac50fSopenharmony_ci sptr<IWindow> window; 1500e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1501e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1502e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1503e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1504e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_COMPONENT); 1505e0dac50fSopenharmony_ci windowNode->SetInputEventCallingPid(2048); 1506e0dac50fSopenharmony_ci windowNode->SetCallingPid(2048); 1507e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1508e0dac50fSopenharmony_ci 1509e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1510e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1511e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "DispatchKeyEvent2"; 1512e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1513e0dac50fSopenharmony_ci 1514e0dac50fSopenharmony_ci std::shared_ptr<MMI::KeyEvent> event = nullptr; 1515e0dac50fSopenharmony_ci windowController_->DispatchKeyEvent(windowId, event); 1516e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_PARENT, 1517e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1518e0dac50fSopenharmony_ci} 1519e0dac50fSopenharmony_ci 1520e0dac50fSopenharmony_ci/** 1521e0dac50fSopenharmony_ci * @tc.name: NotifyWindowClientPointUp 1522e0dac50fSopenharmony_ci * @tc.desc: Window controller NotifyWindowClientPointUp 1523e0dac50fSopenharmony_ci * @tc.type: FUNC 1524e0dac50fSopenharmony_ci */ 1525e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, NotifyWindowClientPointUp, Function | SmallTest | Level3) 1526e0dac50fSopenharmony_ci{ 1527e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1528e0dac50fSopenharmony_ci sptr<IWindow> window; 1529e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1530e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1531e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1532e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1533e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 1534e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1535e0dac50fSopenharmony_ci 1536e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1537e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1538e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ProcessPointUp"; 1539e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1540e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1541e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1542e0dac50fSopenharmony_ci 1543e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = nullptr; 1544e0dac50fSopenharmony_ci WMError res = windowController_->NotifyWindowClientPointUp(10, pointerEvent); 1545e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1546e0dac50fSopenharmony_ci 1547e0dac50fSopenharmony_ci res = windowController_->NotifyWindowClientPointUp(windowId, pointerEvent); 1548e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1549e0dac50fSopenharmony_ci} 1550e0dac50fSopenharmony_ci 1551e0dac50fSopenharmony_ci/** 1552e0dac50fSopenharmony_ci * @tc.name: MinimizeAllAppWindows 1553e0dac50fSopenharmony_ci * @tc.desc: Window controller MinimizeAllAppWindows 1554e0dac50fSopenharmony_ci * @tc.type: FUNC 1555e0dac50fSopenharmony_ci */ 1556e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, MinimizeAllAppWindows, Function | SmallTest | Level3) 1557e0dac50fSopenharmony_ci{ 1558e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1559e0dac50fSopenharmony_ci sptr<IWindow> window; 1560e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1561e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1562e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1563e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1564e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1565e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1566e0dac50fSopenharmony_ci 1567e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1568e0dac50fSopenharmony_ci windowController_->MinimizeAllAppWindows(0); 1569e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1570e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "MinimizeAllAppWindows"; 1571e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1572e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1573e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1574e0dac50fSopenharmony_ci} 1575e0dac50fSopenharmony_ci 1576e0dac50fSopenharmony_ci/** 1577e0dac50fSopenharmony_ci * @tc.name: ToggleShownStateForAllAppWindows 1578e0dac50fSopenharmony_ci * @tc.desc: Window controller ToggleShownStateForAllAppWindows 1579e0dac50fSopenharmony_ci * @tc.type: FUNC 1580e0dac50fSopenharmony_ci */ 1581e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, ToggleShownStateForAllAppWindows, Function | SmallTest | Level3) 1582e0dac50fSopenharmony_ci{ 1583e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1584e0dac50fSopenharmony_ci sptr<IWindow> window; 1585e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1586e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1587e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1588e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1589e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1590e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1591e0dac50fSopenharmony_ci 1592e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1593e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1594e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "ToggleShownStateForAllAppWindows"; 1595e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1596e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1597e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1598e0dac50fSopenharmony_ci 1599e0dac50fSopenharmony_ci WMError res = windowController_->ToggleShownStateForAllAppWindows(); 1600e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1601e0dac50fSopenharmony_ci} 1602e0dac50fSopenharmony_ci 1603e0dac50fSopenharmony_ci/** 1604e0dac50fSopenharmony_ci * @tc.name: GetUnreliableWindowInfo 1605e0dac50fSopenharmony_ci * @tc.desc: Window controller window is unreliable window 1606e0dac50fSopenharmony_ci * @tc.type: FUNC 1607e0dac50fSopenharmony_ci */ 1608e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, GetUnreliableWindowInfo1, Function | SmallTest | Level3) 1609e0dac50fSopenharmony_ci{ 1610e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1611e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1612e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1613e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_TOAST); 1614e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1615e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowNode); 1616e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1617e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode->GetWindowId(), windowNode)); 1618e0dac50fSopenharmony_ci std::vector<sptr<UnreliableWindowInfo>> infos; 1619e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetUnreliableWindowInfo(0, infos)); 1620e0dac50fSopenharmony_ci EXPECT_EQ(1, infos.size()); 1621e0dac50fSopenharmony_ci 1622e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 1623e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property2); 1624e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_INPUT_METHOD_FLOAT); 1625e0dac50fSopenharmony_ci sptr<WindowNode> windowNode2 = new WindowNode(property2); 1626e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowNode2); 1627e0dac50fSopenharmony_ci windowNode2->currentVisibility_ = true; 1628e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode2->GetWindowId(), windowNode2)); 1629e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetUnreliableWindowInfo(0, infos)); 1630e0dac50fSopenharmony_ci EXPECT_EQ(2, infos.size()); 1631e0dac50fSopenharmony_ci 1632e0dac50fSopenharmony_ci sptr<WindowProperty> property3 = new WindowProperty(); 1633e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property3); 1634e0dac50fSopenharmony_ci property3->SetParentId(windowNode->GetWindowId()); 1635e0dac50fSopenharmony_ci property3->SetWindowType(WindowType::WINDOW_TYPE_APP_SUB_WINDOW); 1636e0dac50fSopenharmony_ci sptr<WindowNode> windowNode3 = new WindowNode(property3); 1637e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowNode3); 1638e0dac50fSopenharmony_ci windowNode3->currentVisibility_ = true; 1639e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(windowNode3->GetWindowId(), windowNode3)); 1640e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetUnreliableWindowInfo(0, infos)); 1641e0dac50fSopenharmony_ci EXPECT_EQ(3, infos.size()); 1642e0dac50fSopenharmony_ci} 1643e0dac50fSopenharmony_ci 1644e0dac50fSopenharmony_ci/** 1645e0dac50fSopenharmony_ci * @tc.name: GetUnreliableWindowInfo 1646e0dac50fSopenharmony_ci * @tc.desc: Window controller windowId is equal to the parameter 1647e0dac50fSopenharmony_ci * @tc.type: FUNC 1648e0dac50fSopenharmony_ci */ 1649e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, GetUnreliableWindowInfo2, Function | SmallTest | Level3) 1650e0dac50fSopenharmony_ci{ 1651e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1652e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1653e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1654e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1655e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowNode); 1656e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1657e0dac50fSopenharmony_ci std::vector<sptr<UnreliableWindowInfo>> infos; 1658e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetUnreliableWindowInfo(1, infos)); 1659e0dac50fSopenharmony_ci ASSERT_EQ(false, infos.empty()); 1660e0dac50fSopenharmony_ci} 1661e0dac50fSopenharmony_ci 1662e0dac50fSopenharmony_ci/** 1663e0dac50fSopenharmony_ci * @tc.name: GetUnreliableWindowInfo 1664e0dac50fSopenharmony_ci * @tc.desc: Window controller window type is not correct, window is invisible 1665e0dac50fSopenharmony_ci * @tc.type: FUNC 1666e0dac50fSopenharmony_ci */ 1667e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, GetUnreliableWindowInfo3, Function | SmallTest | Level3) 1668e0dac50fSopenharmony_ci{ 1669e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1670e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1671e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1672e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 1673e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1674e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowNode); 1675e0dac50fSopenharmony_ci windowNode->currentVisibility_ = true; 1676e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1677e0dac50fSopenharmony_ci std::vector<sptr<UnreliableWindowInfo>> infos; 1678e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetUnreliableWindowInfo(0, infos)); 1679e0dac50fSopenharmony_ci ASSERT_EQ(true, infos.empty()); 1680e0dac50fSopenharmony_ci 1681e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1682e0dac50fSopenharmony_ci windowNode->currentVisibility_ = false; 1683e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(1, windowNode)); 1684e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, windowController_->GetUnreliableWindowInfo(0, infos)); 1685e0dac50fSopenharmony_ci ASSERT_EQ(true, infos.empty()); 1686e0dac50fSopenharmony_ci} 1687e0dac50fSopenharmony_ci 1688e0dac50fSopenharmony_ci/** 1689e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1690e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty property is nullptr 1691e0dac50fSopenharmony_ci * @tc.type: FUNC 1692e0dac50fSopenharmony_ci */ 1693e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty1, Function | SmallTest | Level3) 1694e0dac50fSopenharmony_ci{ 1695e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1696e0dac50fSopenharmony_ci sptr<WindowProperty> property = nullptr; 1697e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_RECT; 1698e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1699e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1700e0dac50fSopenharmony_ci} 1701e0dac50fSopenharmony_ci 1702e0dac50fSopenharmony_ci/** 1703e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1704e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty windowRoot_ is nullptr 1705e0dac50fSopenharmony_ci * @tc.type: FUNC 1706e0dac50fSopenharmony_ci */ 1707e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty2, Function | SmallTest | Level3) 1708e0dac50fSopenharmony_ci{ 1709e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1710e0dac50fSopenharmony_ci sptr<IWindow> window; 1711e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1712e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1713e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1714e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1715e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1716e0dac50fSopenharmony_ci 1717e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1718e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowRoot_->GetWindowNode(windowId)); 1719e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1720e0dac50fSopenharmony_ci 1721e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_RECT; 1722e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1723e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_NULLPTR, res); 1724e0dac50fSopenharmony_ci} 1725e0dac50fSopenharmony_ci 1726e0dac50fSopenharmony_ci/** 1727e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1728e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_RECT 1729e0dac50fSopenharmony_ci * @tc.type: FUNC 1730e0dac50fSopenharmony_ci */ 1731e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty3, Function | SmallTest | Level3) 1732e0dac50fSopenharmony_ci{ 1733e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1734e0dac50fSopenharmony_ci sptr<IWindow> window; 1735e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1736e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1737e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1738e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1739e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1740e0dac50fSopenharmony_ci 1741e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1742e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1743e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty3"; 1744e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1745e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1746e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1747e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1748e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1749e0dac50fSopenharmony_ci 1750e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_RECT; 1751e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1752e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 1753e0dac50fSopenharmony_ci 1754e0dac50fSopenharmony_ci windowNode->SetWindowRect({50, 50, 50, 50}); 1755e0dac50fSopenharmony_ci windowNode->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 1756e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 1757e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1758e0dac50fSopenharmony_ci 1759e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_STATUS_BAR); 1760e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::UNDEFINED); 1761e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 1762e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1763e0dac50fSopenharmony_ci 1764e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::RESIZE); 1765e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 1766e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1767e0dac50fSopenharmony_ci 1768e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::MOVE); 1769e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 1770e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1771e0dac50fSopenharmony_ci} 1772e0dac50fSopenharmony_ci 1773e0dac50fSopenharmony_ci/** 1774e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1775e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_MODE 1776e0dac50fSopenharmony_ci * @tc.type: FUNC 1777e0dac50fSopenharmony_ci */ 1778e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty4, Function | SmallTest | Level3) 1779e0dac50fSopenharmony_ci{ 1780e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1781e0dac50fSopenharmony_ci sptr<IWindow> window; 1782e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1783e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1784e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1785e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1786e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1787e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1788e0dac50fSopenharmony_ci 1789e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1790e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1791e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty4"; 1792e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1793e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1794e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1795e0dac50fSopenharmony_ci 1796e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1797e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1798e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_MODE; 1799e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1800e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1801e0dac50fSopenharmony_ci} 1802e0dac50fSopenharmony_ci 1803e0dac50fSopenharmony_ci/** 1804e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1805e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_FLAGS 1806e0dac50fSopenharmony_ci * @tc.type: FUNC 1807e0dac50fSopenharmony_ci */ 1808e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty5, Function | SmallTest | Level3) 1809e0dac50fSopenharmony_ci{ 1810e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1811e0dac50fSopenharmony_ci sptr<IWindow> window; 1812e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1813e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1814e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1815e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1816e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1817e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1818e0dac50fSopenharmony_ci 1819e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1820e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1821e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty5"; 1822e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1823e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1824e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1825e0dac50fSopenharmony_ci 1826e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1827e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1828e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_FLAGS; 1829e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1830e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 1831e0dac50fSopenharmony_ci} 1832e0dac50fSopenharmony_ci 1833e0dac50fSopenharmony_ci/** 1834e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1835e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_OTHER_PROPS 1836e0dac50fSopenharmony_ci * @tc.type: FUNC 1837e0dac50fSopenharmony_ci */ 1838e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty6, Function | SmallTest | Level3) 1839e0dac50fSopenharmony_ci{ 1840e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1841e0dac50fSopenharmony_ci sptr<IWindow> window; 1842e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1843e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1844e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1845e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1846e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1847e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1848e0dac50fSopenharmony_ci 1849e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1850e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1851e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty6"; 1852e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1853e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1854e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1855e0dac50fSopenharmony_ci 1856e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1857e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1858e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_OTHER_PROPS; 1859e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1860e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1861e0dac50fSopenharmony_ci} 1862e0dac50fSopenharmony_ci 1863e0dac50fSopenharmony_ci/** 1864e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1865e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_FOCUSABLE 1866e0dac50fSopenharmony_ci * @tc.type: FUNC 1867e0dac50fSopenharmony_ci */ 1868e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty7, Function | SmallTest | Level3) 1869e0dac50fSopenharmony_ci{ 1870e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1871e0dac50fSopenharmony_ci sptr<IWindow> window; 1872e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1873e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1874e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1875e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1876e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1877e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1878e0dac50fSopenharmony_ci 1879e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1880e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1881e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty7"; 1882e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1883e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1884e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1885e0dac50fSopenharmony_ci 1886e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1887e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1888e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_FOCUSABLE; 1889e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1890e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1891e0dac50fSopenharmony_ci} 1892e0dac50fSopenharmony_ci 1893e0dac50fSopenharmony_ci/** 1894e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1895e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_TOUCHABLE 1896e0dac50fSopenharmony_ci * @tc.type: FUNC 1897e0dac50fSopenharmony_ci */ 1898e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty8, Function | SmallTest | Level3) 1899e0dac50fSopenharmony_ci{ 1900e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1901e0dac50fSopenharmony_ci sptr<IWindow> window; 1902e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1903e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1904e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1905e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1906e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1907e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1908e0dac50fSopenharmony_ci 1909e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1910e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1911e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty8"; 1912e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1913e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1914e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1915e0dac50fSopenharmony_ci 1916e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1917e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1918e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_TOUCHABLE; 1919e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1920e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1921e0dac50fSopenharmony_ci} 1922e0dac50fSopenharmony_ci 1923e0dac50fSopenharmony_ci/** 1924e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1925e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_CALLING_WINDOW 1926e0dac50fSopenharmony_ci * @tc.type: FUNC 1927e0dac50fSopenharmony_ci */ 1928e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty9, Function | SmallTest | Level3) 1929e0dac50fSopenharmony_ci{ 1930e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1931e0dac50fSopenharmony_ci sptr<IWindow> window; 1932e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1933e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1934e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1935e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1936e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1937e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1938e0dac50fSopenharmony_ci 1939e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1940e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1941e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty9"; 1942e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1943e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1944e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1945e0dac50fSopenharmony_ci 1946e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1947e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1948e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_CALLING_WINDOW; 1949e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1950e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1951e0dac50fSopenharmony_ci} 1952e0dac50fSopenharmony_ci 1953e0dac50fSopenharmony_ci/** 1954e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1955e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_ORIENTATION 1956e0dac50fSopenharmony_ci * @tc.type: FUNC 1957e0dac50fSopenharmony_ci */ 1958e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty10, Function | SmallTest | Level3) 1959e0dac50fSopenharmony_ci{ 1960e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1961e0dac50fSopenharmony_ci sptr<IWindow> window; 1962e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1963e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1964e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1965e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1966e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1967e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1968e0dac50fSopenharmony_ci 1969e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 1970e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 1971e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty10"; 1972e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 1973e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 1974e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 1975e0dac50fSopenharmony_ci 1976e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 1977e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1978e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_ORIENTATION; 1979e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 1980e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 1981e0dac50fSopenharmony_ci} 1982e0dac50fSopenharmony_ci 1983e0dac50fSopenharmony_ci/** 1984e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 1985e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_TURN_SCREEN_ON 1986e0dac50fSopenharmony_ci * @tc.type: FUNC 1987e0dac50fSopenharmony_ci */ 1988e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty11, Function | SmallTest | Level3) 1989e0dac50fSopenharmony_ci{ 1990e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 1991e0dac50fSopenharmony_ci sptr<IWindow> window; 1992e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 1993e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 1994e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 1995e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 1996e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 1997e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 1998e0dac50fSopenharmony_ci 1999e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2000e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2001e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty11"; 2002e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2003e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2004e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2005e0dac50fSopenharmony_ci 2006e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2007e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2008e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON; 2009e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2010e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2011e0dac50fSopenharmony_ci} 2012e0dac50fSopenharmony_ci 2013e0dac50fSopenharmony_ci/** 2014e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2015e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_KEEP_SCREEN_ON 2016e0dac50fSopenharmony_ci * @tc.type: FUNC 2017e0dac50fSopenharmony_ci */ 2018e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty12, Function | SmallTest | Level3) 2019e0dac50fSopenharmony_ci{ 2020e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2021e0dac50fSopenharmony_ci sptr<IWindow> window; 2022e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2023e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2024e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2025e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2026e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2027e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2028e0dac50fSopenharmony_ci 2029e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2030e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2031e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty12"; 2032e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2033e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2034e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2035e0dac50fSopenharmony_ci 2036e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2037e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2038e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON; 2039e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2040e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2041e0dac50fSopenharmony_ci} 2042e0dac50fSopenharmony_ci 2043e0dac50fSopenharmony_ci 2044e0dac50fSopenharmony_ci/** 2045e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2046e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_SET_BRIGHTNESS 2047e0dac50fSopenharmony_ci * @tc.type: FUNC 2048e0dac50fSopenharmony_ci */ 2049e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty13, Function | SmallTest | Level3) 2050e0dac50fSopenharmony_ci{ 2051e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2052e0dac50fSopenharmony_ci sptr<IWindow> window; 2053e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2054e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2055e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2056e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2057e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2058e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2059e0dac50fSopenharmony_ci 2060e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2061e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2062e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty13"; 2063e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2064e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2065e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2066e0dac50fSopenharmony_ci 2067e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2068e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2069e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS; 2070e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2071e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2072e0dac50fSopenharmony_ci} 2073e0dac50fSopenharmony_ci 2074e0dac50fSopenharmony_ci/** 2075e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2076e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_MODE_SUPPORT_INFO 2077e0dac50fSopenharmony_ci * @tc.type: FUNC 2078e0dac50fSopenharmony_ci */ 2079e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty14, Function | SmallTest | Level3) 2080e0dac50fSopenharmony_ci{ 2081e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2082e0dac50fSopenharmony_ci sptr<IWindow> window; 2083e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2084e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2085e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2086e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2087e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2088e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2089e0dac50fSopenharmony_ci 2090e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2091e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2092e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty14"; 2093e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2094e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2095e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2096e0dac50fSopenharmony_ci 2097e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2098e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2099e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO; 2100e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2101e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2102e0dac50fSopenharmony_ci} 2103e0dac50fSopenharmony_ci 2104e0dac50fSopenharmony_ci/** 2105e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2106e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_TOUCH_HOT_AREA 2107e0dac50fSopenharmony_ci * @tc.type: FUNC 2108e0dac50fSopenharmony_ci */ 2109e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty15, Function | SmallTest | Level3) 2110e0dac50fSopenharmony_ci{ 2111e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2112e0dac50fSopenharmony_ci sptr<IWindow> window; 2113e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2114e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2115e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2116e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2117e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2118e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2119e0dac50fSopenharmony_ci 2120e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2121e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2122e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty15"; 2123e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2124e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2125e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2126e0dac50fSopenharmony_ci 2127e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2128e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2129e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA; 2130e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2131e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2132e0dac50fSopenharmony_ci} 2133e0dac50fSopenharmony_ci 2134e0dac50fSopenharmony_ci/** 2135e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2136e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_ANIMATION_FLAG 2137e0dac50fSopenharmony_ci * @tc.type: FUNC 2138e0dac50fSopenharmony_ci */ 2139e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty16, Function | SmallTest | Level3) 2140e0dac50fSopenharmony_ci{ 2141e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2142e0dac50fSopenharmony_ci sptr<IWindow> window; 2143e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2144e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2145e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2146e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2147e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2148e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2149e0dac50fSopenharmony_ci 2150e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2151e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2152e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty16"; 2153e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2154e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2155e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2156e0dac50fSopenharmony_ci 2157e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2158e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2159e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG; 2160e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2161e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2162e0dac50fSopenharmony_ci} 2163e0dac50fSopenharmony_ci 2164e0dac50fSopenharmony_ci/** 2165e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2166e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_TRANSFORM_PROPERTY 2167e0dac50fSopenharmony_ci * @tc.type: FUNC 2168e0dac50fSopenharmony_ci */ 2169e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty17, Function | SmallTest | Level3) 2170e0dac50fSopenharmony_ci{ 2171e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2172e0dac50fSopenharmony_ci sptr<IWindow> window; 2173e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2174e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2175e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2176e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2177e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2178e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2179e0dac50fSopenharmony_ci 2180e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2181e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2182e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty17"; 2183e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2184e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2185e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2186e0dac50fSopenharmony_ci 2187e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2188e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2189e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_TRANSFORM_PROPERTY; 2190e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2191e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2192e0dac50fSopenharmony_ci} 2193e0dac50fSopenharmony_ci 2194e0dac50fSopenharmony_ci/** 2195e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2196e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_ASPECT_RATIO 2197e0dac50fSopenharmony_ci * @tc.type: FUNC 2198e0dac50fSopenharmony_ci */ 2199e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty19, Function | SmallTest | Level3) 2200e0dac50fSopenharmony_ci{ 2201e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2202e0dac50fSopenharmony_ci sptr<IWindow> window; 2203e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2204e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2205e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2206e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2207e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2208e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2209e0dac50fSopenharmony_ci 2210e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2211e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2212e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty19"; 2213e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2214e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2215e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2216e0dac50fSopenharmony_ci 2217e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2218e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2219e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_ASPECT_RATIO; 2220e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2221e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, res); 2222e0dac50fSopenharmony_ci} 2223e0dac50fSopenharmony_ci 2224e0dac50fSopenharmony_ci/** 2225e0dac50fSopenharmony_ci * @tc.name: UpdateProperty 2226e0dac50fSopenharmony_ci * @tc.desc: Window controller UpdateProperty ACTION_UPDATE_MAXIMIZE_STATE ResizeRect 2227e0dac50fSopenharmony_ci * @tc.type: FUNC 2228e0dac50fSopenharmony_ci */ 2229e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, UpdateProperty20, Function | SmallTest | Level3) 2230e0dac50fSopenharmony_ci{ 2231e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2232e0dac50fSopenharmony_ci sptr<IWindow> window; 2233e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2234e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2235e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2236e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2237e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2238e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2239e0dac50fSopenharmony_ci 2240e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2241e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2242e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "UpdateProperty20"; 2243e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2244e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2245e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2246e0dac50fSopenharmony_ci ASSERT_NE(nullptr, windowRoot_->GetWindowNode(windowId)); 2247e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 2248e0dac50fSopenharmony_ci PropertyChangeAction action = PropertyChangeAction::ACTION_UPDATE_MAXIMIZE_STATE; 2249e0dac50fSopenharmony_ci WMError res = windowController_->UpdateProperty(property, action); 2250e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_OPERATION, res); 2251e0dac50fSopenharmony_ci 2252e0dac50fSopenharmony_ci windowNode->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 2253e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 2254e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2255e0dac50fSopenharmony_ci 2256e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::MOVE); 2257e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 2258e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 2259e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2260e0dac50fSopenharmony_ci 2261e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_INPUT_METHOD_FLOAT); 2262e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 2263e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2264e0dac50fSopenharmony_ci 2265e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::RESIZE); 2266e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 2267e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2268e0dac50fSopenharmony_ci 2269e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::DRAG); 2270e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 2271e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2272e0dac50fSopenharmony_ci 2273e0dac50fSopenharmony_ci property->SetWindowSizeChangeReason(WindowSizeChangeReason::MAXIMIZE); 2274e0dac50fSopenharmony_ci res = windowController_->UpdateProperty(property, action); 2275e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_DISPLAY, res); 2276e0dac50fSopenharmony_ci} 2277e0dac50fSopenharmony_ci 2278e0dac50fSopenharmony_ci/** 2279e0dac50fSopenharmony_ci * @tc.name: MinimizeWindowsByLauncher 2280e0dac50fSopenharmony_ci * @tc.desc: Window controller MinimizeWindowsByLauncher 2281e0dac50fSopenharmony_ci * @tc.type: FUNC 2282e0dac50fSopenharmony_ci */ 2283e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, MinimizeWindowsByLauncher, Function | SmallTest | Level3) 2284e0dac50fSopenharmony_ci{ 2285e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2286e0dac50fSopenharmony_ci sptr<IWindow> window; 2287e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2288e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2289e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2290e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2291e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2292e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2293e0dac50fSopenharmony_ci 2294e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2295e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2296e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "MinimizeWindowsByLauncher"; 2297e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2298e0dac50fSopenharmony_ci 2299e0dac50fSopenharmony_ci std::vector<uint32_t> windowIds; 2300e0dac50fSopenharmony_ci windowIds.push_back(windowId); 2301e0dac50fSopenharmony_ci bool isAnimated = true; 2302e0dac50fSopenharmony_ci sptr<RSIWindowAnimationFinishedCallback> finishCallback; 2303e0dac50fSopenharmony_ci windowController_->MinimizeWindowsByLauncher(windowIds, isAnimated, finishCallback); 2304e0dac50fSopenharmony_ci isAnimated = false; 2305e0dac50fSopenharmony_ci windowController_->MinimizeWindowsByLauncher(windowIds, isAnimated, finishCallback); 2306e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2307e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2308e0dac50fSopenharmony_ci} 2309e0dac50fSopenharmony_ci 2310e0dac50fSopenharmony_ci/** 2311e0dac50fSopenharmony_ci * @tc.name: OnScreenshot 2312e0dac50fSopenharmony_ci * @tc.desc: Window controller OnScreenshot 2313e0dac50fSopenharmony_ci * @tc.type: FUNC 2314e0dac50fSopenharmony_ci */ 2315e0dac50fSopenharmony_ciHWTEST_F(WindowControllerTest, OnScreenshot, Function | SmallTest | Level3) 2316e0dac50fSopenharmony_ci{ 2317e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.clear(); 2318e0dac50fSopenharmony_ci sptr<IWindow> window; 2319e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 2320e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> surfaceNode = nullptr; 2321e0dac50fSopenharmony_ci sptr<WindowNode> windowNode = new WindowNode(property); 2322e0dac50fSopenharmony_ci property->SetParentId(INVALID_WINDOW_ID); 2323e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_WINDOW_BASE); 2324e0dac50fSopenharmony_ci windowRoot_->windowNodeMap_.insert(std::make_pair(0, windowNode)); 2325e0dac50fSopenharmony_ci 2326e0dac50fSopenharmony_ci uint32_t windowId = windowNode->GetWindowId(); 2327e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig surfaceNodeConfig; 2328e0dac50fSopenharmony_ci surfaceNodeConfig.SurfaceNodeName = "OnScreenshot"; 2329e0dac50fSopenharmony_ci surfaceNode = RSSurfaceNode::Create(surfaceNodeConfig, RSSurfaceNodeType::DEFAULT); 2330e0dac50fSopenharmony_ci 2331e0dac50fSopenharmony_ci DisplayId displayId = static_cast<DisplayId>(windowId); 2332e0dac50fSopenharmony_ci windowController_->OnScreenshot(10); 2333e0dac50fSopenharmony_ci windowController_->OnScreenshot(displayId); 2334e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, 2335e0dac50fSopenharmony_ci windowController_->CreateWindow(window, property, surfaceNode, windowId, nullptr, 0, 0)); 2336e0dac50fSopenharmony_ci} 2337e0dac50fSopenharmony_ci} 2338e0dac50fSopenharmony_ci} 2339e0dac50fSopenharmony_ci} 2340