1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-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// gtest 17e0dac50fSopenharmony_ci#include <gtest/gtest.h> 18e0dac50fSopenharmony_ci#include <ability_context.h> 19e0dac50fSopenharmony_ci#include "common_test_utils.h" 20e0dac50fSopenharmony_ci#include "window_test_utils.h" 21e0dac50fSopenharmony_ci#include "window.h" 22e0dac50fSopenharmony_ci#include "window_option.h" 23e0dac50fSopenharmony_ci#include "window_scene.h" 24e0dac50fSopenharmony_ci#include "wm_common.h" 25e0dac50fSopenharmony_ci 26e0dac50fSopenharmony_ciusing namespace testing; 27e0dac50fSopenharmony_ciusing namespace testing::ext; 28e0dac50fSopenharmony_ci 29e0dac50fSopenharmony_cinamespace OHOS { 30e0dac50fSopenharmony_cinamespace Rosen { 31e0dac50fSopenharmony_ciclass WindowSystemSubWindowTest : public testing::Test { 32e0dac50fSopenharmony_cipublic: 33e0dac50fSopenharmony_ci static void SetUpTestCase(); 34e0dac50fSopenharmony_ci static void TearDownTestCase(); 35e0dac50fSopenharmony_ci virtual void SetUp() override; 36e0dac50fSopenharmony_ci virtual void TearDown() override; 37e0dac50fSopenharmony_ci // define windowTypes_ for SystemSubWindow02 38e0dac50fSopenharmony_ci std::vector<WindowType> windowTypes_ = { 39e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_APP_LAUNCHING, 40e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_DOCK_SLICE, 41e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_INCOMING_CALL, 42e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_SEARCHING_BAR, 43e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_SYSTEM_ALARM_WINDOW, 44e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_INPUT_METHOD_FLOAT, 45e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_FLOAT, 46e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_TOAST, 47e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_STATUS_BAR, 48e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_PANEL, 49e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_VOLUME_OVERLAY, 50e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_NAVIGATION_BAR, 51e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_DRAGGING_EFFECT, 52e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_POINTER, 53e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_LAUNCHER_RECENT, 54e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_LAUNCHER_DOCK, 55e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_BOOT_ANIMATION, 56e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_FREEZE_DISPLAY, 57e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_VOICE_INTERACTION, 58e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_FLOAT_CAMERA, 59e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_PLACEHOLDER, 60e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_SCREENSHOT, 61e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_GLOBAL_SEARCH, 62e0dac50fSopenharmony_ci }; 63e0dac50fSopenharmony_ci}; 64e0dac50fSopenharmony_ci 65e0dac50fSopenharmony_civoid WindowSystemSubWindowTest::SetUpTestCase() 66e0dac50fSopenharmony_ci{ 67e0dac50fSopenharmony_ci} 68e0dac50fSopenharmony_ci 69e0dac50fSopenharmony_civoid WindowSystemSubWindowTest::TearDownTestCase() 70e0dac50fSopenharmony_ci{ 71e0dac50fSopenharmony_ci} 72e0dac50fSopenharmony_ci 73e0dac50fSopenharmony_civoid WindowSystemSubWindowTest::SetUp() 74e0dac50fSopenharmony_ci{ 75e0dac50fSopenharmony_ci} 76e0dac50fSopenharmony_ci 77e0dac50fSopenharmony_civoid WindowSystemSubWindowTest::TearDown() 78e0dac50fSopenharmony_ci{ 79e0dac50fSopenharmony_ci} 80e0dac50fSopenharmony_ci 81e0dac50fSopenharmony_cistatic sptr<Window> CreateBaseWindow(WindowType type, struct Rect rect, uint32_t flags) 82e0dac50fSopenharmony_ci{ 83e0dac50fSopenharmony_ci sptr<WindowOption> baseOp = new WindowOption(); 84e0dac50fSopenharmony_ci baseOp->SetWindowType(type); 85e0dac50fSopenharmony_ci baseOp->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 86e0dac50fSopenharmony_ci baseOp->SetWindowRect(rect); 87e0dac50fSopenharmony_ci baseOp->SetWindowFlags(flags); 88e0dac50fSopenharmony_ci 89e0dac50fSopenharmony_ci static int baseCount = 0; 90e0dac50fSopenharmony_ci std::string baseWindowName = "BaseWindow" + std::to_string(baseCount++); 91e0dac50fSopenharmony_ci sptr<Window> window = Window::Create(baseWindowName, baseOp, nullptr); 92e0dac50fSopenharmony_ci return window; 93e0dac50fSopenharmony_ci} 94e0dac50fSopenharmony_ci 95e0dac50fSopenharmony_cistatic sptr<Window> CreateAppSubWindow(sptr<Window> parentWindow, WindowType type, struct Rect rect, 96e0dac50fSopenharmony_ci uint32_t flags, std::string name = "") 97e0dac50fSopenharmony_ci{ 98e0dac50fSopenharmony_ci sptr<WindowOption> subOp = new WindowOption(); 99e0dac50fSopenharmony_ci subOp->SetWindowType(type); 100e0dac50fSopenharmony_ci subOp->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 101e0dac50fSopenharmony_ci subOp->SetWindowRect(rect); 102e0dac50fSopenharmony_ci subOp->SetWindowFlags(flags); 103e0dac50fSopenharmony_ci subOp->SetParentId(parentWindow->GetWindowId()); 104e0dac50fSopenharmony_ci 105e0dac50fSopenharmony_ci static int cnt = 0; 106e0dac50fSopenharmony_ci std::string subWinName = (name == "") ? "AppSubWindow" + std::to_string(cnt++) : name; 107e0dac50fSopenharmony_ci sptr<Window> window = Window::Create(subWinName, subOp); 108e0dac50fSopenharmony_ci return window; 109e0dac50fSopenharmony_ci} 110e0dac50fSopenharmony_ci 111e0dac50fSopenharmony_cistatic sptr<Window> CreateSystemSubWindow(sptr<Window> parentWindow, struct Rect rect, 112e0dac50fSopenharmony_ci uint32_t flags, std::string name = "") 113e0dac50fSopenharmony_ci{ 114e0dac50fSopenharmony_ci sptr<WindowOption> subOp = new WindowOption(); 115e0dac50fSopenharmony_ci subOp->SetWindowType(WindowType::WINDOW_TYPE_SYSTEM_SUB_WINDOW); 116e0dac50fSopenharmony_ci subOp->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 117e0dac50fSopenharmony_ci subOp->SetWindowRect(rect); 118e0dac50fSopenharmony_ci subOp->SetWindowFlags(flags); 119e0dac50fSopenharmony_ci subOp->SetParentId(parentWindow->GetWindowId()); 120e0dac50fSopenharmony_ci 121e0dac50fSopenharmony_ci static int cnt = 0; 122e0dac50fSopenharmony_ci std::string subWinName = (name == "") ? "SystemSubWindow" + std::to_string(cnt++) : name; 123e0dac50fSopenharmony_ci sptr<Window> window = Window::Create(subWinName, subOp); 124e0dac50fSopenharmony_ci return window; 125e0dac50fSopenharmony_ci} 126e0dac50fSopenharmony_ci 127e0dac50fSopenharmony_ci/** 128e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow01 129e0dac50fSopenharmony_ci * @tc.desc: create sub windows with below system Windows 130e0dac50fSopenharmony_ci * @tc.type: FUNC 131e0dac50fSopenharmony_ci */ 132e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow01, Function | MediumTest | Level2) 133e0dac50fSopenharmony_ci{ 134e0dac50fSopenharmony_ci std::vector<WindowType> windowTypes = { 135e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_WALLPAPER, 136e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_DESKTOP, 137e0dac50fSopenharmony_ci }; 138e0dac50fSopenharmony_ci for (auto itor = windowTypes.begin(); itor != windowTypes.end(); itor++) { 139e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 140e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 141e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(static_cast<WindowType>(*itor), baseRect, baseFlags); 142e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 143e0dac50fSopenharmony_ci continue; 144e0dac50fSopenharmony_ci } 145e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 146e0dac50fSopenharmony_ci uint32_t flags = 0; 147e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(baseWindow, rect, flags); 148e0dac50fSopenharmony_ci if (subWindow == nullptr) { 149e0dac50fSopenharmony_ci return; 150e0dac50fSopenharmony_ci } 151e0dac50fSopenharmony_ci 152e0dac50fSopenharmony_ci ASSERT_NE(nullptr, subWindow); 153e0dac50fSopenharmony_ci 154e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Show()); 155e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Show()); 156e0dac50fSopenharmony_ci 157e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Hide()); 158e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Hide()); 159e0dac50fSopenharmony_ci 160e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Destroy()); 161e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Destroy()); 162e0dac50fSopenharmony_ci } 163e0dac50fSopenharmony_ci} 164e0dac50fSopenharmony_ci 165e0dac50fSopenharmony_ci/** 166e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow02 167e0dac50fSopenharmony_ci * @tc.desc: create sub windows with above system Windows except WINDOW_TYPE_DIALOG 168e0dac50fSopenharmony_ci * @tc.type: FUNC 169e0dac50fSopenharmony_ci */ 170e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow02, Function | MediumTest | Level2) 171e0dac50fSopenharmony_ci{ 172e0dac50fSopenharmony_ci for (auto itor = windowTypes_.begin(); itor != windowTypes_.end(); itor++) { 173e0dac50fSopenharmony_ci if (static_cast<WindowType>(*itor) == WindowType::WINDOW_TYPE_FLOAT) { 174e0dac50fSopenharmony_ci CommonTestUtils::GuaranteeFloatWindowPermission("wms_window_systemsubwindow_test"); 175e0dac50fSopenharmony_ci } 176e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 177e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 178e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(static_cast<WindowType>(*itor), baseRect, baseFlags); 179e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 180e0dac50fSopenharmony_ci continue; 181e0dac50fSopenharmony_ci } 182e0dac50fSopenharmony_ci 183e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 184e0dac50fSopenharmony_ci uint32_t flags = 0; 185e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(baseWindow, rect, flags); 186e0dac50fSopenharmony_ci if (subWindow == nullptr) { 187e0dac50fSopenharmony_ci return; 188e0dac50fSopenharmony_ci } 189e0dac50fSopenharmony_ci ASSERT_NE(nullptr, subWindow); 190e0dac50fSopenharmony_ci 191e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Show()); 192e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Show()); 193e0dac50fSopenharmony_ci 194e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Hide()); 195e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Hide()); 196e0dac50fSopenharmony_ci 197e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Destroy()); 198e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Destroy()); 199e0dac50fSopenharmony_ci } 200e0dac50fSopenharmony_ci} 201e0dac50fSopenharmony_ci 202e0dac50fSopenharmony_ci/** 203e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow03 204e0dac50fSopenharmony_ci * @tc.desc: create sub windows with app main Windows, no allow to add as app_main_window's subwindow 205e0dac50fSopenharmony_ci * @tc.type: FUNC 206e0dac50fSopenharmony_ci */ 207e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow03, Function | MediumTest | Level2) 208e0dac50fSopenharmony_ci{ 209e0dac50fSopenharmony_ci 210e0dac50fSopenharmony_ci std::vector<WindowType> windowTypes = { WindowType::WINDOW_TYPE_APP_MAIN_WINDOW }; 211e0dac50fSopenharmony_ci for (auto itor = windowTypes.begin(); itor != windowTypes.end(); itor++) { 212e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 213e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 214e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(static_cast<WindowType>(*itor), baseRect, baseFlags); 215e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 216e0dac50fSopenharmony_ci return; 217e0dac50fSopenharmony_ci } 218e0dac50fSopenharmony_ci ASSERT_NE(nullptr, baseWindow); 219e0dac50fSopenharmony_ci 220e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 221e0dac50fSopenharmony_ci uint32_t flags = 0; 222e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(baseWindow, rect, flags); 223e0dac50fSopenharmony_ci if (subWindow == nullptr) { 224e0dac50fSopenharmony_ci return; 225e0dac50fSopenharmony_ci } 226e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, subWindow); 227e0dac50fSopenharmony_ci } 228e0dac50fSopenharmony_ci} 229e0dac50fSopenharmony_ci 230e0dac50fSopenharmony_ci/** 231e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow04 232e0dac50fSopenharmony_ci * @tc.desc: create sub windows with app sub Windows 233e0dac50fSopenharmony_ci * @tc.type: FUNC 234e0dac50fSopenharmony_ci */ 235e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow04, Function | MediumTest | Level2) 236e0dac50fSopenharmony_ci{ 237e0dac50fSopenharmony_ci std::vector<WindowType> windowTypes = { 238e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_MEDIA, 239e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_APP_SUB_WINDOW, 240e0dac50fSopenharmony_ci WindowType::WINDOW_TYPE_APP_COMPONENT, 241e0dac50fSopenharmony_ci }; 242e0dac50fSopenharmony_ci for (auto itor = windowTypes.begin(); itor != windowTypes.end(); itor++) { 243e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 244e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 245e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW, baseRect, baseFlags); 246e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 247e0dac50fSopenharmony_ci return; 248e0dac50fSopenharmony_ci } 249e0dac50fSopenharmony_ci ASSERT_NE(nullptr, baseWindow); 250e0dac50fSopenharmony_ci 251e0dac50fSopenharmony_ci sptr<Window> appSubWindow = CreateAppSubWindow(baseWindow, static_cast<WindowType>(*itor), baseRect, baseFlags); 252e0dac50fSopenharmony_ci if (appSubWindow == nullptr) { 253e0dac50fSopenharmony_ci return; 254e0dac50fSopenharmony_ci } 255e0dac50fSopenharmony_ci ASSERT_NE(nullptr, appSubWindow); 256e0dac50fSopenharmony_ci 257e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 258e0dac50fSopenharmony_ci uint32_t flags = 0; 259e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(appSubWindow, rect, flags); 260e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, subWindow); 261e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, appSubWindow->Destroy()); 262e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Destroy()); 263e0dac50fSopenharmony_ci } 264e0dac50fSopenharmony_ci} 265e0dac50fSopenharmony_ci 266e0dac50fSopenharmony_ci/** 267e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow05 268e0dac50fSopenharmony_ci * @tc.desc: create sub windows with system sub Windows 269e0dac50fSopenharmony_ci * @tc.type: FUNC 270e0dac50fSopenharmony_ci */ 271e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow05, Function | MediumTest | Level3) 272e0dac50fSopenharmony_ci{ 273e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 274e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 275e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(WindowType::WINDOW_TYPE_DOCK_SLICE, baseRect, baseFlags); 276e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 277e0dac50fSopenharmony_ci return; 278e0dac50fSopenharmony_ci } 279e0dac50fSopenharmony_ci ASSERT_NE(nullptr, baseWindow); 280e0dac50fSopenharmony_ci 281e0dac50fSopenharmony_ci sptr<Window> systemSubWindow = CreateSystemSubWindow(baseWindow, baseRect, baseFlags); 282e0dac50fSopenharmony_ci if (systemSubWindow == nullptr) { 283e0dac50fSopenharmony_ci return; 284e0dac50fSopenharmony_ci } 285e0dac50fSopenharmony_ci ASSERT_NE(nullptr, systemSubWindow); 286e0dac50fSopenharmony_ci 287e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 288e0dac50fSopenharmony_ci uint32_t flags = 0; 289e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(systemSubWindow, rect, flags); 290e0dac50fSopenharmony_ci if (subWindow == nullptr) { 291e0dac50fSopenharmony_ci return; 292e0dac50fSopenharmony_ci } 293e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, subWindow); 294e0dac50fSopenharmony_ci 295e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Show()); 296e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, systemSubWindow->Show()); 297e0dac50fSopenharmony_ci 298e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, systemSubWindow->Hide()); 299e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Hide()); 300e0dac50fSopenharmony_ci 301e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, systemSubWindow->Destroy()); 302e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Destroy()); 303e0dac50fSopenharmony_ci} 304e0dac50fSopenharmony_ci 305e0dac50fSopenharmony_ci/** 306e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow06 307e0dac50fSopenharmony_ci * @tc.desc: FullScreen Main Window + 2 SubWindows 308e0dac50fSopenharmony_ci * @tc.type: FUNC 309e0dac50fSopenharmony_ci */ 310e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow06, Function | MediumTest | Level3) 311e0dac50fSopenharmony_ci{ 312e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 313e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 314e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(WindowType::WINDOW_TYPE_DOCK_SLICE, baseRect, baseFlags); 315e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 316e0dac50fSopenharmony_ci return; 317e0dac50fSopenharmony_ci } 318e0dac50fSopenharmony_ci ASSERT_NE(nullptr, baseWindow); 319e0dac50fSopenharmony_ci 320e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 321e0dac50fSopenharmony_ci uint32_t flags = 0; 322e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(baseWindow, rect, flags); 323e0dac50fSopenharmony_ci if (subWindow == nullptr) { 324e0dac50fSopenharmony_ci return; 325e0dac50fSopenharmony_ci } 326e0dac50fSopenharmony_ci ASSERT_NE(nullptr, subWindow); 327e0dac50fSopenharmony_ci 328e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Show()); 329e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Show()); 330e0dac50fSopenharmony_ci 331e0dac50fSopenharmony_ci bool isFocus = subWindow->GetFocusable(); 332e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->SetFocusable(!isFocus)); 333e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->MoveTo(0, 0)); 334e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Resize(200, 400)); 335e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->SetTurnScreenOn(true)); 336e0dac50fSopenharmony_ci 337e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_ERROR_INVALID_TYPE, subWindow->SetBrightness(0.5f)); 338e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN)); 339e0dac50fSopenharmony_ci 340e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Hide()); 341e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Hide()); 342e0dac50fSopenharmony_ci 343e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, subWindow->Destroy()); 344e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Destroy()); 345e0dac50fSopenharmony_ci} 346e0dac50fSopenharmony_ci/** 347e0dac50fSopenharmony_ci * @tc.name: SystemSubWindow07 348e0dac50fSopenharmony_ci * @tc.desc: create sub windows with dialog 349e0dac50fSopenharmony_ci * @tc.type: FUNC 350e0dac50fSopenharmony_ci */ 351e0dac50fSopenharmony_ciHWTEST_F(WindowSystemSubWindowTest, SystemSubWindow07, Function | MediumTest | Level3) 352e0dac50fSopenharmony_ci{ 353e0dac50fSopenharmony_ci struct Rect baseRect = {0, 0, 100, 200}; 354e0dac50fSopenharmony_ci uint32_t baseFlags = 0; 355e0dac50fSopenharmony_ci sptr<Window> baseWindow = CreateBaseWindow(WindowType::WINDOW_TYPE_DIALOG, baseRect, baseFlags); 356e0dac50fSopenharmony_ci if (baseWindow == nullptr) { 357e0dac50fSopenharmony_ci return; 358e0dac50fSopenharmony_ci } 359e0dac50fSopenharmony_ci ASSERT_NE(nullptr, baseWindow); 360e0dac50fSopenharmony_ci 361e0dac50fSopenharmony_ci struct Rect rect = {0, 0, 100, 200}; 362e0dac50fSopenharmony_ci uint32_t flags = 0; 363e0dac50fSopenharmony_ci sptr<Window> subWindow = CreateSystemSubWindow(baseWindow, rect, flags); 364e0dac50fSopenharmony_ci if (subWindow == nullptr) { 365e0dac50fSopenharmony_ci return; 366e0dac50fSopenharmony_ci } 367e0dac50fSopenharmony_ci ASSERT_NE(nullptr, subWindow); 368e0dac50fSopenharmony_ci ASSERT_EQ(WMError::WM_OK, baseWindow->Destroy()); 369e0dac50fSopenharmony_ci} 370e0dac50fSopenharmony_ci} // namespace Rosen 371e0dac50fSopenharmony_ci} // namespace OHOS 372