1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2024 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 <regex> 18e0dac50fSopenharmony_ci#include <pointer_event.h> 19e0dac50fSopenharmony_ci#include <ui/rs_surface_node.h> 20e0dac50fSopenharmony_ci 21e0dac50fSopenharmony_ci#include "key_event.h" 22e0dac50fSopenharmony_ci#include "mock/mock_session_stage.h" 23e0dac50fSopenharmony_ci#include "mock/mock_window_event_channel.h" 24e0dac50fSopenharmony_ci#include "mock/mock_pattern_detach_callback.h" 25e0dac50fSopenharmony_ci#include "session/host/include/extension_session.h" 26e0dac50fSopenharmony_ci#include "session/host/include/move_drag_controller.h" 27e0dac50fSopenharmony_ci#include "session/host/include/scene_session.h" 28e0dac50fSopenharmony_ci#include "session/host/include/session.h" 29e0dac50fSopenharmony_ci#include "session_manager/include/scene_session_manager.h" 30e0dac50fSopenharmony_ci#include "session_info.h" 31e0dac50fSopenharmony_ci#include "session/screen/include/screen_session.h" 32e0dac50fSopenharmony_ci#include "screen_session_manager_client/include/screen_session_manager_client.h" 33e0dac50fSopenharmony_ci#include "wm_common.h" 34e0dac50fSopenharmony_ci#include "window_manager_hilog.h" 35e0dac50fSopenharmony_ci 36e0dac50fSopenharmony_ciusing namespace testing; 37e0dac50fSopenharmony_ciusing namespace testing::ext; 38e0dac50fSopenharmony_ci 39e0dac50fSopenharmony_cinamespace OHOS { 40e0dac50fSopenharmony_cinamespace Rosen { 41e0dac50fSopenharmony_cinamespace { 42e0dac50fSopenharmony_ciconst std::string UNDEFINED = "undefined"; 43e0dac50fSopenharmony_ci} 44e0dac50fSopenharmony_ci 45e0dac50fSopenharmony_ciclass WindowSessionTest3 : public testing::Test { 46e0dac50fSopenharmony_cipublic: 47e0dac50fSopenharmony_ci static void SetUpTestCase(); 48e0dac50fSopenharmony_ci static void TearDownTestCase(); 49e0dac50fSopenharmony_ci void SetUp() override; 50e0dac50fSopenharmony_ci void TearDown() override; 51e0dac50fSopenharmony_ci 52e0dac50fSopenharmony_ci int32_t GetTaskCount(); 53e0dac50fSopenharmony_ci sptr<SceneSessionManager> ssm_; 54e0dac50fSopenharmony_ci 55e0dac50fSopenharmony_ciprivate: 56e0dac50fSopenharmony_ci RSSurfaceNode::SharedPtr CreateRSSurfaceNode(); 57e0dac50fSopenharmony_ci sptr<Session> session_ = nullptr; 58e0dac50fSopenharmony_ci static constexpr uint32_t WAIT_SYNC_IN_NS = 500000; 59e0dac50fSopenharmony_ci}; 60e0dac50fSopenharmony_ci 61e0dac50fSopenharmony_civoid WindowSessionTest3::SetUpTestCase() 62e0dac50fSopenharmony_ci{ 63e0dac50fSopenharmony_ci} 64e0dac50fSopenharmony_ci 65e0dac50fSopenharmony_civoid WindowSessionTest3::TearDownTestCase() 66e0dac50fSopenharmony_ci{ 67e0dac50fSopenharmony_ci} 68e0dac50fSopenharmony_ci 69e0dac50fSopenharmony_civoid WindowSessionTest3::SetUp() 70e0dac50fSopenharmony_ci{ 71e0dac50fSopenharmony_ci SessionInfo info; 72e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 73e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 74e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 75e0dac50fSopenharmony_ci session_ = sptr<Session>::MakeSptr(info); 76e0dac50fSopenharmony_ci EXPECT_NE(nullptr, session_); 77e0dac50fSopenharmony_ci session_->surfaceNode_ = CreateRSSurfaceNode(); 78e0dac50fSopenharmony_ci ssm_ = sptr<SceneSessionManager>::MakeSptr(); 79e0dac50fSopenharmony_ci session_->SetEventHandler(ssm_->taskScheduler_->GetEventHandler(), ssm_->eventHandler_); 80e0dac50fSopenharmony_ci auto isScreenLockedCallback = [this]() { 81e0dac50fSopenharmony_ci return ssm_->IsScreenLocked(); 82e0dac50fSopenharmony_ci }; 83e0dac50fSopenharmony_ci session_->RegisterIsScreenLockedCallback(isScreenLockedCallback); 84e0dac50fSopenharmony_ci} 85e0dac50fSopenharmony_ci 86e0dac50fSopenharmony_civoid WindowSessionTest3::TearDown() 87e0dac50fSopenharmony_ci{ 88e0dac50fSopenharmony_ci session_ = nullptr; 89e0dac50fSopenharmony_ci usleep(WAIT_SYNC_IN_NS); 90e0dac50fSopenharmony_ci} 91e0dac50fSopenharmony_ci 92e0dac50fSopenharmony_ciRSSurfaceNode::SharedPtr WindowSessionTest3::CreateRSSurfaceNode() 93e0dac50fSopenharmony_ci{ 94e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig rsSurfaceNodeConfig; 95e0dac50fSopenharmony_ci rsSurfaceNodeConfig.SurfaceNodeName = "WindowSessionTest3SurfaceNode"; 96e0dac50fSopenharmony_ci auto surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig); 97e0dac50fSopenharmony_ci if (surfaceNode == nullptr) { 98e0dac50fSopenharmony_ci GTEST_LOG_(INFO) << "WindowSessionTest3::CreateRSSurfaceNode surfaceNode is nullptr"; 99e0dac50fSopenharmony_ci } 100e0dac50fSopenharmony_ci return surfaceNode; 101e0dac50fSopenharmony_ci} 102e0dac50fSopenharmony_ci 103e0dac50fSopenharmony_ciint32_t WindowSessionTest3::GetTaskCount() 104e0dac50fSopenharmony_ci{ 105e0dac50fSopenharmony_ci std::string dumpInfo = session_->handler_->GetEventRunner()->GetEventQueue()->DumpCurrentQueueSize(); 106e0dac50fSopenharmony_ci std::regex pattern("\\d+"); 107e0dac50fSopenharmony_ci std::smatch matches; 108e0dac50fSopenharmony_ci int32_t taskNum = 0; 109e0dac50fSopenharmony_ci while (std::regex_search(dumpInfo, matches, pattern)) { 110e0dac50fSopenharmony_ci taskNum += std::stoi(matches.str()); 111e0dac50fSopenharmony_ci dumpInfo = matches.suffix(); 112e0dac50fSopenharmony_ci } 113e0dac50fSopenharmony_ci return taskNum; 114e0dac50fSopenharmony_ci} 115e0dac50fSopenharmony_ci 116e0dac50fSopenharmony_cinamespace { 117e0dac50fSopenharmony_ci/** 118e0dac50fSopenharmony_ci * @tc.name: NotifyContextTransparent 119e0dac50fSopenharmony_ci * @tc.desc: NotifyContextTransparent Test 120e0dac50fSopenharmony_ci * @tc.type: FUNC 121e0dac50fSopenharmony_ci */ 122e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifyContextTransparent, Function | SmallTest | Level2) 123e0dac50fSopenharmony_ci{ 124e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 125e0dac50fSopenharmony_ci NotifyContextTransparentFunc contextTransparentFunc = session_->contextTransparentFunc_; 126e0dac50fSopenharmony_ci if (contextTransparentFunc == nullptr) { 127e0dac50fSopenharmony_ci contextTransparentFunc = {}; 128e0dac50fSopenharmony_ci } 129e0dac50fSopenharmony_ci session_->contextTransparentFunc_ = nullptr; 130e0dac50fSopenharmony_ci session_->NotifyContextTransparent(); 131e0dac50fSopenharmony_ci 132e0dac50fSopenharmony_ci session_->SetContextTransparentFunc(contextTransparentFunc); 133e0dac50fSopenharmony_ci session_->NotifyContextTransparent(); 134e0dac50fSopenharmony_ci session_->SetPendingSessionToBackgroundForDelegatorListener(nullptr); 135e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->PendingSessionToBackgroundForDelegator(true)); 136e0dac50fSopenharmony_ci} 137e0dac50fSopenharmony_ci 138e0dac50fSopenharmony_ci/** 139e0dac50fSopenharmony_ci * @tc.name: SetFocusable04 140e0dac50fSopenharmony_ci * @tc.desc: SetFocusable Test 141e0dac50fSopenharmony_ci * @tc.type: FUNC 142e0dac50fSopenharmony_ci */ 143e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetFocusable04, Function | SmallTest | Level2) 144e0dac50fSopenharmony_ci{ 145e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 146e0dac50fSopenharmony_ci session_->property_ = nullptr; 147e0dac50fSopenharmony_ci auto result = session_->SetFocusable(false); 148e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_ERROR_NULLPTR); 149e0dac50fSopenharmony_ci 150e0dac50fSopenharmony_ci session_->isFocused_ = true; 151e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 152e0dac50fSopenharmony_ci EXPECT_NE(session_->property_, nullptr); 153e0dac50fSopenharmony_ci session_->property_->SetFocusable(false); 154e0dac50fSopenharmony_ci 155e0dac50fSopenharmony_ci result = session_->SetFocusable(false); 156e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 157e0dac50fSopenharmony_ci EXPECT_EQ(session_->GetFocusable(), false); 158e0dac50fSopenharmony_ci} 159e0dac50fSopenharmony_ci 160e0dac50fSopenharmony_ci/** 161e0dac50fSopenharmony_ci * @tc.name: SetSystemFocusable 162e0dac50fSopenharmony_ci * @tc.desc: SetSystemFocusable Test 163e0dac50fSopenharmony_ci * @tc.type: FUNC 164e0dac50fSopenharmony_ci */ 165e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetSystemFocusable, Function | SmallTest | Level2) 166e0dac50fSopenharmony_ci{ 167e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 168e0dac50fSopenharmony_ci ASSERT_EQ(session_->GetSystemFocusable(), true); 169e0dac50fSopenharmony_ci bool systemFocusable = false; 170e0dac50fSopenharmony_ci session_->SetSystemFocusable(systemFocusable); 171e0dac50fSopenharmony_ci ASSERT_EQ(session_->GetSystemFocusable(), systemFocusable); 172e0dac50fSopenharmony_ci} 173e0dac50fSopenharmony_ci 174e0dac50fSopenharmony_ci/** 175e0dac50fSopenharmony_ci * @tc.name: SetFocusableOnShow 176e0dac50fSopenharmony_ci * @tc.desc: SetFocusableOnShow Test 177e0dac50fSopenharmony_ci * @tc.type: FUNC 178e0dac50fSopenharmony_ci */ 179e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetFocusableOnShow, Function | SmallTest | Level2) 180e0dac50fSopenharmony_ci{ 181e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 182e0dac50fSopenharmony_ci ASSERT_EQ(session_->IsFocusableOnShow(), true); 183e0dac50fSopenharmony_ci bool focusableOnShow = false; 184e0dac50fSopenharmony_ci session_->SetFocusableOnShow(focusableOnShow); 185e0dac50fSopenharmony_ci usleep(10000); // sleep 10ms 186e0dac50fSopenharmony_ci ASSERT_EQ(session_->IsFocusableOnShow(), focusableOnShow); 187e0dac50fSopenharmony_ci} 188e0dac50fSopenharmony_ci 189e0dac50fSopenharmony_ci/** 190e0dac50fSopenharmony_ci * @tc.name: CheckFocusable 191e0dac50fSopenharmony_ci * @tc.desc: CheckFocusable Test 192e0dac50fSopenharmony_ci * @tc.type: FUNC 193e0dac50fSopenharmony_ci */ 194e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, CheckFocusable, Function | SmallTest | Level2) 195e0dac50fSopenharmony_ci{ 196e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 197e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 198e0dac50fSopenharmony_ci ASSERT_EQ(session_->CheckFocusable(), true); 199e0dac50fSopenharmony_ci session_->SetSystemFocusable(false); 200e0dac50fSopenharmony_ci ASSERT_EQ(session_->CheckFocusable(), false); 201e0dac50fSopenharmony_ci} 202e0dac50fSopenharmony_ci 203e0dac50fSopenharmony_ci/** 204e0dac50fSopenharmony_ci * @tc.name: SetTouchable03 205e0dac50fSopenharmony_ci * @tc.desc: IsSessionValid() and touchable return true 206e0dac50fSopenharmony_ci * @tc.type: FUNC 207e0dac50fSopenharmony_ci */ 208e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetTouchable03, Function | SmallTest | Level2) 209e0dac50fSopenharmony_ci{ 210e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 211e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 212e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 213e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->SetTouchable(true)); 214e0dac50fSopenharmony_ci} 215e0dac50fSopenharmony_ci 216e0dac50fSopenharmony_ci/** 217e0dac50fSopenharmony_ci * @tc.name: GetTouchable02 218e0dac50fSopenharmony_ci * @tc.desc: GetTouchable Test 219e0dac50fSopenharmony_ci * @tc.type: FUNC 220e0dac50fSopenharmony_ci */ 221e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, GetTouchable02, Function | SmallTest | Level2) 222e0dac50fSopenharmony_ci{ 223e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 224e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 225e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 226e0dac50fSopenharmony_ci EXPECT_EQ(true, session_->GetTouchable()); 227e0dac50fSopenharmony_ci 228e0dac50fSopenharmony_ci session_->property_ = nullptr; 229e0dac50fSopenharmony_ci EXPECT_EQ(true, session_->GetTouchable()); 230e0dac50fSopenharmony_ci} 231e0dac50fSopenharmony_ci 232e0dac50fSopenharmony_ci/** 233e0dac50fSopenharmony_ci * @tc.name: UpdateDensity02 234e0dac50fSopenharmony_ci * @tc.desc: UpdateDensity Test 235e0dac50fSopenharmony_ci * @tc.type: FUNC 236e0dac50fSopenharmony_ci */ 237e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, UpdateDensity02, Function | SmallTest | Level2) 238e0dac50fSopenharmony_ci{ 239e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 240e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 241e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 242e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 243e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 244e0dac50fSopenharmony_ci auto result = session_->UpdateDensity(); 245e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 246e0dac50fSopenharmony_ci} 247e0dac50fSopenharmony_ci 248e0dac50fSopenharmony_ci/** 249e0dac50fSopenharmony_ci * @tc.name: UpdateOrientation 250e0dac50fSopenharmony_ci * @tc.desc: UpdateOrientation Test 251e0dac50fSopenharmony_ci * @tc.type: FUNC 252e0dac50fSopenharmony_ci */ 253e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, UpdateOrientation, Function | SmallTest | Level2) 254e0dac50fSopenharmony_ci{ 255e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 256e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 257e0dac50fSopenharmony_ci auto result = session_->UpdateOrientation(); 258e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_INVALID_SESSION); 259e0dac50fSopenharmony_ci 260e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 261e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 262e0dac50fSopenharmony_ci result = session_->UpdateOrientation(); 263e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 264e0dac50fSopenharmony_ci 265e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 266e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 267e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 268e0dac50fSopenharmony_ci result = session_->UpdateOrientation(); 269e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 270e0dac50fSopenharmony_ci} 271e0dac50fSopenharmony_ci 272e0dac50fSopenharmony_ci/** 273e0dac50fSopenharmony_ci * @tc.name: HandleDialogBackground 274e0dac50fSopenharmony_ci * @tc.desc: HandleDialogBackground Test 275e0dac50fSopenharmony_ci * @tc.type: FUNC 276e0dac50fSopenharmony_ci */ 277e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, HandleDialogBackground, Function | SmallTest | Level2) 278e0dac50fSopenharmony_ci{ 279e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 280e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 281e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 282e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_END); 283e0dac50fSopenharmony_ci session_->HandleDialogBackground(); 284e0dac50fSopenharmony_ci 285e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 286e0dac50fSopenharmony_ci sptr<Session> session01 = nullptr; 287e0dac50fSopenharmony_ci 288e0dac50fSopenharmony_ci SessionInfo info; 289e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 290e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 291e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 292e0dac50fSopenharmony_ci sptr<Session> session02 = sptr<Session>::MakeSptr(info); 293e0dac50fSopenharmony_ci sptr<Session> session03 = sptr<Session>::MakeSptr(info); 294e0dac50fSopenharmony_ci EXPECT_NE(session02, nullptr); 295e0dac50fSopenharmony_ci EXPECT_NE(session03, nullptr); 296e0dac50fSopenharmony_ci 297e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 298e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 299e0dac50fSopenharmony_ci session02->sessionStage_ = mockSessionStage; 300e0dac50fSopenharmony_ci session03->sessionStage_ = nullptr; 301e0dac50fSopenharmony_ci 302e0dac50fSopenharmony_ci session_->dialogVec_.push_back(session01); 303e0dac50fSopenharmony_ci session_->dialogVec_.push_back(session02); 304e0dac50fSopenharmony_ci session_->dialogVec_.push_back(session03); 305e0dac50fSopenharmony_ci session_->HandleDialogBackground(); 306e0dac50fSopenharmony_ci session_->SetPendingSessionToBackgroundForDelegatorListener(nullptr); 307e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->PendingSessionToBackgroundForDelegator(true)); 308e0dac50fSopenharmony_ci} 309e0dac50fSopenharmony_ci 310e0dac50fSopenharmony_ci/** 311e0dac50fSopenharmony_ci * @tc.name: HandleDialogForeground 312e0dac50fSopenharmony_ci * @tc.desc: HandleDialogForeground Test 313e0dac50fSopenharmony_ci * @tc.type: FUNC 314e0dac50fSopenharmony_ci */ 315e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, HandleDialogForeground, Function | SmallTest | Level2) 316e0dac50fSopenharmony_ci{ 317e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 318e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 319e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 320e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_END); 321e0dac50fSopenharmony_ci session_->HandleDialogForeground(); 322e0dac50fSopenharmony_ci 323e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 324e0dac50fSopenharmony_ci sptr<Session> session01 = nullptr; 325e0dac50fSopenharmony_ci 326e0dac50fSopenharmony_ci SessionInfo info; 327e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 328e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 329e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 330e0dac50fSopenharmony_ci sptr<Session> session02 = sptr<Session>::MakeSptr(info); 331e0dac50fSopenharmony_ci sptr<Session> session03 = sptr<Session>::MakeSptr(info); 332e0dac50fSopenharmony_ci EXPECT_NE(session02, nullptr); 333e0dac50fSopenharmony_ci EXPECT_NE(session03, nullptr); 334e0dac50fSopenharmony_ci 335e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 336e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 337e0dac50fSopenharmony_ci session02->sessionStage_ = mockSessionStage; 338e0dac50fSopenharmony_ci session03->sessionStage_ = nullptr; 339e0dac50fSopenharmony_ci 340e0dac50fSopenharmony_ci session_->dialogVec_.push_back(session01); 341e0dac50fSopenharmony_ci session_->dialogVec_.push_back(session02); 342e0dac50fSopenharmony_ci session_->dialogVec_.push_back(session03); 343e0dac50fSopenharmony_ci session_->HandleDialogForeground(); 344e0dac50fSopenharmony_ci session_->SetPendingSessionToBackgroundForDelegatorListener(nullptr); 345e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->PendingSessionToBackgroundForDelegator(true)); 346e0dac50fSopenharmony_ci} 347e0dac50fSopenharmony_ci 348e0dac50fSopenharmony_ci/** 349e0dac50fSopenharmony_ci * @tc.name: SetActive 350e0dac50fSopenharmony_ci * @tc.desc: SetActive Test 351e0dac50fSopenharmony_ci * @tc.type: FUNC 352e0dac50fSopenharmony_ci */ 353e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetActive, Function | SmallTest | Level2) 354e0dac50fSopenharmony_ci{ 355e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 356e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_CONNECT); 357e0dac50fSopenharmony_ci auto result = session_->SetActive(false); 358e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_DO_NOTHING); 359e0dac50fSopenharmony_ci} 360e0dac50fSopenharmony_ci 361e0dac50fSopenharmony_ci/** 362e0dac50fSopenharmony_ci * @tc.name: SetActive02 363e0dac50fSopenharmony_ci * @tc.desc: SetActive Test 364e0dac50fSopenharmony_ci * @tc.type: FUNC 365e0dac50fSopenharmony_ci */ 366e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetActive02, Function | SmallTest | Level2) 367e0dac50fSopenharmony_ci{ 368e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 369e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 370e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 371e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 372e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 373e0dac50fSopenharmony_ci auto result = session_->SetActive(true); 374e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 375e0dac50fSopenharmony_ci} 376e0dac50fSopenharmony_ci 377e0dac50fSopenharmony_ci/** 378e0dac50fSopenharmony_ci * @tc.name: SetActive03 379e0dac50fSopenharmony_ci * @tc.desc: SetActive Test 380e0dac50fSopenharmony_ci * @tc.type: FUNC 381e0dac50fSopenharmony_ci */ 382e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetActive03, Function | SmallTest | Level2) 383e0dac50fSopenharmony_ci{ 384e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 385e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 386e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 387e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 388e0dac50fSopenharmony_ci 389e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_CONNECT); 390e0dac50fSopenharmony_ci auto result = session_->SetActive(true); 391e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 392e0dac50fSopenharmony_ci 393e0dac50fSopenharmony_ci session_->isActive_ = true; 394e0dac50fSopenharmony_ci result = session_->SetActive(false); 395e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 396e0dac50fSopenharmony_ci 397e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_ACTIVE); 398e0dac50fSopenharmony_ci session_->isActive_ = true; 399e0dac50fSopenharmony_ci result = session_->SetActive(false); 400e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 401e0dac50fSopenharmony_ci} 402e0dac50fSopenharmony_ci 403e0dac50fSopenharmony_ci/** 404e0dac50fSopenharmony_ci * @tc.name: IsTopDialog02 405e0dac50fSopenharmony_ci * @tc.desc: IsTopDialog Test 406e0dac50fSopenharmony_ci * @tc.type: FUNC 407e0dac50fSopenharmony_ci */ 408e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, IsTopDialog02, Function | SmallTest | Level2) 409e0dac50fSopenharmony_ci{ 410e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 411e0dac50fSopenharmony_ci session_->SetParentSession(nullptr); 412e0dac50fSopenharmony_ci EXPECT_EQ(false, session_->IsTopDialog()); 413e0dac50fSopenharmony_ci 414e0dac50fSopenharmony_ci SessionInfo info; 415e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 416e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 417e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 418e0dac50fSopenharmony_ci sptr<Session> parentSession = sptr<Session>::MakeSptr(info); 419e0dac50fSopenharmony_ci ASSERT_NE(parentSession, nullptr); 420e0dac50fSopenharmony_ci parentSession->dialogVec_.clear(); 421e0dac50fSopenharmony_ci session_->SetParentSession(parentSession); 422e0dac50fSopenharmony_ci auto result = session_->IsTopDialog(); 423e0dac50fSopenharmony_ci EXPECT_EQ(result, true); 424e0dac50fSopenharmony_ci} 425e0dac50fSopenharmony_ci 426e0dac50fSopenharmony_ci/** 427e0dac50fSopenharmony_ci * @tc.name: IsTopDialog03 428e0dac50fSopenharmony_ci * @tc.desc: IsTopDialog Test 429e0dac50fSopenharmony_ci * @tc.type: FUNC 430e0dac50fSopenharmony_ci */ 431e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, IsTopDialog03, Function | SmallTest | Level2) 432e0dac50fSopenharmony_ci{ 433e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 434e0dac50fSopenharmony_ci session_->dialogVec_.clear(); 435e0dac50fSopenharmony_ci SessionInfo info; 436e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 437e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 438e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 439e0dac50fSopenharmony_ci sptr<Session> dialogSession1 = sptr<Session>::MakeSptr(info); 440e0dac50fSopenharmony_ci sptr<Session> dialogSession2 = sptr<Session>::MakeSptr(info); 441e0dac50fSopenharmony_ci ASSERT_NE(dialogSession1, nullptr); 442e0dac50fSopenharmony_ci ASSERT_NE(dialogSession2, nullptr); 443e0dac50fSopenharmony_ci dialogSession1->SetParentSession(session_); 444e0dac50fSopenharmony_ci dialogSession2->SetParentSession(session_); 445e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession1); 446e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession2); 447e0dac50fSopenharmony_ci dialogSession1->SetSessionState(SessionState::STATE_INACTIVE); 448e0dac50fSopenharmony_ci dialogSession2->SetSessionState(SessionState::STATE_INACTIVE); 449e0dac50fSopenharmony_ci EXPECT_EQ(false, dialogSession1->IsTopDialog()); 450e0dac50fSopenharmony_ci} 451e0dac50fSopenharmony_ci 452e0dac50fSopenharmony_ci/** 453e0dac50fSopenharmony_ci * @tc.name: PresentFocusIfPointDown 454e0dac50fSopenharmony_ci * @tc.desc: PresentFocusIfPointDown Test 455e0dac50fSopenharmony_ci * @tc.type: FUNC 456e0dac50fSopenharmony_ci */ 457e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, PresentFocusIfPointDown, Function | SmallTest | Level2) 458e0dac50fSopenharmony_ci{ 459e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 460e0dac50fSopenharmony_ci session_->isFocused_ = true; 461e0dac50fSopenharmony_ci session_->PresentFocusIfPointDown(); 462e0dac50fSopenharmony_ci 463e0dac50fSopenharmony_ci session_->isFocused_ = false; 464e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 465e0dac50fSopenharmony_ci EXPECT_NE(session_->property_, nullptr); 466e0dac50fSopenharmony_ci session_->property_->SetFocusable(false); 467e0dac50fSopenharmony_ci session_->PresentFocusIfPointDown(); 468e0dac50fSopenharmony_ci session_->SetPendingSessionToBackgroundForDelegatorListener(nullptr); 469e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->PendingSessionToBackgroundForDelegator(true)); 470e0dac50fSopenharmony_ci} 471e0dac50fSopenharmony_ci 472e0dac50fSopenharmony_ci/** 473e0dac50fSopenharmony_ci * @tc.name: HandlePointDownDialog 474e0dac50fSopenharmony_ci * @tc.desc: HandlePointDownDialog Test 475e0dac50fSopenharmony_ci * @tc.type: FUNC 476e0dac50fSopenharmony_ci */ 477e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, HandlePointDownDialog, Function | SmallTest | Level2) 478e0dac50fSopenharmony_ci{ 479e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 480e0dac50fSopenharmony_ci SessionInfo info; 481e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 482e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 483e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 484e0dac50fSopenharmony_ci sptr<Session> dialogSession1 = sptr<Session>::MakeSptr(info); 485e0dac50fSopenharmony_ci sptr<Session> dialogSession2 = sptr<Session>::MakeSptr(info); 486e0dac50fSopenharmony_ci sptr<Session> dialogSession3 = sptr<Session>::MakeSptr(info); 487e0dac50fSopenharmony_ci sptr<Session> dialogSession4 = nullptr; 488e0dac50fSopenharmony_ci ASSERT_NE(dialogSession1, nullptr); 489e0dac50fSopenharmony_ci ASSERT_NE(dialogSession2, nullptr); 490e0dac50fSopenharmony_ci ASSERT_NE(dialogSession3, nullptr); 491e0dac50fSopenharmony_ci dialogSession1->SetSessionState(SessionState::STATE_FOREGROUND); 492e0dac50fSopenharmony_ci dialogSession2->SetSessionState(SessionState::STATE_ACTIVE); 493e0dac50fSopenharmony_ci dialogSession2->SetSessionState(SessionState::STATE_INACTIVE); 494e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession1); 495e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession2); 496e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession3); 497e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession4); 498e0dac50fSopenharmony_ci session_->HandlePointDownDialog(); 499e0dac50fSopenharmony_ci session_->SetPendingSessionToBackgroundForDelegatorListener(nullptr); 500e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->PendingSessionToBackgroundForDelegator(true)); 501e0dac50fSopenharmony_ci} 502e0dac50fSopenharmony_ci 503e0dac50fSopenharmony_ci/** 504e0dac50fSopenharmony_ci * @tc.name: HandleSubWindowClick01 505e0dac50fSopenharmony_ci * @tc.desc: parentSession and property is nullptr 506e0dac50fSopenharmony_ci * @tc.type: FUNC 507e0dac50fSopenharmony_ci */ 508e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, HandleSubWindowClick01, Function | SmallTest | Level2) 509e0dac50fSopenharmony_ci{ 510e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 511e0dac50fSopenharmony_ci auto result = session_->HandleSubWindowClick(MMI::PointerEvent::POINTER_ACTION_DOWN); 512e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 513e0dac50fSopenharmony_ci} 514e0dac50fSopenharmony_ci 515e0dac50fSopenharmony_ci/** 516e0dac50fSopenharmony_ci * @tc.name: HandleSubWindowClick03 517e0dac50fSopenharmony_ci * @tc.desc: parentSession->dialogVec_ is nullptr 518e0dac50fSopenharmony_ci * @tc.type: FUNC 519e0dac50fSopenharmony_ci */ 520e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, HandleSubWindowClick03, Function | SmallTest | Level2) 521e0dac50fSopenharmony_ci{ 522e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 523e0dac50fSopenharmony_ci SessionInfo info; 524e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 525e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 526e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 527e0dac50fSopenharmony_ci sptr<Session> dialogSession = sptr<Session>::MakeSptr(info); 528e0dac50fSopenharmony_ci ASSERT_NE(dialogSession, nullptr); 529e0dac50fSopenharmony_ci session_->SetParentSession(dialogSession); 530e0dac50fSopenharmony_ci 531e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 532e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 533e0dac50fSopenharmony_ci 534e0dac50fSopenharmony_ci auto result = session_->HandleSubWindowClick(MMI::PointerEvent::POINTER_ACTION_DOWN); 535e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 536e0dac50fSopenharmony_ci 537e0dac50fSopenharmony_ci result = session_->HandleSubWindowClick(MMI::PointerEvent::POINTER_ACTION_MOVE); 538e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 539e0dac50fSopenharmony_ci} 540e0dac50fSopenharmony_ci 541e0dac50fSopenharmony_ci/** 542e0dac50fSopenharmony_ci * @tc.name: TransferPointerEvent06 543e0dac50fSopenharmony_ci * @tc.desc: TransferPointerEvent Test 544e0dac50fSopenharmony_ci * @tc.type: FUNC 545e0dac50fSopenharmony_ci */ 546e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferPointerEvent06, Function | SmallTest | Level2) 547e0dac50fSopenharmony_ci{ 548e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 549e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_CONNECT); 550e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 551e0dac50fSopenharmony_ci ASSERT_NE(pointerEvent, nullptr); 552e0dac50fSopenharmony_ci 553e0dac50fSopenharmony_ci SessionInfo info; 554e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 555e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 556e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 557e0dac50fSopenharmony_ci sptr<Session> dialogSession = sptr<Session>::MakeSptr(info); 558e0dac50fSopenharmony_ci ASSERT_NE(dialogSession, nullptr); 559e0dac50fSopenharmony_ci dialogSession->SetSessionState(SessionState::STATE_ACTIVE); 560e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession); 561e0dac50fSopenharmony_ci pointerEvent->pointerAction_ = MMI::PointerEvent::POINTER_ACTION_DOWN; 562e0dac50fSopenharmony_ci 563e0dac50fSopenharmony_ci auto result = session_->TransferPointerEvent(pointerEvent); 564e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_INVALID_PERMISSION); 565e0dac50fSopenharmony_ci} 566e0dac50fSopenharmony_ci 567e0dac50fSopenharmony_ci/** 568e0dac50fSopenharmony_ci * @tc.name: TransferPointerEvent07 569e0dac50fSopenharmony_ci * @tc.desc: TransferPointerEvent Test 570e0dac50fSopenharmony_ci * @tc.type: FUNC 571e0dac50fSopenharmony_ci */ 572e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferPointerEvent07, Function | SmallTest | Level2) 573e0dac50fSopenharmony_ci{ 574e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 575e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_CONNECT); 576e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 577e0dac50fSopenharmony_ci ASSERT_NE(pointerEvent, nullptr); 578e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 579e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 580e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 581e0dac50fSopenharmony_ci auto result = session_->TransferPointerEvent(pointerEvent); 582e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 583e0dac50fSopenharmony_ci} 584e0dac50fSopenharmony_ci 585e0dac50fSopenharmony_ci/** 586e0dac50fSopenharmony_ci * @tc.name: TransferPointerEvent08 587e0dac50fSopenharmony_ci * @tc.desc: TransferPointerEvent Test 588e0dac50fSopenharmony_ci * @tc.type: FUNC 589e0dac50fSopenharmony_ci */ 590e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferPointerEvent08, Function | SmallTest | Level2) 591e0dac50fSopenharmony_ci{ 592e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 593e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_CONNECT); 594e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 595e0dac50fSopenharmony_ci ASSERT_NE(pointerEvent, nullptr); 596e0dac50fSopenharmony_ci 597e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 598e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 599e0dac50fSopenharmony_ci 600e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 601e0dac50fSopenharmony_ci SessionInfo info; 602e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 603e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 604e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 605e0dac50fSopenharmony_ci sptr<Session> dialogSession = sptr<Session>::MakeSptr(info); 606e0dac50fSopenharmony_ci ASSERT_NE(dialogSession, nullptr); 607e0dac50fSopenharmony_ci 608e0dac50fSopenharmony_ci session_->SetParentSession(dialogSession); 609e0dac50fSopenharmony_ci auto result = session_->TransferPointerEvent(pointerEvent); 610e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 611e0dac50fSopenharmony_ci} 612e0dac50fSopenharmony_ci 613e0dac50fSopenharmony_ci/** 614e0dac50fSopenharmony_ci * @tc.name: TransferPointerEvent09 615e0dac50fSopenharmony_ci * @tc.desc: TransferPointerEvent Test 616e0dac50fSopenharmony_ci * @tc.type: FUNC 617e0dac50fSopenharmony_ci */ 618e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferPointerEvent09, Function | SmallTest | Level2) 619e0dac50fSopenharmony_ci{ 620e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 621e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 622e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 623e0dac50fSopenharmony_ci ASSERT_NE(pointerEvent, nullptr); 624e0dac50fSopenharmony_ci 625e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 626e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 627e0dac50fSopenharmony_ci 628e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 629e0dac50fSopenharmony_ci SessionInfo info; 630e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 631e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 632e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 633e0dac50fSopenharmony_ci sptr<Session> dialogSession = sptr<Session>::MakeSptr(info); 634e0dac50fSopenharmony_ci ASSERT_NE(dialogSession, nullptr); 635e0dac50fSopenharmony_ci 636e0dac50fSopenharmony_ci session_->SetParentSession(dialogSession); 637e0dac50fSopenharmony_ci dialogSession->dialogVec_.push_back(session_); 638e0dac50fSopenharmony_ci pointerEvent->pointerAction_ = MMI::PointerEvent::POINTER_ACTION_MOVE; 639e0dac50fSopenharmony_ci auto result = session_->TransferPointerEvent(pointerEvent); 640e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 641e0dac50fSopenharmony_ci} 642e0dac50fSopenharmony_ci 643e0dac50fSopenharmony_ci/** 644e0dac50fSopenharmony_ci * @tc.name: TransferPointerEvent10 645e0dac50fSopenharmony_ci * @tc.desc: TransferPointerEvent Test 646e0dac50fSopenharmony_ci * @tc.type: FUNC 647e0dac50fSopenharmony_ci */ 648e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferPointerEvent10, Function | SmallTest | Level2) 649e0dac50fSopenharmony_ci{ 650e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 651e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 652e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 653e0dac50fSopenharmony_ci ASSERT_NE(pointerEvent, nullptr); 654e0dac50fSopenharmony_ci pointerEvent->pointerAction_ = MMI::PointerEvent::POINTER_ACTION_DOWN; 655e0dac50fSopenharmony_ci 656e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 657e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 658e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::WINDOW_TYPE_DIALOG); 659e0dac50fSopenharmony_ci 660e0dac50fSopenharmony_ci SessionInfo info; 661e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 662e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 663e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 664e0dac50fSopenharmony_ci sptr<Session> dialogSession = sptr<Session>::MakeSptr(info); 665e0dac50fSopenharmony_ci sptr<Session> dialogSession2 = sptr<Session>::MakeSptr(info); 666e0dac50fSopenharmony_ci sptr<Session> dialogSession3 = sptr<Session>::MakeSptr(info); 667e0dac50fSopenharmony_ci ASSERT_NE(dialogSession, nullptr); 668e0dac50fSopenharmony_ci ASSERT_NE(dialogSession2, nullptr); 669e0dac50fSopenharmony_ci ASSERT_NE(dialogSession3, nullptr); 670e0dac50fSopenharmony_ci dialogSession2->SetSessionState(SessionState::STATE_FOREGROUND); 671e0dac50fSopenharmony_ci dialogSession3->SetSessionState(SessionState::STATE_ACTIVE); 672e0dac50fSopenharmony_ci dialogSession2->persistentId_ = 9; 673e0dac50fSopenharmony_ci session_->SetParentSession(dialogSession); 674e0dac50fSopenharmony_ci dialogSession->dialogVec_.push_back(dialogSession2); 675e0dac50fSopenharmony_ci dialogSession->dialogVec_.push_back(dialogSession3); 676e0dac50fSopenharmony_ci auto result = session_->TransferPointerEvent(pointerEvent); 677e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 678e0dac50fSopenharmony_ci} 679e0dac50fSopenharmony_ci 680e0dac50fSopenharmony_ci/** 681e0dac50fSopenharmony_ci * @tc.name: TransferPointerEvent11 682e0dac50fSopenharmony_ci * @tc.desc: TransferPointerEvent Test 683e0dac50fSopenharmony_ci * @tc.type: FUNC 684e0dac50fSopenharmony_ci */ 685e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferPointerEvent11, Function | SmallTest | Level2) 686e0dac50fSopenharmony_ci{ 687e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 688e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 689e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 690e0dac50fSopenharmony_ci ASSERT_NE(pointerEvent, nullptr); 691e0dac50fSopenharmony_ci 692e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 693e0dac50fSopenharmony_ci ASSERT_NE(session_->property_, nullptr); 694e0dac50fSopenharmony_ci session_->property_->SetWindowType(WindowType::APP_WINDOW_BASE); 695e0dac50fSopenharmony_ci 696e0dac50fSopenharmony_ci session_->windowEventChannel_ = nullptr; 697e0dac50fSopenharmony_ci auto result = session_->TransferPointerEvent(pointerEvent); 698e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 699e0dac50fSopenharmony_ci} 700e0dac50fSopenharmony_ci 701e0dac50fSopenharmony_ci/** 702e0dac50fSopenharmony_ci * @tc.name: TransferFocusStateEvent03 703e0dac50fSopenharmony_ci * @tc.desc: TransferFocusStateEvent Test 704e0dac50fSopenharmony_ci * @tc.type: FUNC 705e0dac50fSopenharmony_ci */ 706e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, TransferFocusStateEvent03, Function | SmallTest | Level2) 707e0dac50fSopenharmony_ci{ 708e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 709e0dac50fSopenharmony_ci session_->windowEventChannel_ = nullptr; 710e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 711e0dac50fSopenharmony_ci EXPECT_EQ(session_->TransferFocusStateEvent(true), WSError::WS_ERROR_NULLPTR); 712e0dac50fSopenharmony_ci} 713e0dac50fSopenharmony_ci 714e0dac50fSopenharmony_ci/** 715e0dac50fSopenharmony_ci * @tc.name: Snapshot 716e0dac50fSopenharmony_ci * @tc.desc: Snapshot Test 717e0dac50fSopenharmony_ci * @tc.type: FUNC 718e0dac50fSopenharmony_ci */ 719e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, Snapshot, Function | SmallTest | Level2) 720e0dac50fSopenharmony_ci{ 721e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 722e0dac50fSopenharmony_ci int32_t persistentId = 1424; 723e0dac50fSopenharmony_ci std::string bundleName = "testBundleName"; 724e0dac50fSopenharmony_ci session_->scenePersistence_ = sptr<ScenePersistence>::MakeSptr(bundleName, persistentId); 725e0dac50fSopenharmony_ci ASSERT_NE(session_->scenePersistence_, nullptr); 726e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig config; 727e0dac50fSopenharmony_ci session_->surfaceNode_ = RSSurfaceNode::Create(config); 728e0dac50fSopenharmony_ci ASSERT_NE(session_->surfaceNode_, nullptr); 729e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->Snapshot(false, 0.0f)); 730e0dac50fSopenharmony_ci 731e0dac50fSopenharmony_ci session_->bufferAvailable_ = true; 732e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->Snapshot(false, 0.0f)); 733e0dac50fSopenharmony_ci 734e0dac50fSopenharmony_ci session_->surfaceNode_->bufferAvailable_ = true; 735e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->Snapshot(false, 0.0f)); 736e0dac50fSopenharmony_ci 737e0dac50fSopenharmony_ci session_->surfaceNode_ = nullptr; 738e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->Snapshot(false, 0.0f)); 739e0dac50fSopenharmony_ci} 740e0dac50fSopenharmony_ci 741e0dac50fSopenharmony_ci/** 742e0dac50fSopenharmony_ci * @tc.name: SetBufferAvailableChangeListener 743e0dac50fSopenharmony_ci * @tc.desc: SetBufferAvailableChangeListener Test 744e0dac50fSopenharmony_ci * @tc.type: FUNC 745e0dac50fSopenharmony_ci */ 746e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetBufferAvailableChangeListener, Function | SmallTest | Level2) 747e0dac50fSopenharmony_ci{ 748e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 749e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_CONNECT); 750e0dac50fSopenharmony_ci session_->SetSessionStateChangeNotifyManagerListener(nullptr); 751e0dac50fSopenharmony_ci 752e0dac50fSopenharmony_ci session_->bufferAvailable_ = true; 753e0dac50fSopenharmony_ci session_->SetBufferAvailableChangeListener(nullptr); 754e0dac50fSopenharmony_ci 755e0dac50fSopenharmony_ci int resultValue = 0; 756e0dac50fSopenharmony_ci NotifyBufferAvailableChangeFunc func = [&resultValue](const bool isAvailable) { 757e0dac50fSopenharmony_ci resultValue = 1; 758e0dac50fSopenharmony_ci }; 759e0dac50fSopenharmony_ci session_->SetBufferAvailableChangeListener(func); 760e0dac50fSopenharmony_ci EXPECT_EQ(resultValue, 1); 761e0dac50fSopenharmony_ci} 762e0dac50fSopenharmony_ci 763e0dac50fSopenharmony_ci/** 764e0dac50fSopenharmony_ci * @tc.name: SetLeashWindowSurfaceNodeChangedListener 765e0dac50fSopenharmony_ci * @tc.desc: SetLeashWindowSurfaceNodeChangedListener Test 766e0dac50fSopenharmony_ci * @tc.type: FUNC 767e0dac50fSopenharmony_ci */ 768e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetLeashWindowSurfaceNodeChangedListener, Function | SmallTest | Level2) 769e0dac50fSopenharmony_ci{ 770e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 771e0dac50fSopenharmony_ci int resultValue = 0; 772e0dac50fSopenharmony_ci NotifyLeashWindowSurfaceNodeChangedFunc func = [&resultValue]() { 773e0dac50fSopenharmony_ci resultValue = 1; 774e0dac50fSopenharmony_ci }; 775e0dac50fSopenharmony_ci session_->SetLeashWindowSurfaceNodeChangedListener(func); 776e0dac50fSopenharmony_ci session_->SetLeashWinSurfaceNode(nullptr); 777e0dac50fSopenharmony_ci EXPECT_EQ(resultValue, 1); 778e0dac50fSopenharmony_ci session_->SetLeashWindowSurfaceNodeChangedListener(nullptr); 779e0dac50fSopenharmony_ci} 780e0dac50fSopenharmony_ci 781e0dac50fSopenharmony_ci/** 782e0dac50fSopenharmony_ci * @tc.name: NotifySessionFocusableChange 783e0dac50fSopenharmony_ci * @tc.desc: NotifySessionFocusableChange Test 784e0dac50fSopenharmony_ci * @tc.type: FUNC 785e0dac50fSopenharmony_ci */ 786e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifySessionFocusableChange, Function | SmallTest | Level2) 787e0dac50fSopenharmony_ci{ 788e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 789e0dac50fSopenharmony_ci int resultValue = 0; 790e0dac50fSopenharmony_ci NotifySessionFocusableChangeFunc func = [&resultValue](const bool isFocusable) { 791e0dac50fSopenharmony_ci resultValue = 1; 792e0dac50fSopenharmony_ci }; 793e0dac50fSopenharmony_ci session_->SetSessionFocusableChangeListener(func); 794e0dac50fSopenharmony_ci session_->NotifySessionFocusableChange(true); 795e0dac50fSopenharmony_ci 796e0dac50fSopenharmony_ci session_->sessionFocusableChangeFunc_ = nullptr; 797e0dac50fSopenharmony_ci session_->NotifySessionFocusableChange(true); 798e0dac50fSopenharmony_ci EXPECT_EQ(resultValue, 1); 799e0dac50fSopenharmony_ci} 800e0dac50fSopenharmony_ci 801e0dac50fSopenharmony_ci/** 802e0dac50fSopenharmony_ci * @tc.name: GetStateFromManager 803e0dac50fSopenharmony_ci * @tc.desc: GetStateFromManager Test 804e0dac50fSopenharmony_ci * @tc.type: FUNC 805e0dac50fSopenharmony_ci */ 806e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, GetStateFromManager, Function | SmallTest | Level2) 807e0dac50fSopenharmony_ci{ 808e0dac50fSopenharmony_ci ManagerState key = ManagerState{0}; 809e0dac50fSopenharmony_ci GetStateFromManagerFunc func = [](const ManagerState key) { 810e0dac50fSopenharmony_ci return true; 811e0dac50fSopenharmony_ci }; 812e0dac50fSopenharmony_ci session_->getStateFromManagerFunc_ = func; 813e0dac50fSopenharmony_ci session_->GetStateFromManager(key); 814e0dac50fSopenharmony_ci 815e0dac50fSopenharmony_ci session_->getStateFromManagerFunc_ = nullptr; 816e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->GetStateFromManager(key)); 817e0dac50fSopenharmony_ci 818e0dac50fSopenharmony_ci // 覆盖default分支 819e0dac50fSopenharmony_ci key = ManagerState{-1}; 820e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->GetStateFromManager(key)); 821e0dac50fSopenharmony_ci} 822e0dac50fSopenharmony_ci 823e0dac50fSopenharmony_ci/** 824e0dac50fSopenharmony_ci * @tc.name: NotifyUIRequestFocus 825e0dac50fSopenharmony_ci * @tc.desc: NotifyUIRequestFocus Test 826e0dac50fSopenharmony_ci * @tc.type: FUNC 827e0dac50fSopenharmony_ci */ 828e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifyUIRequestFocus, Function | SmallTest | Level2) 829e0dac50fSopenharmony_ci{ 830e0dac50fSopenharmony_ci session_->requestFocusFunc_ = []() {}; 831e0dac50fSopenharmony_ci session_->NotifyUIRequestFocus(); 832e0dac50fSopenharmony_ci 833e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 834e0dac50fSopenharmony_ci} 835e0dac50fSopenharmony_ci 836e0dac50fSopenharmony_ci/** 837e0dac50fSopenharmony_ci * @tc.name: SetCompatibleModeInPc 838e0dac50fSopenharmony_ci * @tc.desc: SetCompatibleModeInPc Test 839e0dac50fSopenharmony_ci * @tc.type: FUNC 840e0dac50fSopenharmony_ci */ 841e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetCompatibleModeInPc, Function | SmallTest | Level2) 842e0dac50fSopenharmony_ci{ 843e0dac50fSopenharmony_ci session_->property_ = nullptr; 844e0dac50fSopenharmony_ci auto enable = true; 845e0dac50fSopenharmony_ci auto isSupportDragInPcCompatibleMode = true; 846e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_NULLPTR, session_->SetCompatibleModeInPc(enable, isSupportDragInPcCompatibleMode)); 847e0dac50fSopenharmony_ci 848e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 849e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetCompatibleModeInPc(enable, isSupportDragInPcCompatibleMode)); 850e0dac50fSopenharmony_ci 851e0dac50fSopenharmony_ci enable = false; 852e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetCompatibleModeInPc(enable, isSupportDragInPcCompatibleMode)); 853e0dac50fSopenharmony_ci} 854e0dac50fSopenharmony_ci 855e0dac50fSopenharmony_ci/** 856e0dac50fSopenharmony_ci * @tc.name: CompatibleFullScreen Recover&Minimize&Close 857e0dac50fSopenharmony_ci * @tc.desc: CompatibleFullScreen Recover&Minimize&Close Test 858e0dac50fSopenharmony_ci * @tc.type: FUNC 859e0dac50fSopenharmony_ci */ 860e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, CompatibleFullScreen, Function | SmallTest | Level2) 861e0dac50fSopenharmony_ci{ 862e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 863e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 864e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 865e0dac50fSopenharmony_ci 866e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 867e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 868e0dac50fSopenharmony_ci session_->CompatibleFullScreenRecover(); 869e0dac50fSopenharmony_ci session_->CompatibleFullScreenMinimize(); 870e0dac50fSopenharmony_ci session_->CompatibleFullScreenClose(); 871e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 872e0dac50fSopenharmony_ci 873e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 874e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->CompatibleFullScreenRecover()); 875e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->CompatibleFullScreenMinimize()); 876e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->CompatibleFullScreenClose()); 877e0dac50fSopenharmony_ci} 878e0dac50fSopenharmony_ci 879e0dac50fSopenharmony_ci/** 880e0dac50fSopenharmony_ci * @tc.name: NotifySessionTouchableChange 881e0dac50fSopenharmony_ci * @tc.desc: NotifySessionTouchableChange Test 882e0dac50fSopenharmony_ci * @tc.type: FUNC 883e0dac50fSopenharmony_ci */ 884e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifySessionTouchableChange, Function | SmallTest | Level2) 885e0dac50fSopenharmony_ci{ 886e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 887e0dac50fSopenharmony_ci int resultValue = 0; 888e0dac50fSopenharmony_ci NotifySessionTouchableChangeFunc func = [&resultValue](const bool touchable) { 889e0dac50fSopenharmony_ci resultValue = 1; 890e0dac50fSopenharmony_ci }; 891e0dac50fSopenharmony_ci session_->SetSessionTouchableChangeListener(func); 892e0dac50fSopenharmony_ci session_->NotifySessionTouchableChange(true); 893e0dac50fSopenharmony_ci EXPECT_EQ(resultValue, 1); 894e0dac50fSopenharmony_ci} 895e0dac50fSopenharmony_ci 896e0dac50fSopenharmony_ci/** 897e0dac50fSopenharmony_ci * @tc.name: NotifyClick 898e0dac50fSopenharmony_ci * @tc.desc: NotifyClick Test 899e0dac50fSopenharmony_ci * @tc.type: FUNC 900e0dac50fSopenharmony_ci */ 901e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifyClick, Function | SmallTest | Level2) 902e0dac50fSopenharmony_ci{ 903e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 904e0dac50fSopenharmony_ci int resultValue = 0; 905e0dac50fSopenharmony_ci bool hasRequestFocus = true; 906e0dac50fSopenharmony_ci NotifyClickFunc func = [&resultValue, &hasRequestFocus](bool requestFocus) { 907e0dac50fSopenharmony_ci resultValue = 1; 908e0dac50fSopenharmony_ci hasRequestFocus = requestFocus; 909e0dac50fSopenharmony_ci }; 910e0dac50fSopenharmony_ci session_->SetClickListener(func); 911e0dac50fSopenharmony_ci session_->NotifyClick(false); 912e0dac50fSopenharmony_ci EXPECT_EQ(resultValue, 1); 913e0dac50fSopenharmony_ci EXPECT_EQ(hasRequestFocus, false); 914e0dac50fSopenharmony_ci} 915e0dac50fSopenharmony_ci 916e0dac50fSopenharmony_ci/** 917e0dac50fSopenharmony_ci * @tc.name: NotifyRequestFocusStatusNotifyManager 918e0dac50fSopenharmony_ci * @tc.desc: NotifyRequestFocusStatusNotifyManager Test 919e0dac50fSopenharmony_ci * @tc.type: FUNC 920e0dac50fSopenharmony_ci */ 921e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifyRequestFocusStatusNotifyManager, Function | SmallTest | Level2) 922e0dac50fSopenharmony_ci{ 923e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 924e0dac50fSopenharmony_ci int resultValue = 0; 925e0dac50fSopenharmony_ci NotifyRequestFocusStatusNotifyManagerFunc func = [&resultValue](int32_t persistentId, 926e0dac50fSopenharmony_ci const bool isFocused, const bool byForeground, FocusChangeReason reason) { 927e0dac50fSopenharmony_ci resultValue = 1; 928e0dac50fSopenharmony_ci }; 929e0dac50fSopenharmony_ci session_->SetRequestFocusStatusNotifyManagerListener(func); 930e0dac50fSopenharmony_ci FocusChangeReason reason = FocusChangeReason::SCB_SESSION_REQUEST; 931e0dac50fSopenharmony_ci session_->NotifyRequestFocusStatusNotifyManager(true, false, reason); 932e0dac50fSopenharmony_ci EXPECT_EQ(resultValue, 1); 933e0dac50fSopenharmony_ci} 934e0dac50fSopenharmony_ci 935e0dac50fSopenharmony_ci/** 936e0dac50fSopenharmony_ci * @tc.name: PresentFoucusIfNeed 937e0dac50fSopenharmony_ci * @tc.desc: PresentFoucusIfNeed Test 938e0dac50fSopenharmony_ci * @tc.type: FUNC 939e0dac50fSopenharmony_ci */ 940e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, PresentFoucusIfNeed, Function | SmallTest | Level2) 941e0dac50fSopenharmony_ci{ 942e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 943e0dac50fSopenharmony_ci int32_t pointerAction = MMI::PointerEvent::POINTER_ACTION_DOWN; 944e0dac50fSopenharmony_ci session_->PresentFoucusIfNeed(pointerAction); 945e0dac50fSopenharmony_ci pointerAction = MMI::PointerEvent::POINTER_ACTION_BUTTON_DOWN; 946e0dac50fSopenharmony_ci session_->PresentFoucusIfNeed(pointerAction); 947e0dac50fSopenharmony_ci session_->property_->focusable_ = false; 948e0dac50fSopenharmony_ci session_->PresentFoucusIfNeed(pointerAction); 949e0dac50fSopenharmony_ci session_->isFocused_ = true; 950e0dac50fSopenharmony_ci session_->PresentFoucusIfNeed(pointerAction); 951e0dac50fSopenharmony_ci EXPECT_EQ(true, session_->CheckPointerEventDispatch(nullptr)); 952e0dac50fSopenharmony_ci} 953e0dac50fSopenharmony_ci 954e0dac50fSopenharmony_ci/** 955e0dac50fSopenharmony_ci * @tc.name: UpdateFocus03 956e0dac50fSopenharmony_ci * @tc.desc: UpdateFocus Test 957e0dac50fSopenharmony_ci * @tc.type: FUNC 958e0dac50fSopenharmony_ci */ 959e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, UpdateFocus03, Function | SmallTest | Level2) 960e0dac50fSopenharmony_ci{ 961e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 962e0dac50fSopenharmony_ci session_->isFocused_ = true; 963e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->UpdateFocus(false)); 964e0dac50fSopenharmony_ci} 965e0dac50fSopenharmony_ci 966e0dac50fSopenharmony_ci/** 967e0dac50fSopenharmony_ci * @tc.name: NotifyFocusStatus 968e0dac50fSopenharmony_ci * @tc.desc: NotifyFocusStatus Test 969e0dac50fSopenharmony_ci * @tc.type: FUNC 970e0dac50fSopenharmony_ci */ 971e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifyFocusStatus, Function | SmallTest | Level2) 972e0dac50fSopenharmony_ci{ 973e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 974e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 975e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 976e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 977e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 978e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->NotifyFocusStatus(true)); 979e0dac50fSopenharmony_ci session_->sessionStage_ = nullptr; 980e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_ERROR_NULLPTR, session_->NotifyFocusStatus(true)); 981e0dac50fSopenharmony_ci} 982e0dac50fSopenharmony_ci 983e0dac50fSopenharmony_ci/** 984e0dac50fSopenharmony_ci * @tc.name: RequestFocus 985e0dac50fSopenharmony_ci * @tc.desc: RequestFocus Test 986e0dac50fSopenharmony_ci * @tc.type: FUNC 987e0dac50fSopenharmony_ci */ 988e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, RequestFocus, Function | SmallTest | Level2) 989e0dac50fSopenharmony_ci{ 990e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 991e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 992e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 993e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->RequestFocus(true)); 994e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_OK, session_->RequestFocus(false)); 995e0dac50fSopenharmony_ci} 996e0dac50fSopenharmony_ci 997e0dac50fSopenharmony_ci/** 998e0dac50fSopenharmony_ci * @tc.name: UpdateWindowMode 999e0dac50fSopenharmony_ci * @tc.desc: UpdateWindowMode Test 1000e0dac50fSopenharmony_ci * @tc.type: FUNC 1001e0dac50fSopenharmony_ci */ 1002e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, UpdateWindowMode, Function | SmallTest | Level2) 1003e0dac50fSopenharmony_ci{ 1004e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1005e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 1006e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 1007e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1008e0dac50fSopenharmony_ci 1009e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_END; 1010e0dac50fSopenharmony_ci auto result = session_->UpdateWindowMode(WindowMode::WINDOW_MODE_UNDEFINED); 1011e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_INVALID_SESSION); 1012e0dac50fSopenharmony_ci 1013e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1014e0dac50fSopenharmony_ci result = session_->UpdateWindowMode(WindowMode::WINDOW_MODE_UNDEFINED); 1015e0dac50fSopenharmony_ci EXPECT_EQ(session_->property_->windowMode_, WindowMode::WINDOW_MODE_UNDEFINED); 1016e0dac50fSopenharmony_ci EXPECT_EQ(session_->property_->isNeedUpdateWindowMode_, true); 1017e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 1018e0dac50fSopenharmony_ci 1019e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 1020e0dac50fSopenharmony_ci result = session_->UpdateWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1021e0dac50fSopenharmony_ci EXPECT_EQ(session_->property_->windowMode_, WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1022e0dac50fSopenharmony_ci EXPECT_EQ(session_->property_->maximizeMode_, MaximizeMode::MODE_RECOVER); 1023e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 1024e0dac50fSopenharmony_ci 1025e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 1026e0dac50fSopenharmony_ci result = session_->UpdateWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1027e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 1028e0dac50fSopenharmony_ci 1029e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 1030e0dac50fSopenharmony_ci result = session_->UpdateWindowMode(WindowMode::WINDOW_MODE_UNDEFINED); 1031e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 1032e0dac50fSopenharmony_ci 1033e0dac50fSopenharmony_ci session_->sessionStage_ = nullptr; 1034e0dac50fSopenharmony_ci result = session_->UpdateWindowMode(WindowMode::WINDOW_MODE_UNDEFINED); 1035e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_ERROR_NULLPTR); 1036e0dac50fSopenharmony_ci} 1037e0dac50fSopenharmony_ci 1038e0dac50fSopenharmony_ci/** 1039e0dac50fSopenharmony_ci * @tc.name: RectSizeCheckProcess 1040e0dac50fSopenharmony_ci * @tc.desc: RectSizeCheckProcess Test 1041e0dac50fSopenharmony_ci * @tc.type: FUNC 1042e0dac50fSopenharmony_ci */ 1043e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, RectSizeCheckProcess, Function | SmallTest | Level2) 1044e0dac50fSopenharmony_ci{ 1045e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1046e0dac50fSopenharmony_ci session_->RectSizeCheckProcess(1, 0, 2, 0, 0); 1047e0dac50fSopenharmony_ci session_->RectSizeCheckProcess(1, 0, 1, 0, 0); 1048e0dac50fSopenharmony_ci session_->RectSizeCheckProcess(0, 1, 0, 2, 0); 1049e0dac50fSopenharmony_ci session_->RectSizeCheckProcess(0, 1, 0, 0, 0); 1050e0dac50fSopenharmony_ci EXPECT_EQ(true, session_->CheckPointerEventDispatch(nullptr)); 1051e0dac50fSopenharmony_ci} 1052e0dac50fSopenharmony_ci 1053e0dac50fSopenharmony_ci/** 1054e0dac50fSopenharmony_ci * @tc.name: RectCheckProcess 1055e0dac50fSopenharmony_ci * @tc.desc: RectCheckProcess Test 1056e0dac50fSopenharmony_ci * @tc.type: FUNC 1057e0dac50fSopenharmony_ci */ 1058e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, RectCheckProcess, Function | SmallTest | Level2) 1059e0dac50fSopenharmony_ci{ 1060e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1061e0dac50fSopenharmony_ci session_->isVisible_ = true; 1062e0dac50fSopenharmony_ci session_->property_ = nullptr; 1063e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1064e0dac50fSopenharmony_ci 1065e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1066e0dac50fSopenharmony_ci session_->property_ = nullptr; 1067e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1068e0dac50fSopenharmony_ci EXPECT_EQ(true, session_->CheckPointerEventDispatch(nullptr)); 1069e0dac50fSopenharmony_ci} 1070e0dac50fSopenharmony_ci 1071e0dac50fSopenharmony_ci/** 1072e0dac50fSopenharmony_ci * @tc.name: RectCheckProcess01 1073e0dac50fSopenharmony_ci * @tc.desc: RectCheckProcess01 Test 1074e0dac50fSopenharmony_ci * @tc.type: FUNC 1075e0dac50fSopenharmony_ci */ 1076e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, RectCheckProcess01, Function | SmallTest | Level2) 1077e0dac50fSopenharmony_ci{ 1078e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1079e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_INACTIVE; 1080e0dac50fSopenharmony_ci session_->isVisible_ = false; 1081e0dac50fSopenharmony_ci session_->property_ = nullptr; 1082e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1083e0dac50fSopenharmony_ci 1084e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_ACTIVE; 1085e0dac50fSopenharmony_ci session_->isVisible_ = true; 1086e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 1087e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1088e0dac50fSopenharmony_ci 1089e0dac50fSopenharmony_ci session_->property_->displayId_ = 0; 1090e0dac50fSopenharmony_ci sptr<ScreenSession> screenSession = new ScreenSession(0, ScreenProperty(), 0); 1091e0dac50fSopenharmony_ci ASSERT_NE(screenSession, nullptr); 1092e0dac50fSopenharmony_ci ScreenProperty screenProperty = screenSession->GetScreenProperty(); 1093e0dac50fSopenharmony_ci ASSERT_NE(&screenProperty, nullptr); 1094e0dac50fSopenharmony_ci screenSession->screenId_ = 0; 1095e0dac50fSopenharmony_ci screenSession->SetVirtualPixelRatio(0.0f); 1096e0dac50fSopenharmony_ci ScreenSessionManagerClient::GetInstance().screenSessionMap_.insert(std::make_pair(0, screenSession)); 1097e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1098e0dac50fSopenharmony_ci 1099e0dac50fSopenharmony_ci ScreenSessionManagerClient::GetInstance().screenSessionMap_.clear(); 1100e0dac50fSopenharmony_ci screenSession->SetVirtualPixelRatio(1.0f); 1101e0dac50fSopenharmony_ci ScreenSessionManagerClient::GetInstance().screenSessionMap_.insert(std::make_pair(0, screenSession)); 1102e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1103e0dac50fSopenharmony_ci 1104e0dac50fSopenharmony_ci WSRect rect = {0, 0, 0, 0}; 1105e0dac50fSopenharmony_ci session_->winRect_ = rect; 1106e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1107e0dac50fSopenharmony_ci 1108e0dac50fSopenharmony_ci session_->winRect_.height_ = 200; 1109e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1110e0dac50fSopenharmony_ci 1111e0dac50fSopenharmony_ci session_->aspectRatio_ = 0.0f; 1112e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1113e0dac50fSopenharmony_ci 1114e0dac50fSopenharmony_ci session_->aspectRatio_ = 0.5f; 1115e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1116e0dac50fSopenharmony_ci 1117e0dac50fSopenharmony_ci session_->winRect_.width_ = 200; 1118e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1119e0dac50fSopenharmony_ci 1120e0dac50fSopenharmony_ci session_->aspectRatio_ = 1.0f; 1121e0dac50fSopenharmony_ci session_->RectCheckProcess(); 1122e0dac50fSopenharmony_ci 1123e0dac50fSopenharmony_ci ScreenSessionManagerClient::GetInstance().screenSessionMap_.clear(); 1124e0dac50fSopenharmony_ci} 1125e0dac50fSopenharmony_ci 1126e0dac50fSopenharmony_ci/** 1127e0dac50fSopenharmony_ci * @tc.name: SetAcquireRotateAnimationConfigFunc 1128e0dac50fSopenharmony_ci * @tc.desc: SetAcquireRotateAnimationConfigFunc Test 1129e0dac50fSopenharmony_ci * @tc.type: FUNC 1130e0dac50fSopenharmony_ci */ 1131e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetAcquireRotateAnimationConfigFunc, Function | SmallTest | Level2) 1132e0dac50fSopenharmony_ci{ 1133e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1134e0dac50fSopenharmony_ci session_->SetAcquireRotateAnimationConfigFunc(nullptr); 1135e0dac50fSopenharmony_ci ASSERT_EQ(session_->acquireRotateAnimationConfigFunc_, nullptr); 1136e0dac50fSopenharmony_ci int32_t duration = session_->GetRotateAnimationDuration(); 1137e0dac50fSopenharmony_ci ASSERT_EQ(duration, ROTATE_ANIMATION_DURATION); 1138e0dac50fSopenharmony_ci 1139e0dac50fSopenharmony_ci AcquireRotateAnimationConfigFunc func = [](RotateAnimationConfig& config) { 1140e0dac50fSopenharmony_ci config.duration_ = 800; 1141e0dac50fSopenharmony_ci }; 1142e0dac50fSopenharmony_ci session_->SetAcquireRotateAnimationConfigFunc(func); 1143e0dac50fSopenharmony_ci ASSERT_NE(session_->acquireRotateAnimationConfigFunc_, nullptr); 1144e0dac50fSopenharmony_ci duration = session_->GetRotateAnimationDuration(); 1145e0dac50fSopenharmony_ci ASSERT_EQ(duration, 800); 1146e0dac50fSopenharmony_ci} 1147e0dac50fSopenharmony_ci 1148e0dac50fSopenharmony_ci/** 1149e0dac50fSopenharmony_ci * @tc.name: SetIsPcAppInPad 1150e0dac50fSopenharmony_ci * @tc.desc: SetIsPcAppInPad Test 1151e0dac50fSopenharmony_ci * @tc.type: FUNC 1152e0dac50fSopenharmony_ci */ 1153e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetIsPcAppInPad, Function | SmallTest | Level2) 1154e0dac50fSopenharmony_ci{ 1155e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1156e0dac50fSopenharmony_ci bool isPcAppInPad = false; 1157e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 1158e0dac50fSopenharmony_ci auto result = session_->SetIsPcAppInPad(isPcAppInPad); 1159e0dac50fSopenharmony_ci EXPECT_EQ(result, WSError::WS_OK); 1160e0dac50fSopenharmony_ci 1161e0dac50fSopenharmony_ci session_->property_ = nullptr; 1162e0dac50fSopenharmony_ci EXPECT_EQ(WSError::WS_ERROR_NULLPTR, session_->SetIsPcAppInPad(isPcAppInPad)); 1163e0dac50fSopenharmony_ci} 1164e0dac50fSopenharmony_ci 1165e0dac50fSopenharmony_ci/** 1166e0dac50fSopenharmony_ci * @tc.name: SetBufferAvailable 1167e0dac50fSopenharmony_ci * @tc.desc: SetBufferAvailable Test 1168e0dac50fSopenharmony_ci * @tc.type: FUNC 1169e0dac50fSopenharmony_ci */ 1170e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetBufferAvailable, Function | SmallTest | Level2) 1171e0dac50fSopenharmony_ci{ 1172e0dac50fSopenharmony_ci int resultValue = 0; 1173e0dac50fSopenharmony_ci NotifyBufferAvailableChangeFunc func = [&resultValue](const bool isAvailable) { 1174e0dac50fSopenharmony_ci resultValue = 1; 1175e0dac50fSopenharmony_ci }; 1176e0dac50fSopenharmony_ci session_->SetBufferAvailableChangeListener(func); 1177e0dac50fSopenharmony_ci session_->SetBufferAvailable(true); 1178e0dac50fSopenharmony_ci ASSERT_EQ(session_->bufferAvailable_, true); 1179e0dac50fSopenharmony_ci} 1180e0dac50fSopenharmony_ci 1181e0dac50fSopenharmony_ci/** 1182e0dac50fSopenharmony_ci * @tc.name: NotifySessionInfoChange 1183e0dac50fSopenharmony_ci * @tc.desc: NotifySessionInfoChange Test 1184e0dac50fSopenharmony_ci * @tc.type: FUNC 1185e0dac50fSopenharmony_ci */ 1186e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, NotifySessionInfoChange, Function | SmallTest | Level2) 1187e0dac50fSopenharmony_ci{ 1188e0dac50fSopenharmony_ci int resultValue = 0; 1189e0dac50fSopenharmony_ci NotifyBufferAvailableChangeFunc func = [&resultValue](const bool isAvailable) { 1190e0dac50fSopenharmony_ci resultValue = 1; 1191e0dac50fSopenharmony_ci }; 1192e0dac50fSopenharmony_ci session_->SetSessionInfoChangeNotifyManagerListener(func); 1193e0dac50fSopenharmony_ci session_->NotifySessionInfoChange(); 1194e0dac50fSopenharmony_ci ASSERT_EQ(resultValue, 1); 1195e0dac50fSopenharmony_ci} 1196e0dac50fSopenharmony_ci 1197e0dac50fSopenharmony_ci/** 1198e0dac50fSopenharmony_ci * @tc.name: SetCompatibleModeEnableInPad 1199e0dac50fSopenharmony_ci * @tc.desc: SetCompatibleModeEnableInPad Test 1200e0dac50fSopenharmony_ci * @tc.type: FUNC 1201e0dac50fSopenharmony_ci */ 1202e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetCompatibleModeEnableInPad, Function | SmallTest | Level2) 1203e0dac50fSopenharmony_ci{ 1204e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1205e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1206e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 1207e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 1208e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1209e0dac50fSopenharmony_ci session_->property_ = nullptr; 1210e0dac50fSopenharmony_ci bool enable = true; 1211e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_NULLPTR, session_->SetCompatibleModeEnableInPad(enable)); 1212e0dac50fSopenharmony_ci 1213e0dac50fSopenharmony_ci session_->property_ = sptr<WindowSessionProperty>::MakeSptr(); 1214e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetCompatibleModeEnableInPad(enable)); 1215e0dac50fSopenharmony_ci 1216e0dac50fSopenharmony_ci enable = false; 1217e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetCompatibleModeEnableInPad(enable)); 1218e0dac50fSopenharmony_ci} 1219e0dac50fSopenharmony_ci 1220e0dac50fSopenharmony_ci/** 1221e0dac50fSopenharmony_ci * @tc.name: RectSizeCheckProcess01 1222e0dac50fSopenharmony_ci * @tc.desc: RectSizeCheckProcess Test 1223e0dac50fSopenharmony_ci * @tc.type: FUNC 1224e0dac50fSopenharmony_ci */ 1225e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, RectSizeCheckProcess01, Function | SmallTest | Level2) 1226e0dac50fSopenharmony_ci{ 1227e0dac50fSopenharmony_ci session_->SetSessionProperty(nullptr); 1228e0dac50fSopenharmony_ci session_->RectSizeCheckProcess(1, 1, 2, 2, 0); 1229e0dac50fSopenharmony_ci ASSERT_EQ(session_->property_, nullptr); 1230e0dac50fSopenharmony_ci} 1231e0dac50fSopenharmony_ci 1232e0dac50fSopenharmony_ci/** 1233e0dac50fSopenharmony_ci * @tc.name: GetSurfaceNodeForMoveDrag 1234e0dac50fSopenharmony_ci * @tc.desc: GetSurfaceNodeForMoveDrag Test 1235e0dac50fSopenharmony_ci * @tc.type: FUNC 1236e0dac50fSopenharmony_ci */ 1237e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, GetSurfaceNodeForMoveDrag, Function | SmallTest | Level2) 1238e0dac50fSopenharmony_ci{ 1239e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1240e0dac50fSopenharmony_ci session_->leashWinSurfaceNode_ = nullptr; 1241e0dac50fSopenharmony_ci session_->surfaceNode_ = nullptr; 1242e0dac50fSopenharmony_ci std::shared_ptr<RSSurfaceNode> res = session_->GetSurfaceNodeForMoveDrag(); 1243e0dac50fSopenharmony_ci ASSERT_EQ(res, nullptr); 1244e0dac50fSopenharmony_ci} 1245e0dac50fSopenharmony_ci 1246e0dac50fSopenharmony_ci/** 1247e0dac50fSopenharmony_ci * @tc.name: GetSnapshotPixelMap 1248e0dac50fSopenharmony_ci * @tc.desc: GetSnapshotPixelMap Test 1249e0dac50fSopenharmony_ci * @tc.type: FUNC 1250e0dac50fSopenharmony_ci */ 1251e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, GetSnapshotPixelMap, Function | SmallTest | Level2) 1252e0dac50fSopenharmony_ci{ 1253e0dac50fSopenharmony_ci session_->scenePersistence_ = nullptr; 1254e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->GetSnapshotPixelMap(6.6f, 8.8f)); 1255e0dac50fSopenharmony_ci session_->scenePersistence_ = sptr<ScenePersistence>::MakeSptr("GetSnapshotPixelMap", 2024); 1256e0dac50fSopenharmony_ci EXPECT_NE(nullptr, session_->scenePersistence_); 1257e0dac50fSopenharmony_ci session_->scenePersistence_->isSavingSnapshot_.store(true); 1258e0dac50fSopenharmony_ci session_->snapshot_ = nullptr; 1259e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->GetSnapshotPixelMap(6.6f, 8.8f)); 1260e0dac50fSopenharmony_ci} 1261e0dac50fSopenharmony_ci 1262e0dac50fSopenharmony_ci/** 1263e0dac50fSopenharmony_ci * @tc.name: ResetDirtyFlags 1264e0dac50fSopenharmony_ci * @tc.desc: ResetDirtyFlags Test 1265e0dac50fSopenharmony_ci * @tc.type: FUNC 1266e0dac50fSopenharmony_ci */ 1267e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, ResetDirtyFlags, Function | SmallTest | Level2) 1268e0dac50fSopenharmony_ci{ 1269e0dac50fSopenharmony_ci session_->isVisible_ = false; 1270e0dac50fSopenharmony_ci session_->dirtyFlags_ = 64; 1271e0dac50fSopenharmony_ci session_->ResetDirtyFlags(); 1272e0dac50fSopenharmony_ci EXPECT_EQ(64, session_->dirtyFlags_); 1273e0dac50fSopenharmony_ci 1274e0dac50fSopenharmony_ci session_->isVisible_ = true; 1275e0dac50fSopenharmony_ci session_->dirtyFlags_ = 16; 1276e0dac50fSopenharmony_ci session_->ResetDirtyFlags(); 1277e0dac50fSopenharmony_ci EXPECT_EQ(0, session_->dirtyFlags_); 1278e0dac50fSopenharmony_ci} 1279e0dac50fSopenharmony_ci 1280e0dac50fSopenharmony_ci/** 1281e0dac50fSopenharmony_ci * @tc.name: SetMainSessionUIStateDirty 1282e0dac50fSopenharmony_ci * @tc.desc: SetMainSessionUIStateDirty Test 1283e0dac50fSopenharmony_ci * @tc.type: FUNC 1284e0dac50fSopenharmony_ci */ 1285e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, SetMainSessionUIStateDirty, Function | SmallTest | Level2) 1286e0dac50fSopenharmony_ci{ 1287e0dac50fSopenharmony_ci SessionInfo infoDirty; 1288e0dac50fSopenharmony_ci infoDirty.abilityName_ = "SetMainSessionUIStateDirty"; 1289e0dac50fSopenharmony_ci infoDirty.moduleName_ = "SetMainSessionUIStateDirty"; 1290e0dac50fSopenharmony_ci infoDirty.bundleName_ = "SetMainSessionUIStateDirty"; 1291e0dac50fSopenharmony_ci infoDirty.windowType_ = static_cast<uint32_t>(WindowType::APP_MAIN_WINDOW_END); 1292e0dac50fSopenharmony_ci sptr<Session> sessionDirty = sptr<Session>::MakeSptr(infoDirty); 1293e0dac50fSopenharmony_ci EXPECT_NE(nullptr, sessionDirty); 1294e0dac50fSopenharmony_ci 1295e0dac50fSopenharmony_ci session_->parentSession_ = nullptr; 1296e0dac50fSopenharmony_ci EXPECT_EQ(nullptr, session_->GetParentSession()); 1297e0dac50fSopenharmony_ci sessionDirty->SetUIStateDirty(false); 1298e0dac50fSopenharmony_ci session_->SetMainSessionUIStateDirty(false); 1299e0dac50fSopenharmony_ci EXPECT_EQ(false, sessionDirty->GetUIStateDirty()); 1300e0dac50fSopenharmony_ci 1301e0dac50fSopenharmony_ci session_->SetParentSession(sessionDirty); 1302e0dac50fSopenharmony_ci EXPECT_EQ(sessionDirty, session_->GetParentSession()); 1303e0dac50fSopenharmony_ci session_->SetMainSessionUIStateDirty(false); 1304e0dac50fSopenharmony_ci EXPECT_EQ(false, sessionDirty->GetUIStateDirty()); 1305e0dac50fSopenharmony_ci 1306e0dac50fSopenharmony_ci infoDirty.windowType_ = static_cast<uint32_t>(WindowType::APP_MAIN_WINDOW_BASE); 1307e0dac50fSopenharmony_ci sptr<Session> sessionUIState = sptr<Session>::MakeSptr(infoDirty); 1308e0dac50fSopenharmony_ci EXPECT_NE(nullptr, sessionUIState); 1309e0dac50fSopenharmony_ci session_->SetParentSession(sessionUIState); 1310e0dac50fSopenharmony_ci session_->SetMainSessionUIStateDirty(true); 1311e0dac50fSopenharmony_ci EXPECT_EQ(true, sessionUIState->GetUIStateDirty()); 1312e0dac50fSopenharmony_ci} 1313e0dac50fSopenharmony_ci 1314e0dac50fSopenharmony_ci/** 1315e0dac50fSopenharmony_ci * @tc.name: CompatibleFullScreenRecover 1316e0dac50fSopenharmony_ci * @tc.desc: CompatibleFullScreenRecover Test 1317e0dac50fSopenharmony_ci * @tc.type: FUNC 1318e0dac50fSopenharmony_ci */ 1319e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, CompatibleFullScreenRecover, Function | SmallTest | Level2) 1320e0dac50fSopenharmony_ci{ 1321e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1322e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 1323e0dac50fSopenharmony_ci ASSERT_NE(nullptr, mockSessionStage); 1324e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1325e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 1326e0dac50fSopenharmony_ci auto result = session_->CompatibleFullScreenRecover(); 1327e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_ERROR_INVALID_SESSION); 1328e0dac50fSopenharmony_ci 1329e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1330e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 1331e0dac50fSopenharmony_ci result = session_->CompatibleFullScreenRecover(); 1332e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 1333e0dac50fSopenharmony_ci} 1334e0dac50fSopenharmony_ci 1335e0dac50fSopenharmony_ci/** 1336e0dac50fSopenharmony_ci * @tc.name: CompatibleFullScreenMinimize 1337e0dac50fSopenharmony_ci * @tc.desc: CompatibleFullScreenMinimize Test 1338e0dac50fSopenharmony_ci * @tc.type: FUNC 1339e0dac50fSopenharmony_ci */ 1340e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, CompatibleFullScreenMinimize, Function | SmallTest | Level2) 1341e0dac50fSopenharmony_ci{ 1342e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1343e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 1344e0dac50fSopenharmony_ci ASSERT_NE(nullptr, mockSessionStage); 1345e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1346e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 1347e0dac50fSopenharmony_ci auto result = session_->CompatibleFullScreenMinimize(); 1348e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_ERROR_INVALID_SESSION); 1349e0dac50fSopenharmony_ci 1350e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1351e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 1352e0dac50fSopenharmony_ci result = session_->CompatibleFullScreenMinimize(); 1353e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 1354e0dac50fSopenharmony_ci} 1355e0dac50fSopenharmony_ci 1356e0dac50fSopenharmony_ci/** 1357e0dac50fSopenharmony_ci * @tc.name: CompatibleFullScreenClose 1358e0dac50fSopenharmony_ci * @tc.desc: CompatibleFullScreenClose Test 1359e0dac50fSopenharmony_ci * @tc.type: FUNC 1360e0dac50fSopenharmony_ci */ 1361e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest3, CompatibleFullScreenClose, Function | SmallTest | Level2) 1362e0dac50fSopenharmony_ci{ 1363e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1364e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 1365e0dac50fSopenharmony_ci ASSERT_NE(nullptr, mockSessionStage); 1366e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1367e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 1368e0dac50fSopenharmony_ci auto result = session_->CompatibleFullScreenClose(); 1369e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_ERROR_INVALID_SESSION); 1370e0dac50fSopenharmony_ci 1371e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1372e0dac50fSopenharmony_ci session_->SetSessionState(SessionState::STATE_FOREGROUND); 1373e0dac50fSopenharmony_ci result = session_->CompatibleFullScreenClose(); 1374e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 1375e0dac50fSopenharmony_ci} 1376e0dac50fSopenharmony_ci} 1377e0dac50fSopenharmony_ci} // namespace Rosen 1378e0dac50fSopenharmony_ci} // namespace OHOS 1379