1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2023 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 "mock/mock_session_stage.h" 22e0dac50fSopenharmony_ci#include "mock/mock_window_event_channel.h" 23e0dac50fSopenharmony_ci#include "mock/mock_pattern_detach_callback.h" 24e0dac50fSopenharmony_ci#include "session/host/include/extension_session.h" 25e0dac50fSopenharmony_ci#include "session/host/include/move_drag_controller.h" 26e0dac50fSopenharmony_ci#include "session/host/include/scene_session.h" 27e0dac50fSopenharmony_ci#include "session_manager/include/scene_session_manager.h" 28e0dac50fSopenharmony_ci#include "session/host/include/session.h" 29e0dac50fSopenharmony_ci#include "session_info.h" 30e0dac50fSopenharmony_ci#include "key_event.h" 31e0dac50fSopenharmony_ci#include "wm_common.h" 32e0dac50fSopenharmony_ci#include "window_event_channel_base.h" 33e0dac50fSopenharmony_ci#include "window_manager_hilog.h" 34e0dac50fSopenharmony_ci 35e0dac50fSopenharmony_ciusing namespace testing; 36e0dac50fSopenharmony_ciusing namespace testing::ext; 37e0dac50fSopenharmony_ci 38e0dac50fSopenharmony_cinamespace OHOS { 39e0dac50fSopenharmony_cinamespace Rosen { 40e0dac50fSopenharmony_cinamespace { 41e0dac50fSopenharmony_ciconst std::string UNDEFINED = "undefined"; 42e0dac50fSopenharmony_ci} 43e0dac50fSopenharmony_ci 44e0dac50fSopenharmony_ciclass WindowSessionTest : public testing::Test { 45e0dac50fSopenharmony_cipublic: 46e0dac50fSopenharmony_ci static void SetUpTestCase(); 47e0dac50fSopenharmony_ci static void TearDownTestCase(); 48e0dac50fSopenharmony_ci void SetUp() override; 49e0dac50fSopenharmony_ci void TearDown() override; 50e0dac50fSopenharmony_ci int32_t GetTaskCount(); 51e0dac50fSopenharmony_ci sptr<SceneSessionManager> ssm_; 52e0dac50fSopenharmony_ci 53e0dac50fSopenharmony_ciprivate: 54e0dac50fSopenharmony_ci RSSurfaceNode::SharedPtr CreateRSSurfaceNode(); 55e0dac50fSopenharmony_ci sptr<Session> session_ = nullptr; 56e0dac50fSopenharmony_ci static constexpr uint32_t WAIT_SYNC_IN_NS = 500000; 57e0dac50fSopenharmony_ci 58e0dac50fSopenharmony_ci class TLifecycleListener : public ILifecycleListener { 59e0dac50fSopenharmony_ci public: 60e0dac50fSopenharmony_ci virtual ~TLifecycleListener() {} 61e0dac50fSopenharmony_ci void OnActivation() override {} 62e0dac50fSopenharmony_ci void OnConnect() override {} 63e0dac50fSopenharmony_ci void OnForeground() override {} 64e0dac50fSopenharmony_ci void OnBackground() override {} 65e0dac50fSopenharmony_ci void OnDisconnect() override {} 66e0dac50fSopenharmony_ci void OnExtensionDied() override {} 67e0dac50fSopenharmony_ci void OnExtensionTimeout(int32_t errorCode) override {} 68e0dac50fSopenharmony_ci void OnAccessibilityEvent(const Accessibility::AccessibilityEventInfo& info, 69e0dac50fSopenharmony_ci int64_t uiExtensionIdLevel) override {} 70e0dac50fSopenharmony_ci void OnDrawingCompleted() override {} 71e0dac50fSopenharmony_ci }; 72e0dac50fSopenharmony_ci std::shared_ptr<TLifecycleListener> lifecycleListener_ = std::make_shared<TLifecycleListener>(); 73e0dac50fSopenharmony_ci 74e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage_ = nullptr; 75e0dac50fSopenharmony_ci sptr<WindowEventChannelMocker> mockEventChannel_ = nullptr; 76e0dac50fSopenharmony_ci}; 77e0dac50fSopenharmony_ci 78e0dac50fSopenharmony_civoid WindowSessionTest::SetUpTestCase() 79e0dac50fSopenharmony_ci{ 80e0dac50fSopenharmony_ci} 81e0dac50fSopenharmony_ci 82e0dac50fSopenharmony_civoid WindowSessionTest::TearDownTestCase() 83e0dac50fSopenharmony_ci{ 84e0dac50fSopenharmony_ci} 85e0dac50fSopenharmony_ci 86e0dac50fSopenharmony_civoid WindowSessionTest::SetUp() 87e0dac50fSopenharmony_ci{ 88e0dac50fSopenharmony_ci SessionInfo info; 89e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 90e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 91e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 92e0dac50fSopenharmony_ci session_ = new (std::nothrow) Session(info); 93e0dac50fSopenharmony_ci session_->surfaceNode_ = CreateRSSurfaceNode(); 94e0dac50fSopenharmony_ci EXPECT_NE(nullptr, session_); 95e0dac50fSopenharmony_ci ssm_ = new SceneSessionManager(); 96e0dac50fSopenharmony_ci session_->SetEventHandler(ssm_->taskScheduler_->GetEventHandler(), ssm_->eventHandler_); 97e0dac50fSopenharmony_ci auto isScreenLockedCallback = [this]() { 98e0dac50fSopenharmony_ci return ssm_->IsScreenLocked(); 99e0dac50fSopenharmony_ci }; 100e0dac50fSopenharmony_ci session_->RegisterIsScreenLockedCallback(isScreenLockedCallback); 101e0dac50fSopenharmony_ci 102e0dac50fSopenharmony_ci mockSessionStage_ = new (std::nothrow) SessionStageMocker(); 103e0dac50fSopenharmony_ci ASSERT_NE(mockSessionStage_, nullptr); 104e0dac50fSopenharmony_ci 105e0dac50fSopenharmony_ci mockEventChannel_ = new (std::nothrow) WindowEventChannelMocker(mockSessionStage_); 106e0dac50fSopenharmony_ci ASSERT_NE(mockEventChannel_, nullptr); 107e0dac50fSopenharmony_ci} 108e0dac50fSopenharmony_ci 109e0dac50fSopenharmony_civoid WindowSessionTest::TearDown() 110e0dac50fSopenharmony_ci{ 111e0dac50fSopenharmony_ci session_ = nullptr; 112e0dac50fSopenharmony_ci usleep(WAIT_SYNC_IN_NS); 113e0dac50fSopenharmony_ci} 114e0dac50fSopenharmony_ci 115e0dac50fSopenharmony_ciRSSurfaceNode::SharedPtr WindowSessionTest::CreateRSSurfaceNode() 116e0dac50fSopenharmony_ci{ 117e0dac50fSopenharmony_ci struct RSSurfaceNodeConfig rsSurfaceNodeConfig; 118e0dac50fSopenharmony_ci rsSurfaceNodeConfig.SurfaceNodeName = "WindowSessionTestSurfaceNode"; 119e0dac50fSopenharmony_ci auto surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig); 120e0dac50fSopenharmony_ci if (surfaceNode == nullptr) { 121e0dac50fSopenharmony_ci GTEST_LOG_(INFO) << "WindowSessionTest::CreateRSSurfaceNode surfaceNode is nullptr"; 122e0dac50fSopenharmony_ci } 123e0dac50fSopenharmony_ci return surfaceNode; 124e0dac50fSopenharmony_ci} 125e0dac50fSopenharmony_ci 126e0dac50fSopenharmony_ciint32_t WindowSessionTest::GetTaskCount() 127e0dac50fSopenharmony_ci{ 128e0dac50fSopenharmony_ci std::string dumpInfo = session_->handler_->GetEventRunner()->GetEventQueue()->DumpCurrentQueueSize(); 129e0dac50fSopenharmony_ci std::regex pattern("\\d+"); 130e0dac50fSopenharmony_ci std::smatch matches; 131e0dac50fSopenharmony_ci int32_t taskNum = 0; 132e0dac50fSopenharmony_ci while (std::regex_search(dumpInfo, matches, pattern)) { 133e0dac50fSopenharmony_ci taskNum += std::stoi(matches.str()); 134e0dac50fSopenharmony_ci dumpInfo = matches.suffix(); 135e0dac50fSopenharmony_ci } 136e0dac50fSopenharmony_ci return taskNum; 137e0dac50fSopenharmony_ci} 138e0dac50fSopenharmony_ci 139e0dac50fSopenharmony_cinamespace { 140e0dac50fSopenharmony_ci/** 141e0dac50fSopenharmony_ci * @tc.name: SetForceTouchable 142e0dac50fSopenharmony_ci * @tc.desc: SetForceTouchable 143e0dac50fSopenharmony_ci * @tc.type: FUNC 144e0dac50fSopenharmony_ci */ 145e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetForceTouchable, Function | SmallTest | Level2) 146e0dac50fSopenharmony_ci{ 147e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 148e0dac50fSopenharmony_ci bool touchable = false; 149e0dac50fSopenharmony_ci session_->SetForceTouchable(touchable); 150e0dac50fSopenharmony_ci ASSERT_EQ(session_->forceTouchable_, touchable); 151e0dac50fSopenharmony_ci} 152e0dac50fSopenharmony_ci 153e0dac50fSopenharmony_ci/** 154e0dac50fSopenharmony_ci * @tc.name: SetActive01 155e0dac50fSopenharmony_ci * @tc.desc: set session active 156e0dac50fSopenharmony_ci * @tc.type: FUNC 157e0dac50fSopenharmony_ci * @tc.require: #I6JLSI 158e0dac50fSopenharmony_ci */ 159e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetActive01, Function | SmallTest | Level2) 160e0dac50fSopenharmony_ci{ 161e0dac50fSopenharmony_ci sptr<ISession> sessionToken = nullptr; 162e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new(std::nothrow) SessionStageMocker(); 163e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockSessionStage); 164e0dac50fSopenharmony_ci EXPECT_CALL(*(mockSessionStage), SetActive(_)).WillOnce(Return(WSError::WS_OK)); 165e0dac50fSopenharmony_ci EXPECT_CALL(*(mockSessionStage), UpdateRect(_, _, _)).Times(0).WillOnce(Return(WSError::WS_OK)); 166e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 167e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->SetActive(true)); 168e0dac50fSopenharmony_ci 169e0dac50fSopenharmony_ci sptr<WindowEventChannelMocker> mockEventChannel = new(std::nothrow) WindowEventChannelMocker(mockSessionStage); 170e0dac50fSopenharmony_ci EXPECT_NE(nullptr, mockEventChannel); 171e0dac50fSopenharmony_ci auto surfaceNode = CreateRSSurfaceNode(); 172e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 173e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new (std::nothrow) WindowSessionProperty(); 174e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 175e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->Connect(mockSessionStage, 176e0dac50fSopenharmony_ci mockEventChannel, surfaceNode, sessionConfig, property)); 177e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->SetActive(true)); 178e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->isActive_); 179e0dac50fSopenharmony_ci 180e0dac50fSopenharmony_ci session_->UpdateSessionState(SessionState::STATE_FOREGROUND); 181e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetActive(true)); 182e0dac50fSopenharmony_ci ASSERT_EQ(true, session_->isActive_); 183e0dac50fSopenharmony_ci} 184e0dac50fSopenharmony_ci 185e0dac50fSopenharmony_ci/** 186e0dac50fSopenharmony_ci * @tc.name: SetCompatibleModeEnableInPad 187e0dac50fSopenharmony_ci * @tc.desc: SetCompatibleModeEnableInPad test 188e0dac50fSopenharmony_ci * @tc.type: FUNC 189e0dac50fSopenharmony_ci */ 190e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetCompatibleModeEnableInPad, Function | SmallTest | Level2) 191e0dac50fSopenharmony_ci{ 192e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new (std::nothrow) WindowSessionProperty(); 193e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 194e0dac50fSopenharmony_ci bool enable = true; 195e0dac50fSopenharmony_ci property->SetCompatibleModeEnableInPad(enable); 196e0dac50fSopenharmony_ci ASSERT_EQ(property->GetCompatibleModeEnableInPad(), true); 197e0dac50fSopenharmony_ci} 198e0dac50fSopenharmony_ci 199e0dac50fSopenharmony_ci/** 200e0dac50fSopenharmony_ci * @tc.name: UpdateRect01 201e0dac50fSopenharmony_ci * @tc.desc: update rect 202e0dac50fSopenharmony_ci * @tc.type: FUNC 203e0dac50fSopenharmony_ci * @tc.require: #I6JLSI 204e0dac50fSopenharmony_ci */ 205e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, UpdateRect01, Function | SmallTest | Level2) 206e0dac50fSopenharmony_ci{ 207e0dac50fSopenharmony_ci sptr<ISession> sessionToken = nullptr; 208e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = sptr<SessionStageMocker>::MakeSptr(); 209e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 210e0dac50fSopenharmony_ci EXPECT_CALL(*(mockSessionStage), UpdateRect(_, _, _)).Times(AtLeast(1)).WillOnce(Return(WSError::WS_OK)); 211e0dac50fSopenharmony_ci 212e0dac50fSopenharmony_ci WSRect rect = {0, 0, 0, 0}; 213e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->UpdateRect(rect, 214e0dac50fSopenharmony_ci SizeChangeReason::UNDEFINED, "WindowSessionTest")); 215e0dac50fSopenharmony_ci sptr<WindowEventChannelMocker> mockEventChannel = sptr<WindowEventChannelMocker>::MakeSptr(mockSessionStage); 216e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 217e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = sptr<WindowSessionProperty>::MakeSptr(); 218e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->Connect(mockSessionStage, 219e0dac50fSopenharmony_ci mockEventChannel, nullptr, sessionConfig, property)); 220e0dac50fSopenharmony_ci 221e0dac50fSopenharmony_ci rect = {0, 0, 100, 100}; 222e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->UpdateRect(rect, 223e0dac50fSopenharmony_ci SizeChangeReason::UNDEFINED, "WindowSessionTest")); 224e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->winRect_); 225e0dac50fSopenharmony_ci 226e0dac50fSopenharmony_ci rect = {0, 0, 200, 200}; 227e0dac50fSopenharmony_ci session_->UpdateSessionState(SessionState::STATE_ACTIVE); 228e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->UpdateRect(rect, SizeChangeReason::UNDEFINED, "WindowSessionTest")); 229e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->winRect_); 230e0dac50fSopenharmony_ci 231e0dac50fSopenharmony_ci rect = {0, 0, 300, 300}; 232e0dac50fSopenharmony_ci session_->sessionStage_ = nullptr; 233e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->UpdateRect(rect, SizeChangeReason::UNDEFINED, "WindowSessionTest")); 234e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->winRect_); 235e0dac50fSopenharmony_ci} 236e0dac50fSopenharmony_ci 237e0dac50fSopenharmony_ci/** 238e0dac50fSopenharmony_ci * @tc.name: IsSessionValid01 239e0dac50fSopenharmony_ci * @tc.desc: check func IsSessionValid 240e0dac50fSopenharmony_ci * @tc.type: FUNC 241e0dac50fSopenharmony_ci */ 242e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, IsSessionValid01, Function | SmallTest | Level2) 243e0dac50fSopenharmony_ci{ 244e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 245e0dac50fSopenharmony_ci ASSERT_FALSE(session_->IsSessionValid()); 246e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 247e0dac50fSopenharmony_ci ASSERT_TRUE(session_->IsSessionValid()); 248e0dac50fSopenharmony_ci} 249e0dac50fSopenharmony_ci 250e0dac50fSopenharmony_ci/** 251e0dac50fSopenharmony_ci * @tc.name: ConnectInner 252e0dac50fSopenharmony_ci * @tc.desc: ConnectInner 253e0dac50fSopenharmony_ci * @tc.type: FUNC 254e0dac50fSopenharmony_ci */ 255e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConnectInner, Function | SmallTest | Level2) 256e0dac50fSopenharmony_ci{ 257e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 258e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 259e0dac50fSopenharmony_ci session_->isTerminating_ = false; 260e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = sptr<WindowSessionProperty>::MakeSptr(); 261e0dac50fSopenharmony_ci 262e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 263e0dac50fSopenharmony_ci property->SetIsNeedUpdateWindowMode(true); 264e0dac50fSopenharmony_ci session_->SetScreenId(233); 265e0dac50fSopenharmony_ci session_->SetSessionProperty(property); 266e0dac50fSopenharmony_ci auto res = session_->ConnectInner(mockSessionStage_, mockEventChannel_, 267e0dac50fSopenharmony_ci nullptr, sessionConfig, property, nullptr, 1, 1, ""); 268e0dac50fSopenharmony_ci ASSERT_EQ(res, WSError::WS_ERROR_INVALID_SESSION); 269e0dac50fSopenharmony_ci 270e0dac50fSopenharmony_ci session_->isTerminating_ = true; 271e0dac50fSopenharmony_ci auto res2 = session_->ConnectInner(mockSessionStage_, mockEventChannel_, 272e0dac50fSopenharmony_ci nullptr, sessionConfig, property, nullptr, 1, 1, ""); 273e0dac50fSopenharmony_ci ASSERT_EQ(res2, WSError::WS_OK); 274e0dac50fSopenharmony_ci 275e0dac50fSopenharmony_ci property->SetWindowType(WindowType::APP_MAIN_WINDOW_END); 276e0dac50fSopenharmony_ci property->SetIsNeedUpdateWindowMode(true); 277e0dac50fSopenharmony_ci session_->SetScreenId(SCREEN_ID_INVALID); 278e0dac50fSopenharmony_ci session_->SetSessionProperty(property); 279e0dac50fSopenharmony_ci auto res3 = session_->ConnectInner(mockSessionStage_, mockEventChannel_, 280e0dac50fSopenharmony_ci nullptr, sessionConfig, property, nullptr, 1, 1, ""); 281e0dac50fSopenharmony_ci ASSERT_EQ(res3, WSError::WS_OK); 282e0dac50fSopenharmony_ci} 283e0dac50fSopenharmony_ci 284e0dac50fSopenharmony_ci/** 285e0dac50fSopenharmony_ci * @tc.name: RemoveLifeCycleTask 286e0dac50fSopenharmony_ci * @tc.desc: RemoveLifeCycleTask & PostLifeCycleTask 287e0dac50fSopenharmony_ci * @tc.type: FUNC 288e0dac50fSopenharmony_ci */ 289e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, LifeCycleTask, Function | SmallTest | Level2) 290e0dac50fSopenharmony_ci{ 291e0dac50fSopenharmony_ci auto task = []() {}; 292e0dac50fSopenharmony_ci session_->PostLifeCycleTask(task, "task1", LifeCycleTaskType::START); 293e0dac50fSopenharmony_ci ASSERT_EQ(session_->lifeCycleTaskQueue_.size(), 1); 294e0dac50fSopenharmony_ci 295e0dac50fSopenharmony_ci auto task2 = []() {}; 296e0dac50fSopenharmony_ci session_->PostLifeCycleTask(task2, "task2", LifeCycleTaskType::START); 297e0dac50fSopenharmony_ci ASSERT_EQ(session_->lifeCycleTaskQueue_.size(), 2); 298e0dac50fSopenharmony_ci 299e0dac50fSopenharmony_ci LifeCycleTaskType taskType = LifeCycleTaskType{0}; 300e0dac50fSopenharmony_ci 301e0dac50fSopenharmony_ci session_->RemoveLifeCycleTask(taskType); 302e0dac50fSopenharmony_ci ASSERT_EQ(session_->lifeCycleTaskQueue_.size(), 1); 303e0dac50fSopenharmony_ci 304e0dac50fSopenharmony_ci session_->RemoveLifeCycleTask(taskType); 305e0dac50fSopenharmony_ci ASSERT_EQ(session_->lifeCycleTaskQueue_.size(), 0); 306e0dac50fSopenharmony_ci} 307e0dac50fSopenharmony_ci 308e0dac50fSopenharmony_ci/** 309e0dac50fSopenharmony_ci * @tc.name: SetSessionProperty01 310e0dac50fSopenharmony_ci * @tc.desc: SetSessionProperty 311e0dac50fSopenharmony_ci * @tc.type: FUNC 312e0dac50fSopenharmony_ci */ 313e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetSessionProperty01, Function | SmallTest | Level2) 314e0dac50fSopenharmony_ci{ 315e0dac50fSopenharmony_ci ASSERT_EQ(session_->SetSessionProperty(nullptr), WSError::WS_OK); 316e0dac50fSopenharmony_ci} 317e0dac50fSopenharmony_ci 318e0dac50fSopenharmony_ci/** 319e0dac50fSopenharmony_ci * @tc.name: SetSessionRect 320e0dac50fSopenharmony_ci * @tc.desc: check func SetSessionRect 321e0dac50fSopenharmony_ci * @tc.type: FUNC 322e0dac50fSopenharmony_ci */ 323e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetSessionRect, Function | SmallTest | Level2) 324e0dac50fSopenharmony_ci{ 325e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 326e0dac50fSopenharmony_ci WSRect rect = { 0, 0, 320, 240}; // width: 320, height: 240 327e0dac50fSopenharmony_ci session_->SetSessionRect(rect); 328e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->winRect_); 329e0dac50fSopenharmony_ci} 330e0dac50fSopenharmony_ci 331e0dac50fSopenharmony_ci/** 332e0dac50fSopenharmony_ci * @tc.name: GetSessionRect 333e0dac50fSopenharmony_ci * @tc.desc: check func GetSessionRect 334e0dac50fSopenharmony_ci * @tc.type: FUNC 335e0dac50fSopenharmony_ci */ 336e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetSessionRect, Function | SmallTest | Level2) 337e0dac50fSopenharmony_ci{ 338e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 339e0dac50fSopenharmony_ci WSRect rect = { 0, 0, 320, 240}; // width: 320, height: 240 340e0dac50fSopenharmony_ci session_->SetSessionRect(rect); 341e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->GetSessionRect()); 342e0dac50fSopenharmony_ci} 343e0dac50fSopenharmony_ci 344e0dac50fSopenharmony_ci/** 345e0dac50fSopenharmony_ci * @tc.name: GetLayoutRect 346e0dac50fSopenharmony_ci * @tc.desc: check func GetLayoutRect 347e0dac50fSopenharmony_ci * @tc.type: FUNC 348e0dac50fSopenharmony_ci */ 349e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetLayoutRect, Function | SmallTest | Level2) 350e0dac50fSopenharmony_ci{ 351e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 352e0dac50fSopenharmony_ci WSRect rect = { 0, 0, 320, 240 }; // width: 320, height: 240 353e0dac50fSopenharmony_ci session_->layoutRect_ = rect; 354e0dac50fSopenharmony_ci session_->lastLayoutRect_ = session_->layoutRect_; 355e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->GetLayoutRect()); 356e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->GetLastLayoutRect()); 357e0dac50fSopenharmony_ci} 358e0dac50fSopenharmony_ci 359e0dac50fSopenharmony_ci/** 360e0dac50fSopenharmony_ci * @tc.name: CheckDialogOnForeground 361e0dac50fSopenharmony_ci * @tc.desc: check func CheckDialogOnForeground 362e0dac50fSopenharmony_ci * @tc.type: FUNC 363e0dac50fSopenharmony_ci */ 364e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, CheckDialogOnForeground, Function | SmallTest | Level2) 365e0dac50fSopenharmony_ci{ 366e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 367e0dac50fSopenharmony_ci session_->dialogVec_.clear(); 368e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->CheckDialogOnForeground()); 369e0dac50fSopenharmony_ci SessionInfo info; 370e0dac50fSopenharmony_ci info.abilityName_ = "dialogAbilityName"; 371e0dac50fSopenharmony_ci info.moduleName_ = "dialogModuleName"; 372e0dac50fSopenharmony_ci info.bundleName_ = "dialogBundleName"; 373e0dac50fSopenharmony_ci sptr<Session> dialogSession = new (std::nothrow) Session(info); 374e0dac50fSopenharmony_ci ASSERT_NE(dialogSession, nullptr); 375e0dac50fSopenharmony_ci dialogSession->state_ = SessionState::STATE_INACTIVE; 376e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession); 377e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->CheckDialogOnForeground()); 378e0dac50fSopenharmony_ci session_->dialogVec_.clear(); 379e0dac50fSopenharmony_ci} 380e0dac50fSopenharmony_ci 381e0dac50fSopenharmony_ci/** 382e0dac50fSopenharmony_ci * @tc.name: IsTopDialog 383e0dac50fSopenharmony_ci * @tc.desc: check func IsTopDialog 384e0dac50fSopenharmony_ci * @tc.type: FUNC 385e0dac50fSopenharmony_ci */ 386e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, IsTopDialog, Function | SmallTest | Level2) 387e0dac50fSopenharmony_ci{ 388e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 389e0dac50fSopenharmony_ci session_->dialogVec_.clear(); 390e0dac50fSopenharmony_ci SessionInfo info; 391e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 392e0dac50fSopenharmony_ci info.moduleName_ = "testSession2"; 393e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 394e0dac50fSopenharmony_ci 395e0dac50fSopenharmony_ci sptr<Session> dialogSession1 = new (std::nothrow) Session(info); 396e0dac50fSopenharmony_ci ASSERT_NE(dialogSession1, nullptr); 397e0dac50fSopenharmony_ci dialogSession1->persistentId_ = 33; 398e0dac50fSopenharmony_ci dialogSession1->SetParentSession(session_); 399e0dac50fSopenharmony_ci dialogSession1->state_ = SessionState::STATE_ACTIVE; 400e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession1); 401e0dac50fSopenharmony_ci 402e0dac50fSopenharmony_ci sptr<Session> dialogSession2 = new (std::nothrow) Session(info); 403e0dac50fSopenharmony_ci ASSERT_NE(dialogSession2, nullptr); 404e0dac50fSopenharmony_ci dialogSession2->persistentId_ = 34; 405e0dac50fSopenharmony_ci dialogSession2->SetParentSession(session_); 406e0dac50fSopenharmony_ci dialogSession2->state_ = SessionState::STATE_ACTIVE; 407e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession2); 408e0dac50fSopenharmony_ci 409e0dac50fSopenharmony_ci sptr<Session> dialogSession3 = new (std::nothrow) Session(info); 410e0dac50fSopenharmony_ci ASSERT_NE(dialogSession3, nullptr); 411e0dac50fSopenharmony_ci dialogSession3->persistentId_ = 35; 412e0dac50fSopenharmony_ci dialogSession3->SetParentSession(session_); 413e0dac50fSopenharmony_ci dialogSession3->state_ = SessionState::STATE_INACTIVE; 414e0dac50fSopenharmony_ci session_->dialogVec_.push_back(dialogSession3); 415e0dac50fSopenharmony_ci 416e0dac50fSopenharmony_ci ASSERT_EQ(false, dialogSession3->IsTopDialog()); 417e0dac50fSopenharmony_ci ASSERT_EQ(true, dialogSession2->IsTopDialog()); 418e0dac50fSopenharmony_ci ASSERT_EQ(false, dialogSession1->IsTopDialog()); 419e0dac50fSopenharmony_ci session_->dialogVec_.clear(); 420e0dac50fSopenharmony_ci} 421e0dac50fSopenharmony_ci 422e0dac50fSopenharmony_ci/** 423e0dac50fSopenharmony_ci * @tc.name: RaiseToAppTop01 424e0dac50fSopenharmony_ci * @tc.desc: RaiseToAppTop 425e0dac50fSopenharmony_ci * @tc.type: FUNC 426e0dac50fSopenharmony_ci */ 427e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, RaiseToAppTop01, Function | SmallTest | Level2) 428e0dac50fSopenharmony_ci{ 429e0dac50fSopenharmony_ci SessionInfo info; 430e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 431e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 432e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = sptr<SceneSession>::MakeSptr(info, nullptr); 433e0dac50fSopenharmony_ci auto result = sceneSession->RaiseToAppTop(); 434e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 435e0dac50fSopenharmony_ci 436e0dac50fSopenharmony_ci sptr<SceneSession> parentSession = sptr<SceneSession>::MakeSptr(info, nullptr); 437e0dac50fSopenharmony_ci sceneSession->SetParentSession(parentSession); 438e0dac50fSopenharmony_ci sptr<SceneSession::SessionChangeCallback> sceneSessionChangeCallBack = 439e0dac50fSopenharmony_ci sptr<SceneSession::SessionChangeCallback>::MakeSptr(); 440e0dac50fSopenharmony_ci sceneSession->RegisterSessionChangeCallback(sceneSessionChangeCallBack); 441e0dac50fSopenharmony_ci result = sceneSession->RaiseToAppTop(); 442e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 443e0dac50fSopenharmony_ci ASSERT_FALSE(parentSession->GetUIStateDirty()); 444e0dac50fSopenharmony_ci 445e0dac50fSopenharmony_ci parentSession->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 446e0dac50fSopenharmony_ci NotifyRaiseToTopFunc onRaiseToTop_ = []() {}; 447e0dac50fSopenharmony_ci sceneSessionChangeCallBack->onRaiseToTop_ = onRaiseToTop_; 448e0dac50fSopenharmony_ci result = sceneSession->RaiseToAppTop(); 449e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 450e0dac50fSopenharmony_ci ASSERT_TRUE(parentSession->GetUIStateDirty()); 451e0dac50fSopenharmony_ci parentSession->SetUIStateDirty(false); 452e0dac50fSopenharmony_ci 453e0dac50fSopenharmony_ci parentSession->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_SUB_WINDOW); 454e0dac50fSopenharmony_ci result = sceneSession->RaiseToAppTop(); 455e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 456e0dac50fSopenharmony_ci ASSERT_FALSE(parentSession->GetUIStateDirty()); 457e0dac50fSopenharmony_ci} 458e0dac50fSopenharmony_ci 459e0dac50fSopenharmony_ci/** 460e0dac50fSopenharmony_ci * @tc.name: UpdateSessionRect01 461e0dac50fSopenharmony_ci * @tc.desc: UpdateSessionRect 462e0dac50fSopenharmony_ci * @tc.type: FUNC 463e0dac50fSopenharmony_ci */ 464e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, UpdateSessionRect01, Function | SmallTest | Level2) 465e0dac50fSopenharmony_ci{ 466e0dac50fSopenharmony_ci SessionInfo info; 467e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 468e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 469e0dac50fSopenharmony_ci sptr<SceneSession> scensession = new (std::nothrow) SceneSession(info, nullptr); 470e0dac50fSopenharmony_ci EXPECT_NE(scensession, nullptr); 471e0dac50fSopenharmony_ci WSRect rect = {0, 0, 320, 240}; // width: 320, height: 240 472e0dac50fSopenharmony_ci auto result = scensession->UpdateSessionRect(rect, SizeChangeReason::RESIZE); 473e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 474e0dac50fSopenharmony_ci 475e0dac50fSopenharmony_ci sptr<SceneSession::SessionChangeCallback> scensessionchangeCallBack = 476e0dac50fSopenharmony_ci new (std::nothrow) SceneSession::SessionChangeCallback(); 477e0dac50fSopenharmony_ci EXPECT_NE(scensessionchangeCallBack, nullptr); 478e0dac50fSopenharmony_ci scensession->RegisterSessionChangeCallback(scensessionchangeCallBack); 479e0dac50fSopenharmony_ci result = scensession->UpdateSessionRect(rect, SizeChangeReason::RESIZE); 480e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 481e0dac50fSopenharmony_ci} 482e0dac50fSopenharmony_ci 483e0dac50fSopenharmony_ci/** 484e0dac50fSopenharmony_ci * @tc.name: OnSessionEvent01 485e0dac50fSopenharmony_ci * @tc.desc: OnSessionEvent 486e0dac50fSopenharmony_ci * @tc.type: FUNC 487e0dac50fSopenharmony_ci */ 488e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, OnSessionEvent01, Function | SmallTest | Level2) 489e0dac50fSopenharmony_ci{ 490e0dac50fSopenharmony_ci SessionInfo info; 491e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 492e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 493e0dac50fSopenharmony_ci sptr<SceneSession> scensession = new (std::nothrow) SceneSession(info, nullptr); 494e0dac50fSopenharmony_ci EXPECT_NE(scensession, nullptr); 495e0dac50fSopenharmony_ci auto result = scensession->OnSessionEvent(SessionEvent::EVENT_MINIMIZE); 496e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 497e0dac50fSopenharmony_ci 498e0dac50fSopenharmony_ci sptr<SceneSession::SessionChangeCallback> scensessionchangeCallBack = 499e0dac50fSopenharmony_ci new (std::nothrow) SceneSession::SessionChangeCallback(); 500e0dac50fSopenharmony_ci EXPECT_NE(scensessionchangeCallBack, nullptr); 501e0dac50fSopenharmony_ci scensession->RegisterSessionChangeCallback(scensessionchangeCallBack); 502e0dac50fSopenharmony_ci result = scensession->OnSessionEvent(SessionEvent::EVENT_MINIMIZE); 503e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 504e0dac50fSopenharmony_ci 505e0dac50fSopenharmony_ci int resultValue = 0; 506e0dac50fSopenharmony_ci NotifySessionEventFunc onSessionEvent_ = [&resultValue](int32_t eventId, SessionEventParam param) 507e0dac50fSopenharmony_ci { resultValue = 1; }; 508e0dac50fSopenharmony_ci scensessionchangeCallBack->OnSessionEvent_ = onSessionEvent_; 509e0dac50fSopenharmony_ci result = scensession->OnSessionEvent(SessionEvent::EVENT_MINIMIZE); 510e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 511e0dac50fSopenharmony_ci} 512e0dac50fSopenharmony_ci 513e0dac50fSopenharmony_ci/** 514e0dac50fSopenharmony_ci * @tc.name: OnSessionEvent02 515e0dac50fSopenharmony_ci * @tc.desc: OnSessionEvent drag 516e0dac50fSopenharmony_ci * @tc.type: FUNC 517e0dac50fSopenharmony_ci */ 518e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, OnSessionEvent02, Function | SmallTest | Level2) 519e0dac50fSopenharmony_ci{ 520e0dac50fSopenharmony_ci SessionInfo info; 521e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 522e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 523e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 524e0dac50fSopenharmony_ci EXPECT_NE(sceneSession, nullptr); 525e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 526e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 527e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 528e0dac50fSopenharmony_ci WSRect targetRect_ = { 100, 100, 1000, 1000 }; 529e0dac50fSopenharmony_ci sceneSession->moveDragController_->moveDragProperty_.targetRect_ = targetRect_; 530e0dac50fSopenharmony_ci sceneSession->sessionChangeCallback_ = new SceneSession::SessionChangeCallback(); 531e0dac50fSopenharmony_ci EXPECT_NE(sceneSession->sessionChangeCallback_, nullptr); 532e0dac50fSopenharmony_ci auto result = sceneSession->OnSessionEvent(SessionEvent::EVENT_DRAG); 533e0dac50fSopenharmony_ci ASSERT_EQ(result, WSError::WS_OK); 534e0dac50fSopenharmony_ci} 535e0dac50fSopenharmony_ci 536e0dac50fSopenharmony_ci/** 537e0dac50fSopenharmony_ci * @tc.name: ConsumeMoveEvent01 538e0dac50fSopenharmony_ci * @tc.desc: ConsumeMoveEvent, abnormal scene 539e0dac50fSopenharmony_ci * @tc.type: FUNC 540e0dac50fSopenharmony_ci */ 541e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConsumeMoveEvent01, Function | SmallTest | Level2) 542e0dac50fSopenharmony_ci{ 543e0dac50fSopenharmony_ci SessionInfo info; 544e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 545e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 546e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 547e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 548e0dac50fSopenharmony_ci EXPECT_NE(sceneSession, nullptr); 549e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 550e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 551e0dac50fSopenharmony_ci WSRect originalRect = { 100, 100, 1000, 1000 }; 552e0dac50fSopenharmony_ci 553e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = nullptr; 554e0dac50fSopenharmony_ci auto result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 555e0dac50fSopenharmony_ci ASSERT_FALSE(result); 556e0dac50fSopenharmony_ci 557e0dac50fSopenharmony_ci pointerEvent = MMI::PointerEvent::Create(); 558e0dac50fSopenharmony_ci ASSERT_TRUE(pointerEvent); 559e0dac50fSopenharmony_ci pointerEvent->SetPointerId(1); 560e0dac50fSopenharmony_ci sceneSession->moveDragController_->moveDragProperty_.pointerId_ = 0; 561e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 562e0dac50fSopenharmony_ci ASSERT_FALSE(result); 563e0dac50fSopenharmony_ci 564e0dac50fSopenharmony_ci pointerEvent->SetPointerId(0); 565e0dac50fSopenharmony_ci pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE); 566e0dac50fSopenharmony_ci pointerEvent->SetButtonId(MMI::PointerEvent::MOUSE_BUTTON_RIGHT); 567e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 568e0dac50fSopenharmony_ci ASSERT_FALSE(result); 569e0dac50fSopenharmony_ci} 570e0dac50fSopenharmony_ci 571e0dac50fSopenharmony_ci/** 572e0dac50fSopenharmony_ci * @tc.name: ConsumeMoveEvent02 573e0dac50fSopenharmony_ci * @tc.desc: ConsumeMoveEvent, normal secne 574e0dac50fSopenharmony_ci * @tc.type: FUNC 575e0dac50fSopenharmony_ci */ 576e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConsumeMoveEvent02, Function | SmallTest | Level2) 577e0dac50fSopenharmony_ci{ 578e0dac50fSopenharmony_ci SessionInfo info; 579e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 580e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 581e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 582e0dac50fSopenharmony_ci EXPECT_NE(sceneSession, nullptr); 583e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 584e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 585e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 586e0dac50fSopenharmony_ci WSRect originalRect = { 100, 100, 1000, 1000 }; 587e0dac50fSopenharmony_ci sceneSession->moveDragController_->isStartMove_ = true; 588e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 589e0dac50fSopenharmony_ci ASSERT_TRUE(pointerEvent); 590e0dac50fSopenharmony_ci pointerEvent->SetAgentWindowId(1); 591e0dac50fSopenharmony_ci pointerEvent->SetPointerId(0); 592e0dac50fSopenharmony_ci pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN); 593e0dac50fSopenharmony_ci MMI::PointerEvent::PointerItem pointerItem; 594e0dac50fSopenharmony_ci pointerItem.SetPointerId(0); 595e0dac50fSopenharmony_ci pointerEvent->AddPointerItem(pointerItem); 596e0dac50fSopenharmony_ci 597e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE); 598e0dac50fSopenharmony_ci pointerItem.SetDisplayX(115); 599e0dac50fSopenharmony_ci pointerItem.SetDisplayY(500); 600e0dac50fSopenharmony_ci pointerItem.SetWindowX(15); 601e0dac50fSopenharmony_ci pointerItem.SetWindowY(400); 602e0dac50fSopenharmony_ci auto result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 603e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 604e0dac50fSopenharmony_ci 605e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE); 606e0dac50fSopenharmony_ci pointerItem.SetDisplayX(145); 607e0dac50fSopenharmony_ci pointerItem.SetDisplayY(550); 608e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 609e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 610e0dac50fSopenharmony_ci 611e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE); 612e0dac50fSopenharmony_ci pointerItem.SetDisplayX(175); 613e0dac50fSopenharmony_ci pointerItem.SetDisplayY(600); 614e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 615e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 616e0dac50fSopenharmony_ci 617e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP); 618e0dac50fSopenharmony_ci pointerItem.SetDisplayX(205); 619e0dac50fSopenharmony_ci pointerItem.SetDisplayY(650); 620e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeMoveEvent(pointerEvent, originalRect); 621e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 622e0dac50fSopenharmony_ci} 623e0dac50fSopenharmony_ci 624e0dac50fSopenharmony_ci/** 625e0dac50fSopenharmony_ci * @tc.name: ConsumeDragEvent01 626e0dac50fSopenharmony_ci * @tc.desc: ConsumeDragEvent, abnormal scene 627e0dac50fSopenharmony_ci * @tc.type: FUNC 628e0dac50fSopenharmony_ci */ 629e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConsumeDragEvent01, Function | SmallTest | Level2) 630e0dac50fSopenharmony_ci{ 631e0dac50fSopenharmony_ci SessionInfo info; 632e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 633e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 634e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 635e0dac50fSopenharmony_ci EXPECT_NE(sceneSession, nullptr); 636e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 637e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 638e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 639e0dac50fSopenharmony_ci WSRect originalRect = { 100, 100, 1000, 1000 }; 640e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 641e0dac50fSopenharmony_ci 642e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = nullptr; 643e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = nullptr; 644e0dac50fSopenharmony_ci auto result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, 645e0dac50fSopenharmony_ci sessionConfig); 646e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 647e0dac50fSopenharmony_ci 648e0dac50fSopenharmony_ci pointerEvent = MMI::PointerEvent::Create(); 649e0dac50fSopenharmony_ci ASSERT_TRUE(pointerEvent); 650e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP); 651e0dac50fSopenharmony_ci property = new WindowSessionProperty(); 652e0dac50fSopenharmony_ci sceneSession->moveDragController_->isStartDrag_ = false; 653e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 654e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 655e0dac50fSopenharmony_ci 656e0dac50fSopenharmony_ci pointerEvent->SetPointerId(1); 657e0dac50fSopenharmony_ci sceneSession->moveDragController_->moveDragProperty_.pointerId_ = 0; 658e0dac50fSopenharmony_ci sceneSession->moveDragController_->isStartDrag_ = true; 659e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 660e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 661e0dac50fSopenharmony_ci 662e0dac50fSopenharmony_ci pointerEvent->SetPointerId(0); 663e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 664e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 665e0dac50fSopenharmony_ci} 666e0dac50fSopenharmony_ci 667e0dac50fSopenharmony_ci/** 668e0dac50fSopenharmony_ci * @tc.name: ConsumeDragEvent02 669e0dac50fSopenharmony_ci * @tc.desc: ConsumeDragEvent, normal scene 670e0dac50fSopenharmony_ci * @tc.type: FUNC 671e0dac50fSopenharmony_ci */ 672e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConsumeDragEvent02, Function | SmallTest | Level2) 673e0dac50fSopenharmony_ci{ 674e0dac50fSopenharmony_ci SessionInfo info; 675e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 676e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 677e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 678e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 679e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 680e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 681e0dac50fSopenharmony_ci WSRect originalRect = { 100, 100, 1000, 1000 }; 682e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new WindowSessionProperty(); 683e0dac50fSopenharmony_ci property->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 684e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 685e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 686e0dac50fSopenharmony_ci sessionConfig.isSystemDecorEnable_ = true; 687e0dac50fSopenharmony_ci sessionConfig.backgroundswitch = true; 688e0dac50fSopenharmony_ci sessionConfig.decorModeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_ALL; 689e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 690e0dac50fSopenharmony_ci ASSERT_TRUE(pointerEvent); 691e0dac50fSopenharmony_ci pointerEvent->SetAgentWindowId(1); 692e0dac50fSopenharmony_ci pointerEvent->SetPointerId(0); 693e0dac50fSopenharmony_ci pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN); 694e0dac50fSopenharmony_ci MMI::PointerEvent::PointerItem pointerItem; 695e0dac50fSopenharmony_ci pointerItem.SetPointerId(0); 696e0dac50fSopenharmony_ci pointerEvent->AddPointerItem(pointerItem); 697e0dac50fSopenharmony_ci 698e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_DOWN); 699e0dac50fSopenharmony_ci pointerItem.SetDisplayX(100); 700e0dac50fSopenharmony_ci pointerItem.SetDisplayY(100); 701e0dac50fSopenharmony_ci pointerItem.SetWindowX(0); 702e0dac50fSopenharmony_ci pointerItem.SetWindowY(0); 703e0dac50fSopenharmony_ci auto result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, 704e0dac50fSopenharmony_ci sessionConfig); 705e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 706e0dac50fSopenharmony_ci 707e0dac50fSopenharmony_ci sceneSession->moveDragController_->aspectRatio_ = 0.0f; 708e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE); 709e0dac50fSopenharmony_ci pointerItem.SetDisplayX(150); 710e0dac50fSopenharmony_ci pointerItem.SetDisplayY(150); 711e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 712e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 713e0dac50fSopenharmony_ci 714e0dac50fSopenharmony_ci sceneSession->moveDragController_->aspectRatio_ = 1.0f; 715e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE); 716e0dac50fSopenharmony_ci pointerItem.SetDisplayX(200); 717e0dac50fSopenharmony_ci pointerItem.SetDisplayY(200); 718e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 719e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 720e0dac50fSopenharmony_ci 721e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP); 722e0dac50fSopenharmony_ci pointerItem.SetDisplayX(250); 723e0dac50fSopenharmony_ci pointerItem.SetDisplayY(250); 724e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 725e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 726e0dac50fSopenharmony_ci} 727e0dac50fSopenharmony_ci 728e0dac50fSopenharmony_ci/** 729e0dac50fSopenharmony_ci * @tc.name: ConsumeDragEvent03 730e0dac50fSopenharmony_ci * @tc.desc: ConsumeDragEvent, normal scene 731e0dac50fSopenharmony_ci * @tc.type: FUNC 732e0dac50fSopenharmony_ci */ 733e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConsumeDragEvent03, Function | SmallTest | Level2) 734e0dac50fSopenharmony_ci{ 735e0dac50fSopenharmony_ci SessionInfo info; 736e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 737e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 738e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 739e0dac50fSopenharmony_ci EXPECT_NE(sceneSession, nullptr); 740e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 741e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 742e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 743e0dac50fSopenharmony_ci WSRect originalRect = { 100, 100, 1000, 1000 }; 744e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new WindowSessionProperty(); 745e0dac50fSopenharmony_ci property->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 746e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 747e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 748e0dac50fSopenharmony_ci sessionConfig.isSystemDecorEnable_ = true; 749e0dac50fSopenharmony_ci sessionConfig.backgroundswitch = true; 750e0dac50fSopenharmony_ci sessionConfig.decorModeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_ALL; 751e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 752e0dac50fSopenharmony_ci ASSERT_TRUE(pointerEvent); 753e0dac50fSopenharmony_ci pointerEvent->SetAgentWindowId(1); 754e0dac50fSopenharmony_ci pointerEvent->SetPointerId(0); 755e0dac50fSopenharmony_ci pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN); 756e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_DOWN); 757e0dac50fSopenharmony_ci MMI::PointerEvent::PointerItem pointerItem; 758e0dac50fSopenharmony_ci pointerItem.SetPointerId(0); 759e0dac50fSopenharmony_ci pointerEvent->AddPointerItem(pointerItem); 760e0dac50fSopenharmony_ci 761e0dac50fSopenharmony_ci // LEFT_TOP 762e0dac50fSopenharmony_ci pointerItem.SetWindowX(0); 763e0dac50fSopenharmony_ci pointerItem.SetWindowY(0); 764e0dac50fSopenharmony_ci auto result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, 765e0dac50fSopenharmony_ci sessionConfig); 766e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 767e0dac50fSopenharmony_ci 768e0dac50fSopenharmony_ci // RIGHT_TOP 769e0dac50fSopenharmony_ci pointerItem.SetWindowX(1000); 770e0dac50fSopenharmony_ci pointerItem.SetWindowY(0); 771e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 772e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 773e0dac50fSopenharmony_ci 774e0dac50fSopenharmony_ci // RIGHT_BOTTOM 775e0dac50fSopenharmony_ci pointerItem.SetWindowX(1000); 776e0dac50fSopenharmony_ci pointerItem.SetWindowY(1000); 777e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 778e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 779e0dac50fSopenharmony_ci 780e0dac50fSopenharmony_ci // LEFT_BOTTOM 781e0dac50fSopenharmony_ci pointerItem.SetWindowX(0); 782e0dac50fSopenharmony_ci pointerItem.SetWindowY(1000); 783e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 784e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 785e0dac50fSopenharmony_ci} 786e0dac50fSopenharmony_ci 787e0dac50fSopenharmony_ci/** 788e0dac50fSopenharmony_ci * @tc.name: ConsumeDragEvent04 789e0dac50fSopenharmony_ci * @tc.desc: ConsumeDragEvent, normal scene 790e0dac50fSopenharmony_ci * @tc.type: FUNC 791e0dac50fSopenharmony_ci */ 792e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ConsumeDragEvent04, Function | SmallTest | Level2) 793e0dac50fSopenharmony_ci{ 794e0dac50fSopenharmony_ci SessionInfo info; 795e0dac50fSopenharmony_ci info.abilityName_ = "testSession1"; 796e0dac50fSopenharmony_ci info.bundleName_ = "testSession3"; 797e0dac50fSopenharmony_ci sptr<SceneSession> sceneSession = new (std::nothrow) SceneSession(info, nullptr); 798e0dac50fSopenharmony_ci EXPECT_NE(sceneSession, nullptr); 799e0dac50fSopenharmony_ci sceneSession->moveDragController_ = new MoveDragController(1); 800e0dac50fSopenharmony_ci ASSERT_TRUE(sceneSession->moveDragController_); 801e0dac50fSopenharmony_ci sceneSession->moveDragController_->InitMoveDragProperty(); 802e0dac50fSopenharmony_ci WSRect originalRect = { 100, 100, 1000, 1000 }; 803e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new WindowSessionProperty(); 804e0dac50fSopenharmony_ci property->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 805e0dac50fSopenharmony_ci property->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 806e0dac50fSopenharmony_ci SystemSessionConfig sessionConfig; 807e0dac50fSopenharmony_ci sessionConfig.isSystemDecorEnable_ = true; 808e0dac50fSopenharmony_ci sessionConfig.backgroundswitch = true; 809e0dac50fSopenharmony_ci sessionConfig.decorModeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_ALL; 810e0dac50fSopenharmony_ci std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create(); 811e0dac50fSopenharmony_ci ASSERT_TRUE(pointerEvent); 812e0dac50fSopenharmony_ci pointerEvent->SetAgentWindowId(1); 813e0dac50fSopenharmony_ci pointerEvent->SetPointerId(0); 814e0dac50fSopenharmony_ci pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN); 815e0dac50fSopenharmony_ci pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_DOWN); 816e0dac50fSopenharmony_ci MMI::PointerEvent::PointerItem pointerItem; 817e0dac50fSopenharmony_ci pointerItem.SetPointerId(0); 818e0dac50fSopenharmony_ci pointerEvent->AddPointerItem(pointerItem); 819e0dac50fSopenharmony_ci 820e0dac50fSopenharmony_ci // LEFT 821e0dac50fSopenharmony_ci pointerItem.SetWindowX(0); 822e0dac50fSopenharmony_ci pointerItem.SetWindowY(500); 823e0dac50fSopenharmony_ci auto result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, 824e0dac50fSopenharmony_ci sessionConfig); 825e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 826e0dac50fSopenharmony_ci 827e0dac50fSopenharmony_ci // TOP 828e0dac50fSopenharmony_ci pointerItem.SetWindowX(500); 829e0dac50fSopenharmony_ci pointerItem.SetWindowY(0); 830e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 831e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 832e0dac50fSopenharmony_ci 833e0dac50fSopenharmony_ci // RIGHT 834e0dac50fSopenharmony_ci pointerItem.SetWindowX(1000); 835e0dac50fSopenharmony_ci pointerItem.SetWindowY(500); 836e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 837e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 838e0dac50fSopenharmony_ci 839e0dac50fSopenharmony_ci // BOTTOM 840e0dac50fSopenharmony_ci pointerItem.SetWindowX(500); 841e0dac50fSopenharmony_ci pointerItem.SetWindowY(1000); 842e0dac50fSopenharmony_ci result = sceneSession->moveDragController_->ConsumeDragEvent(pointerEvent, originalRect, property, sessionConfig); 843e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 844e0dac50fSopenharmony_ci} 845e0dac50fSopenharmony_ci 846e0dac50fSopenharmony_ci/** 847e0dac50fSopenharmony_ci * @tc.name: GetWindowId01 848e0dac50fSopenharmony_ci * @tc.desc: GetWindowId, normal scene 849e0dac50fSopenharmony_ci * @tc.type: FUNC 850e0dac50fSopenharmony_ci */ 851e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetWindowId, Function | SmallTest | Level2) 852e0dac50fSopenharmony_ci{ 853e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 854e0dac50fSopenharmony_ci ASSERT_EQ(0, session_->GetWindowId()); 855e0dac50fSopenharmony_ci} 856e0dac50fSopenharmony_ci 857e0dac50fSopenharmony_ci/** 858e0dac50fSopenharmony_ci * @tc.name: GetRSVisible01 859e0dac50fSopenharmony_ci * @tc.desc: GetRSVisible, normal scene 860e0dac50fSopenharmony_ci * @tc.type: FUNC 861e0dac50fSopenharmony_ci */ 862e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetRSVisible, Function | SmallTest | Level2) 863e0dac50fSopenharmony_ci{ 864e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 865e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetRSVisible(false)); 866e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_CONNECT; 867e0dac50fSopenharmony_ci if (!session_->GetRSVisible()) { 868e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->GetRSVisible()); 869e0dac50fSopenharmony_ci } 870e0dac50fSopenharmony_ci} 871e0dac50fSopenharmony_ci 872e0dac50fSopenharmony_ci/** 873e0dac50fSopenharmony_ci * @tc.name: SetFocusable01 874e0dac50fSopenharmony_ci * @tc.desc: SetFocusable, normal scene 875e0dac50fSopenharmony_ci * @tc.type: FUNC 876e0dac50fSopenharmony_ci */ 877e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetFocusable, Function | SmallTest | Level2) 878e0dac50fSopenharmony_ci{ 879e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 880e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 881e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 882e0dac50fSopenharmony_ci ASSERT_EQ(session_->GetFocusable(), false); 883e0dac50fSopenharmony_ci} 884e0dac50fSopenharmony_ci 885e0dac50fSopenharmony_ci/** 886e0dac50fSopenharmony_ci * @tc.name: GetSnapshot 887e0dac50fSopenharmony_ci * @tc.desc: GetSnapshot Test 888e0dac50fSopenharmony_ci * @tc.type: FUNC 889e0dac50fSopenharmony_ci */ 890e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetSnapshot, Function | SmallTest | Level2) 891e0dac50fSopenharmony_ci{ 892e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 893e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 894e0dac50fSopenharmony_ci std::shared_ptr<Media::PixelMap> snapshot = session_->Snapshot(); 895e0dac50fSopenharmony_ci ASSERT_EQ(snapshot, session_->GetSnapshot()); 896e0dac50fSopenharmony_ci} 897e0dac50fSopenharmony_ci 898e0dac50fSopenharmony_ci/** 899e0dac50fSopenharmony_ci * @tc.name: NotifyExtensionDied 900e0dac50fSopenharmony_ci * @tc.desc: NotifyExtensionDied Test 901e0dac50fSopenharmony_ci * @tc.type: FUNC 902e0dac50fSopenharmony_ci */ 903e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, NotifyExtensionDied, Function | SmallTest | Level2) 904e0dac50fSopenharmony_ci{ 905e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 906e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 907e0dac50fSopenharmony_ci session_->NotifyExtensionDied(); 908e0dac50fSopenharmony_ci 909e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 910e0dac50fSopenharmony_ci} 911e0dac50fSopenharmony_ci 912e0dac50fSopenharmony_ci/** 913e0dac50fSopenharmony_ci * @tc.name: NotifyExtensionTimeout 914e0dac50fSopenharmony_ci * @tc.desc: NotifyExtensionTimeout Test 915e0dac50fSopenharmony_ci * @tc.type: FUNC 916e0dac50fSopenharmony_ci */ 917e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, NotifyExtensionTimeout, Function | SmallTest | Level2) 918e0dac50fSopenharmony_ci{ 919e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 920e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 921e0dac50fSopenharmony_ci session_->NotifyExtensionTimeout(3); 922e0dac50fSopenharmony_ci 923e0dac50fSopenharmony_ci session_->RegisterLifecycleListener(lifecycleListener_); 924e0dac50fSopenharmony_ci session_->NotifyExtensionTimeout(3); 925e0dac50fSopenharmony_ci session_->UnregisterLifecycleListener(lifecycleListener_); 926e0dac50fSopenharmony_ci 927e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 928e0dac50fSopenharmony_ci} 929e0dac50fSopenharmony_ci 930e0dac50fSopenharmony_ci/** 931e0dac50fSopenharmony_ci * @tc.name: SetAspectRatio 932e0dac50fSopenharmony_ci * @tc.desc: SetAspectRatio Test 933e0dac50fSopenharmony_ci * @tc.type: FUNC 934e0dac50fSopenharmony_ci */ 935e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetAspectRatio, Function | SmallTest | Level2) 936e0dac50fSopenharmony_ci{ 937e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 938e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 939e0dac50fSopenharmony_ci const float ratio = 0.1f; 940e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetAspectRatio(ratio)); 941e0dac50fSopenharmony_ci ASSERT_EQ(ratio, session_->GetAspectRatio()); 942e0dac50fSopenharmony_ci} 943e0dac50fSopenharmony_ci 944e0dac50fSopenharmony_ci/** 945e0dac50fSopenharmony_ci * @tc.name: UpdateSessionTouchable 946e0dac50fSopenharmony_ci * @tc.desc: UpdateSessionTouchable Test 947e0dac50fSopenharmony_ci * @tc.type: FUNC 948e0dac50fSopenharmony_ci */ 949e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, UpdateSessionTouchable, Function | SmallTest | Level2) 950e0dac50fSopenharmony_ci{ 951e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 952e0dac50fSopenharmony_ci 953e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 954e0dac50fSopenharmony_ci session_->UpdateSessionTouchable(false); 955e0dac50fSopenharmony_ci 956e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 957e0dac50fSopenharmony_ci} 958e0dac50fSopenharmony_ci 959e0dac50fSopenharmony_ci/** 960e0dac50fSopenharmony_ci * @tc.name: SetFocusable02 961e0dac50fSopenharmony_ci * @tc.desc: others 962e0dac50fSopenharmony_ci * @tc.type: FUNC 963e0dac50fSopenharmony_ci */ 964e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetFocusable02, Function | SmallTest | Level2) 965e0dac50fSopenharmony_ci{ 966e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 967e0dac50fSopenharmony_ci 968e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 969e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 970e0dac50fSopenharmony_ci 971e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(true)); 972e0dac50fSopenharmony_ci ASSERT_EQ(session_->GetFocusable(), true); 973e0dac50fSopenharmony_ci} 974e0dac50fSopenharmony_ci 975e0dac50fSopenharmony_ci/** 976e0dac50fSopenharmony_ci * @tc.name: GetFocusable01 977e0dac50fSopenharmony_ci * @tc.desc: property_ is not nullptr 978e0dac50fSopenharmony_ci * @tc.type: FUNC 979e0dac50fSopenharmony_ci */ 980e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetFocusable01, Function | SmallTest | Level2) 981e0dac50fSopenharmony_ci{ 982e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 983e0dac50fSopenharmony_ci session_->property_ = new WindowSessionProperty(); 984e0dac50fSopenharmony_ci ASSERT_EQ(true, session_->GetFocusable()); 985e0dac50fSopenharmony_ci} 986e0dac50fSopenharmony_ci 987e0dac50fSopenharmony_ci/** 988e0dac50fSopenharmony_ci * @tc.name: GetFocusable02 989e0dac50fSopenharmony_ci * @tc.desc: property_ is nullptr 990e0dac50fSopenharmony_ci * @tc.type: FUNC 991e0dac50fSopenharmony_ci */ 992e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetFocusable02, Function | SmallTest | Level2) 993e0dac50fSopenharmony_ci{ 994e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 995e0dac50fSopenharmony_ci session_->property_ = nullptr; 996e0dac50fSopenharmony_ci ASSERT_EQ(true, session_->GetFocusable()); 997e0dac50fSopenharmony_ci} 998e0dac50fSopenharmony_ci 999e0dac50fSopenharmony_ci/** 1000e0dac50fSopenharmony_ci * @tc.name: SetNeedNotify 1001e0dac50fSopenharmony_ci * @tc.desc: SetNeedNotify Test 1002e0dac50fSopenharmony_ci * @tc.type: FUNC 1003e0dac50fSopenharmony_ci */ 1004e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetNeedNotify, Function | SmallTest | Level2) 1005e0dac50fSopenharmony_ci{ 1006e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1007e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1008e0dac50fSopenharmony_ci session_->SetNeedNotify(false); 1009e0dac50fSopenharmony_ci 1010e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 1011e0dac50fSopenharmony_ci} 1012e0dac50fSopenharmony_ci 1013e0dac50fSopenharmony_ci/** 1014e0dac50fSopenharmony_ci * @tc.name: NeedNotify 1015e0dac50fSopenharmony_ci * @tc.desc: NeedNotify Test 1016e0dac50fSopenharmony_ci * @tc.type: FUNC 1017e0dac50fSopenharmony_ci */ 1018e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, NeedNotify, Function | SmallTest | Level2) 1019e0dac50fSopenharmony_ci{ 1020e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1021e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1022e0dac50fSopenharmony_ci session_->SetNeedNotify(true); 1023e0dac50fSopenharmony_ci ASSERT_EQ(true, session_->NeedNotify()); 1024e0dac50fSopenharmony_ci} 1025e0dac50fSopenharmony_ci 1026e0dac50fSopenharmony_ci/** 1027e0dac50fSopenharmony_ci * @tc.name: SetFocusedOnShow 1028e0dac50fSopenharmony_ci * @tc.desc: SetFocusedOnShow Test 1029e0dac50fSopenharmony_ci * @tc.type: FUNC 1030e0dac50fSopenharmony_ci */ 1031e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetFocusedOnShow, Function | SmallTest | Level2) 1032e0dac50fSopenharmony_ci{ 1033e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1034e0dac50fSopenharmony_ci session_->SetFocusedOnShow(false); 1035e0dac50fSopenharmony_ci auto focusedOnShow = session_->IsFocusedOnShow(); 1036e0dac50fSopenharmony_ci ASSERT_EQ(focusedOnShow, false); 1037e0dac50fSopenharmony_ci session_->SetFocusedOnShow(true); 1038e0dac50fSopenharmony_ci focusedOnShow = session_->IsFocusedOnShow(); 1039e0dac50fSopenharmony_ci ASSERT_EQ(focusedOnShow, true); 1040e0dac50fSopenharmony_ci} 1041e0dac50fSopenharmony_ci 1042e0dac50fSopenharmony_ci/** 1043e0dac50fSopenharmony_ci * @tc.name: SetTouchable01 1044e0dac50fSopenharmony_ci * @tc.desc: IsSessionValid() return false 1045e0dac50fSopenharmony_ci * @tc.type: FUNC 1046e0dac50fSopenharmony_ci */ 1047e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetTouchable01, Function | SmallTest | Level2) 1048e0dac50fSopenharmony_ci{ 1049e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1050e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1051e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 1052e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->SetTouchable(false)); 1053e0dac50fSopenharmony_ci} 1054e0dac50fSopenharmony_ci 1055e0dac50fSopenharmony_ci/** 1056e0dac50fSopenharmony_ci * @tc.name: SetTouchable02 1057e0dac50fSopenharmony_ci * @tc.desc: IsSessionValid() return true 1058e0dac50fSopenharmony_ci * @tc.type: FUNC 1059e0dac50fSopenharmony_ci */ 1060e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetTouchable02, Function | SmallTest | Level2) 1061e0dac50fSopenharmony_ci{ 1062e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1063e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1064e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1065e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetTouchable(false)); 1066e0dac50fSopenharmony_ci} 1067e0dac50fSopenharmony_ci 1068e0dac50fSopenharmony_ci/** 1069e0dac50fSopenharmony_ci * @tc.name: SetSessionInfoLockedState01 1070e0dac50fSopenharmony_ci * @tc.desc: IsSessionValid() return false 1071e0dac50fSopenharmony_ci * @tc.type: FUNC 1072e0dac50fSopenharmony_ci */ 1073e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetSessionInfoLockedState01, Function | SmallTest | Level2) 1074e0dac50fSopenharmony_ci{ 1075e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1076e0dac50fSopenharmony_ci session_->SetSessionInfoLockedState(false); 1077e0dac50fSopenharmony_ci ASSERT_EQ(false, session_->sessionInfo_.lockedState); 1078e0dac50fSopenharmony_ci} 1079e0dac50fSopenharmony_ci 1080e0dac50fSopenharmony_ci/** 1081e0dac50fSopenharmony_ci * @tc.name: SetSessionInfoLockedState02 1082e0dac50fSopenharmony_ci * @tc.desc: IsSessionValid() return true 1083e0dac50fSopenharmony_ci * @tc.type: FUNC 1084e0dac50fSopenharmony_ci */ 1085e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetSessionInfoLockedState02, Function | SmallTest | Level2) 1086e0dac50fSopenharmony_ci{ 1087e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1088e0dac50fSopenharmony_ci session_->SetSessionInfoLockedState(true); 1089e0dac50fSopenharmony_ci ASSERT_EQ(true, session_->sessionInfo_.lockedState); 1090e0dac50fSopenharmony_ci} 1091e0dac50fSopenharmony_ci 1092e0dac50fSopenharmony_ci/** 1093e0dac50fSopenharmony_ci * @tc.name: GetCallingPid 1094e0dac50fSopenharmony_ci * @tc.desc: GetCallingPid Test 1095e0dac50fSopenharmony_ci * @tc.type: FUNC 1096e0dac50fSopenharmony_ci */ 1097e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetCallingPid, Function | SmallTest | Level2) 1098e0dac50fSopenharmony_ci{ 1099e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1100e0dac50fSopenharmony_ci session_->SetCallingPid(111); 1101e0dac50fSopenharmony_ci ASSERT_EQ(111, session_->GetCallingPid()); 1102e0dac50fSopenharmony_ci} 1103e0dac50fSopenharmony_ci 1104e0dac50fSopenharmony_ci/** 1105e0dac50fSopenharmony_ci * @tc.name: GetCallingUid 1106e0dac50fSopenharmony_ci * @tc.desc: GetCallingUid Test 1107e0dac50fSopenharmony_ci * @tc.type: FUNC 1108e0dac50fSopenharmony_ci */ 1109e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetCallingUid, Function | SmallTest | Level2) 1110e0dac50fSopenharmony_ci{ 1111e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1112e0dac50fSopenharmony_ci session_->SetCallingUid(111); 1113e0dac50fSopenharmony_ci ASSERT_EQ(111, session_->GetCallingUid()); 1114e0dac50fSopenharmony_ci} 1115e0dac50fSopenharmony_ci 1116e0dac50fSopenharmony_ci/** 1117e0dac50fSopenharmony_ci * @tc.name: GetAbilityToken 1118e0dac50fSopenharmony_ci * @tc.desc: GetAbilityToken Test 1119e0dac50fSopenharmony_ci * @tc.type: FUNC 1120e0dac50fSopenharmony_ci */ 1121e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetAbilityToken, Function | SmallTest | Level2) 1122e0dac50fSopenharmony_ci{ 1123e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1124e0dac50fSopenharmony_ci session_->SetAbilityToken(nullptr); 1125e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, session_->GetAbilityToken()); 1126e0dac50fSopenharmony_ci} 1127e0dac50fSopenharmony_ci 1128e0dac50fSopenharmony_ci/** 1129e0dac50fSopenharmony_ci * @tc.name: SetBrightness01 1130e0dac50fSopenharmony_ci * @tc.desc: property_ is nullptr 1131e0dac50fSopenharmony_ci * @tc.type: FUNC 1132e0dac50fSopenharmony_ci */ 1133e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetBrightness01, Function | SmallTest | Level2) 1134e0dac50fSopenharmony_ci{ 1135e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1136e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1137e0dac50fSopenharmony_ci session_->property_ = nullptr; 1138e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_NULLPTR, session_->SetBrightness(0.1f)); 1139e0dac50fSopenharmony_ci} 1140e0dac50fSopenharmony_ci 1141e0dac50fSopenharmony_ci/** 1142e0dac50fSopenharmony_ci * @tc.name: SetBrightness02 1143e0dac50fSopenharmony_ci * @tc.desc: property_ is not nullptr 1144e0dac50fSopenharmony_ci * @tc.type: FUNC 1145e0dac50fSopenharmony_ci */ 1146e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetBrightness02, Function | SmallTest | Level2) 1147e0dac50fSopenharmony_ci{ 1148e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1149e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1150e0dac50fSopenharmony_ci session_->property_ = new WindowSessionProperty(); 1151e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetBrightness(0.1f)); 1152e0dac50fSopenharmony_ci} 1153e0dac50fSopenharmony_ci 1154e0dac50fSopenharmony_ci/** 1155e0dac50fSopenharmony_ci * @tc.name: UpdateHotRect 1156e0dac50fSopenharmony_ci * @tc.desc: UpdateHotRect Test 1157e0dac50fSopenharmony_ci * @tc.type: FUNC 1158e0dac50fSopenharmony_ci */ 1159e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, UpdateHotRect, Function | SmallTest | Level2) 1160e0dac50fSopenharmony_ci{ 1161e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1162e0dac50fSopenharmony_ci 1163e0dac50fSopenharmony_ci WSRect rect; 1164e0dac50fSopenharmony_ci rect.posX_ = 0; 1165e0dac50fSopenharmony_ci rect.posY_ = 0; 1166e0dac50fSopenharmony_ci rect.width_ = 0; 1167e0dac50fSopenharmony_ci rect.height_ = 0; 1168e0dac50fSopenharmony_ci 1169e0dac50fSopenharmony_ci WSRectF newRect; 1170e0dac50fSopenharmony_ci const float outsideBorder = 4.0f * 1.5f; 1171e0dac50fSopenharmony_ci const size_t outsideBorderCount = 2; 1172e0dac50fSopenharmony_ci newRect.posX_ = rect.posX_ - outsideBorder; 1173e0dac50fSopenharmony_ci newRect.posY_ = rect.posY_ - outsideBorder; 1174e0dac50fSopenharmony_ci newRect.width_ = rect.width_ + outsideBorder * outsideBorderCount; 1175e0dac50fSopenharmony_ci newRect.height_ = rect.height_ + outsideBorder * outsideBorderCount; 1176e0dac50fSopenharmony_ci 1177e0dac50fSopenharmony_ci ASSERT_EQ(newRect, session_->UpdateHotRect(rect)); 1178e0dac50fSopenharmony_ci} 1179e0dac50fSopenharmony_ci 1180e0dac50fSopenharmony_ci/** 1181e0dac50fSopenharmony_ci * @tc.name: SetTerminateSessionListener 1182e0dac50fSopenharmony_ci * @tc.desc: SetTerminateSessionListener Test 1183e0dac50fSopenharmony_ci * @tc.type: FUNC 1184e0dac50fSopenharmony_ci */ 1185e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetTerminateSessionListener, Function | SmallTest | Level2) 1186e0dac50fSopenharmony_ci{ 1187e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1188e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1189e0dac50fSopenharmony_ci NotifyTerminateSessionFunc func = nullptr; 1190e0dac50fSopenharmony_ci session_->SetTerminateSessionListener(func); 1191e0dac50fSopenharmony_ci 1192e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 1193e0dac50fSopenharmony_ci} 1194e0dac50fSopenharmony_ci 1195e0dac50fSopenharmony_ci/** 1196e0dac50fSopenharmony_ci * @tc.name: SetTerminateSessionListenerTotal 1197e0dac50fSopenharmony_ci * @tc.desc: SetTerminateSessionListenerTotal Test 1198e0dac50fSopenharmony_ci * @tc.type: FUNC 1199e0dac50fSopenharmony_ci */ 1200e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetTerminateSessionListenerTotal, Function | SmallTest | Level2) 1201e0dac50fSopenharmony_ci{ 1202e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1203e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1204e0dac50fSopenharmony_ci NotifyTerminateSessionFuncTotal func = nullptr; 1205e0dac50fSopenharmony_ci session_->SetTerminateSessionListenerTotal(func); 1206e0dac50fSopenharmony_ci 1207e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 1208e0dac50fSopenharmony_ci} 1209e0dac50fSopenharmony_ci 1210e0dac50fSopenharmony_ci/** 1211e0dac50fSopenharmony_ci * @tc.name: SetSessionLabel 1212e0dac50fSopenharmony_ci * @tc.desc: SetSessionLabel Test 1213e0dac50fSopenharmony_ci * @tc.type: FUNC 1214e0dac50fSopenharmony_ci */ 1215e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetSessionLabel, Function | SmallTest | Level2) 1216e0dac50fSopenharmony_ci{ 1217e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1218e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1219e0dac50fSopenharmony_ci NofitySessionLabelUpdatedFunc func = [](const std::string& label) {}; 1220e0dac50fSopenharmony_ci session_->updateSessionLabelFunc_ = func; 1221e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetSessionLabel("SetSessionLabel Test")); 1222e0dac50fSopenharmony_ci} 1223e0dac50fSopenharmony_ci 1224e0dac50fSopenharmony_ci/** 1225e0dac50fSopenharmony_ci * @tc.name: SetUpdateSessionLabelListener 1226e0dac50fSopenharmony_ci * @tc.desc: SetUpdateSessionLabelListener Test 1227e0dac50fSopenharmony_ci * @tc.type: FUNC 1228e0dac50fSopenharmony_ci */ 1229e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetUpdateSessionLabelListener, Function | SmallTest | Level2) 1230e0dac50fSopenharmony_ci{ 1231e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1232e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1233e0dac50fSopenharmony_ci NofitySessionLabelUpdatedFunc func = nullptr; 1234e0dac50fSopenharmony_ci session_->SetUpdateSessionLabelListener(func); 1235e0dac50fSopenharmony_ci 1236e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 1237e0dac50fSopenharmony_ci} 1238e0dac50fSopenharmony_ci 1239e0dac50fSopenharmony_ci/** 1240e0dac50fSopenharmony_ci * @tc.name: SetPendingSessionToForegroundListener 1241e0dac50fSopenharmony_ci * @tc.desc: SetPendingSessionToForegroundListener Test 1242e0dac50fSopenharmony_ci * @tc.type: FUNC 1243e0dac50fSopenharmony_ci */ 1244e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetPendingSessionToForegroundListener, Function | SmallTest | Level2) 1245e0dac50fSopenharmony_ci{ 1246e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1247e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_DISCONNECT; 1248e0dac50fSopenharmony_ci NotifyPendingSessionToForegroundFunc func = nullptr; 1249e0dac50fSopenharmony_ci session_->SetPendingSessionToForegroundListener(func); 1250e0dac50fSopenharmony_ci 1251e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 1252e0dac50fSopenharmony_ci} 1253e0dac50fSopenharmony_ci 1254e0dac50fSopenharmony_ci/** 1255e0dac50fSopenharmony_ci * @tc.name: NotifyScreenshot 1256e0dac50fSopenharmony_ci * @tc.desc: NotifyScreenshot Test 1257e0dac50fSopenharmony_ci * @tc.type: FUNC 1258e0dac50fSopenharmony_ci */ 1259e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, NotifyScreenshot, Function | SmallTest | Level2) 1260e0dac50fSopenharmony_ci{ 1261e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1262e0dac50fSopenharmony_ci session_->sessionStage_ = nullptr; 1263e0dac50fSopenharmony_ci session_->NotifyScreenshot(); 1264e0dac50fSopenharmony_ci 1265e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage_; 1266e0dac50fSopenharmony_ci session_->NotifyScreenshot(); 1267e0dac50fSopenharmony_ci 1268e0dac50fSopenharmony_ci session_->property_ = new WindowSessionProperty(); 1269e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->SetFocusable(false)); 1270e0dac50fSopenharmony_ci} 1271e0dac50fSopenharmony_ci 1272e0dac50fSopenharmony_ci/** 1273e0dac50fSopenharmony_ci * @tc.name: TransferBackPressedEventForConsumed02 1274e0dac50fSopenharmony_ci * @tc.desc: windowEventChannel_ is not nullptr 1275e0dac50fSopenharmony_ci * @tc.type: FUNC 1276e0dac50fSopenharmony_ci */ 1277e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, TransferBackPressedEventForConsumed02, Function | SmallTest | Level2) 1278e0dac50fSopenharmony_ci{ 1279e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1280e0dac50fSopenharmony_ci 1281e0dac50fSopenharmony_ci session_->windowEventChannel_ = new TestWindowEventChannel(); 1282e0dac50fSopenharmony_ci 1283e0dac50fSopenharmony_ci bool isConsumed = false; 1284e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->TransferBackPressedEventForConsumed(isConsumed)); 1285e0dac50fSopenharmony_ci} 1286e0dac50fSopenharmony_ci 1287e0dac50fSopenharmony_ci/** 1288e0dac50fSopenharmony_ci * @tc.name: TransferFocusActiveEvent02 1289e0dac50fSopenharmony_ci * @tc.desc: windowEventChannel_ is not nullptr 1290e0dac50fSopenharmony_ci * @tc.type: FUNC 1291e0dac50fSopenharmony_ci */ 1292e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, TransferFocusActiveEvent02, Function | SmallTest | Level2) 1293e0dac50fSopenharmony_ci{ 1294e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1295e0dac50fSopenharmony_ci 1296e0dac50fSopenharmony_ci session_->windowEventChannel_ = new TestWindowEventChannel(); 1297e0dac50fSopenharmony_ci 1298e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->TransferFocusActiveEvent(false)); 1299e0dac50fSopenharmony_ci} 1300e0dac50fSopenharmony_ci 1301e0dac50fSopenharmony_ci/** 1302e0dac50fSopenharmony_ci * @tc.name: TransferFocusStateEvent02 1303e0dac50fSopenharmony_ci * @tc.desc: windowEventChannel_ is not nullptr 1304e0dac50fSopenharmony_ci * @tc.type: FUNC 1305e0dac50fSopenharmony_ci */ 1306e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, TransferFocusStateEvent02, Function | SmallTest | Level2) 1307e0dac50fSopenharmony_ci{ 1308e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1309e0dac50fSopenharmony_ci 1310e0dac50fSopenharmony_ci session_->windowEventChannel_ = new TestWindowEventChannel(); 1311e0dac50fSopenharmony_ci 1312e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->TransferFocusStateEvent(false)); 1313e0dac50fSopenharmony_ci} 1314e0dac50fSopenharmony_ci/** 1315e0dac50fSopenharmony_ci * @tc.name: CreateDetectStateTask001 1316e0dac50fSopenharmony_ci * @tc.desc: Create detection task when there are no pre_existing tasks. 1317e0dac50fSopenharmony_ci * @tc.type: FUNC 1318e0dac50fSopenharmony_ci */ 1319e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, CreateDetectStateTask001, Function | SmallTest | Level2) 1320e0dac50fSopenharmony_ci{ 1321e0dac50fSopenharmony_ci session_->systemConfig_.windowUIType_ = WindowUIType::PHONE_WINDOW; 1322e0dac50fSopenharmony_ci std::string taskName = "wms:WindowStateDetect" + std::to_string(session_->persistentId_); 1323e0dac50fSopenharmony_ci DetectTaskInfo detectTaskInfo; 1324e0dac50fSopenharmony_ci detectTaskInfo.taskState = DetectTaskState::NO_TASK; 1325e0dac50fSopenharmony_ci int32_t beforeTaskNum = GetTaskCount(); 1326e0dac50fSopenharmony_ci session_->SetDetectTaskInfo(detectTaskInfo); 1327e0dac50fSopenharmony_ci session_->CreateDetectStateTask(false, WindowMode::WINDOW_MODE_FULLSCREEN); 1328e0dac50fSopenharmony_ci 1329e0dac50fSopenharmony_ci ASSERT_EQ(beforeTaskNum + 1, GetTaskCount()); 1330e0dac50fSopenharmony_ci ASSERT_EQ(DetectTaskState::DETACH_TASK, session_->GetDetectTaskInfo().taskState); 1331e0dac50fSopenharmony_ci session_->handler_->RemoveTask(taskName); 1332e0dac50fSopenharmony_ci 1333e0dac50fSopenharmony_ci session_->showRecent_ = true; 1334e0dac50fSopenharmony_ci session_->CreateDetectStateTask(false, WindowMode::WINDOW_MODE_FULLSCREEN); 1335e0dac50fSopenharmony_ci} 1336e0dac50fSopenharmony_ci 1337e0dac50fSopenharmony_ci/** 1338e0dac50fSopenharmony_ci * @tc.name: CreateDetectStateTask002 1339e0dac50fSopenharmony_ci * @tc.desc: Detect state when window mode changed. 1340e0dac50fSopenharmony_ci * @tc.type: FUNC 1341e0dac50fSopenharmony_ci */ 1342e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, CreateDetectStateTask002, Function | SmallTest | Level2) 1343e0dac50fSopenharmony_ci{ 1344e0dac50fSopenharmony_ci session_->systemConfig_.windowUIType_ = WindowUIType::PHONE_WINDOW; 1345e0dac50fSopenharmony_ci std::string taskName = "wms:WindowStateDetect" + std::to_string(session_->persistentId_); 1346e0dac50fSopenharmony_ci auto task = [](){}; 1347e0dac50fSopenharmony_ci int64_t delayTime = 3000; 1348e0dac50fSopenharmony_ci session_->handler_->PostTask(task, taskName, delayTime); 1349e0dac50fSopenharmony_ci int32_t beforeTaskNum = GetTaskCount(); 1350e0dac50fSopenharmony_ci 1351e0dac50fSopenharmony_ci DetectTaskInfo detectTaskInfo; 1352e0dac50fSopenharmony_ci detectTaskInfo.taskState = DetectTaskState::DETACH_TASK; 1353e0dac50fSopenharmony_ci detectTaskInfo.taskWindowMode = WindowMode::WINDOW_MODE_FULLSCREEN; 1354e0dac50fSopenharmony_ci session_->SetDetectTaskInfo(detectTaskInfo); 1355e0dac50fSopenharmony_ci session_->CreateDetectStateTask(true, WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1356e0dac50fSopenharmony_ci 1357e0dac50fSopenharmony_ci ASSERT_EQ(beforeTaskNum - 1, GetTaskCount()); 1358e0dac50fSopenharmony_ci ASSERT_EQ(DetectTaskState::NO_TASK, session_->GetDetectTaskInfo().taskState); 1359e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_UNDEFINED, session_->GetDetectTaskInfo().taskWindowMode); 1360e0dac50fSopenharmony_ci session_->handler_->RemoveTask(taskName); 1361e0dac50fSopenharmony_ci 1362e0dac50fSopenharmony_ci session_->showRecent_ = true; 1363e0dac50fSopenharmony_ci session_->CreateDetectStateTask(false, WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1364e0dac50fSopenharmony_ci} 1365e0dac50fSopenharmony_ci 1366e0dac50fSopenharmony_ci/** 1367e0dac50fSopenharmony_ci * @tc.name: CreateDetectStateTask003 1368e0dac50fSopenharmony_ci * @tc.desc: Detect sup and down tree tasks fo the same type. 1369e0dac50fSopenharmony_ci * @tc.type: FUNC 1370e0dac50fSopenharmony_ci */ 1371e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, CreateDetectStateTask003, Function | SmallTest | Level2) 1372e0dac50fSopenharmony_ci{ 1373e0dac50fSopenharmony_ci session_->systemConfig_.windowUIType_ = WindowUIType::PHONE_WINDOW; 1374e0dac50fSopenharmony_ci std::string taskName = "wms:WindowStateDetect" + std::to_string(session_->persistentId_); 1375e0dac50fSopenharmony_ci DetectTaskInfo detectTaskInfo; 1376e0dac50fSopenharmony_ci detectTaskInfo.taskState = DetectTaskState::DETACH_TASK; 1377e0dac50fSopenharmony_ci detectTaskInfo.taskWindowMode = WindowMode::WINDOW_MODE_FULLSCREEN; 1378e0dac50fSopenharmony_ci int32_t beforeTaskNum = GetTaskCount(); 1379e0dac50fSopenharmony_ci session_->SetDetectTaskInfo(detectTaskInfo); 1380e0dac50fSopenharmony_ci session_->CreateDetectStateTask(false, WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1381e0dac50fSopenharmony_ci 1382e0dac50fSopenharmony_ci ASSERT_EQ(beforeTaskNum + 1, GetTaskCount()); 1383e0dac50fSopenharmony_ci ASSERT_EQ(DetectTaskState::DETACH_TASK, session_->GetDetectTaskInfo().taskState); 1384e0dac50fSopenharmony_ci session_->handler_->RemoveTask(taskName); 1385e0dac50fSopenharmony_ci 1386e0dac50fSopenharmony_ci session_->showRecent_ = true; 1387e0dac50fSopenharmony_ci session_->CreateDetectStateTask(false, WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1388e0dac50fSopenharmony_ci} 1389e0dac50fSopenharmony_ci 1390e0dac50fSopenharmony_ci/** 1391e0dac50fSopenharmony_ci * @tc.name: CreateDetectStateTask004 1392e0dac50fSopenharmony_ci * @tc.desc: Detection tasks under the same window mode. 1393e0dac50fSopenharmony_ci * @tc.type: FUNC 1394e0dac50fSopenharmony_ci */ 1395e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, CreateDetectStateTask004, Function | SmallTest | Level2) 1396e0dac50fSopenharmony_ci{ 1397e0dac50fSopenharmony_ci session_->systemConfig_.windowUIType_ = WindowUIType::PHONE_WINDOW; 1398e0dac50fSopenharmony_ci std::string taskName = "wms:WindowStateDetect" + std::to_string(session_->persistentId_); 1399e0dac50fSopenharmony_ci DetectTaskInfo detectTaskInfo; 1400e0dac50fSopenharmony_ci int32_t beforeTaskNum = GetTaskCount(); 1401e0dac50fSopenharmony_ci detectTaskInfo.taskState = DetectTaskState::DETACH_TASK; 1402e0dac50fSopenharmony_ci detectTaskInfo.taskWindowMode = WindowMode::WINDOW_MODE_FULLSCREEN; 1403e0dac50fSopenharmony_ci session_->SetDetectTaskInfo(detectTaskInfo); 1404e0dac50fSopenharmony_ci session_->CreateDetectStateTask(true, WindowMode::WINDOW_MODE_FULLSCREEN); 1405e0dac50fSopenharmony_ci 1406e0dac50fSopenharmony_ci ASSERT_EQ(beforeTaskNum + 1, GetTaskCount()); 1407e0dac50fSopenharmony_ci ASSERT_EQ(DetectTaskState::ATTACH_TASK, session_->GetDetectTaskInfo().taskState); 1408e0dac50fSopenharmony_ci session_->handler_->RemoveTask(taskName); 1409e0dac50fSopenharmony_ci 1410e0dac50fSopenharmony_ci session_->showRecent_ = true; 1411e0dac50fSopenharmony_ci session_->CreateDetectStateTask(false, WindowMode::WINDOW_MODE_FULLSCREEN); 1412e0dac50fSopenharmony_ci} 1413e0dac50fSopenharmony_ci 1414e0dac50fSopenharmony_ci/** 1415e0dac50fSopenharmony_ci * @tc.name: GetUIContentRemoteObj 1416e0dac50fSopenharmony_ci * @tc.desc: GetUIContentRemoteObj Test 1417e0dac50fSopenharmony_ci * @tc.type: FUNC 1418e0dac50fSopenharmony_ci */ 1419e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetUIContentRemoteObj, Function | SmallTest | Level2) 1420e0dac50fSopenharmony_ci{ 1421e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1422e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new(std::nothrow) SessionStageMocker(); 1423e0dac50fSopenharmony_ci ASSERT_NE(mockSessionStage, nullptr); 1424e0dac50fSopenharmony_ci EXPECT_CALL(*(mockSessionStage), GetUIContentRemoteObj(_)).WillRepeatedly(Return(WSError::WS_OK)); 1425e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1426e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1427e0dac50fSopenharmony_ci sptr<IRemoteObject> remoteObj; 1428e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->GetUIContentRemoteObj(remoteObj)); 1429e0dac50fSopenharmony_ci 1430e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_BACKGROUND; 1431e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->GetUIContentRemoteObj(remoteObj)); 1432e0dac50fSopenharmony_ci Mock::VerifyAndClearExpectations(&mockSessionStage); 1433e0dac50fSopenharmony_ci 1434e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 1435e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_INVALID_SESSION, session_->GetUIContentRemoteObj(remoteObj)); 1436e0dac50fSopenharmony_ci} 1437e0dac50fSopenharmony_ci 1438e0dac50fSopenharmony_ci/** 1439e0dac50fSopenharmony_ci * @tc.name: TransferKeyEventForConsumed02 1440e0dac50fSopenharmony_ci * @tc.desc: windowEventChannel_ is not nullptr, keyEvent is nullptr 1441e0dac50fSopenharmony_ci * @tc.type: FUNC 1442e0dac50fSopenharmony_ci */ 1443e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, TransferKeyEventForConsumed02, Function | SmallTest | Level2) 1444e0dac50fSopenharmony_ci{ 1445e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1446e0dac50fSopenharmony_ci 1447e0dac50fSopenharmony_ci session_->windowEventChannel_ = new TestWindowEventChannel(); 1448e0dac50fSopenharmony_ci 1449e0dac50fSopenharmony_ci std::shared_ptr<MMI::KeyEvent> keyEvent = nullptr; 1450e0dac50fSopenharmony_ci bool isConsumed = false; 1451e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_ERROR_NULLPTR, session_->TransferKeyEventForConsumed(keyEvent, isConsumed)); 1452e0dac50fSopenharmony_ci} 1453e0dac50fSopenharmony_ci 1454e0dac50fSopenharmony_ci/** 1455e0dac50fSopenharmony_ci * @tc.name: TransferKeyEventForConsumed03 1456e0dac50fSopenharmony_ci * @tc.desc: windowEventChannel_ is not nullptr, keyEvent is not nullptr 1457e0dac50fSopenharmony_ci * @tc.type: FUNC 1458e0dac50fSopenharmony_ci */ 1459e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, TransferKeyEventForConsumed03, Function | SmallTest | Level2) 1460e0dac50fSopenharmony_ci{ 1461e0dac50fSopenharmony_ci ASSERT_NE(session_, nullptr); 1462e0dac50fSopenharmony_ci 1463e0dac50fSopenharmony_ci session_->windowEventChannel_ = new TestWindowEventChannel(); 1464e0dac50fSopenharmony_ci 1465e0dac50fSopenharmony_ci std::shared_ptr<MMI::KeyEvent> keyEvent = MMI::KeyEvent::Create(); 1466e0dac50fSopenharmony_ci bool isConsumed = false; 1467e0dac50fSopenharmony_ci ASSERT_EQ(WSError::WS_OK, session_->TransferKeyEventForConsumed(keyEvent, isConsumed)); 1468e0dac50fSopenharmony_ci} 1469e0dac50fSopenharmony_ci 1470e0dac50fSopenharmony_ci/** 1471e0dac50fSopenharmony_ci * @tc.name: SetCompatibleModeInPc 1472e0dac50fSopenharmony_ci * @tc.desc: SetCompatibleModeInPc test 1473e0dac50fSopenharmony_ci * @tc.type: FUNC 1474e0dac50fSopenharmony_ci */ 1475e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetCompatibleModeInPc, Function | SmallTest | Level2) 1476e0dac50fSopenharmony_ci{ 1477e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new (std::nothrow) WindowSessionProperty(); 1478e0dac50fSopenharmony_ci ASSERT_NE(nullptr, property); 1479e0dac50fSopenharmony_ci bool enable = true; 1480e0dac50fSopenharmony_ci bool isSupportDragInPcCompatibleMode = true; 1481e0dac50fSopenharmony_ci property->SetCompatibleModeInPc(enable); 1482e0dac50fSopenharmony_ci ASSERT_EQ(property->GetCompatibleModeInPc(), true); 1483e0dac50fSopenharmony_ci property->SetIsSupportDragInPcCompatibleMode(isSupportDragInPcCompatibleMode);; 1484e0dac50fSopenharmony_ci ASSERT_EQ(property->GetIsSupportDragInPcCompatibleMode(), true); 1485e0dac50fSopenharmony_ci} 1486e0dac50fSopenharmony_ci 1487e0dac50fSopenharmony_ci/** 1488e0dac50fSopenharmony_ci * @tc.name: UpdateMaximizeMode 1489e0dac50fSopenharmony_ci * @tc.desc: UpdateMaximizeMode test 1490e0dac50fSopenharmony_ci * @tc.type: FUNC 1491e0dac50fSopenharmony_ci */ 1492e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, UpdateMaximizeMode, Function | SmallTest | Level2) 1493e0dac50fSopenharmony_ci{ 1494e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new (std::nothrow) SessionStageMocker(); 1495e0dac50fSopenharmony_ci EXPECT_NE(mockSessionStage, nullptr); 1496e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1497e0dac50fSopenharmony_ci 1498e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1499e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_ACTIVE; 1500e0dac50fSopenharmony_ci auto ret = session_->UpdateMaximizeMode(true); 1501e0dac50fSopenharmony_ci ASSERT_EQ(ret, WSError::WS_OK); 1502e0dac50fSopenharmony_ci 1503e0dac50fSopenharmony_ci sptr<WindowSessionProperty> property = new (std::nothrow) WindowSessionProperty(); 1504e0dac50fSopenharmony_ci ASSERT_NE(property, nullptr); 1505e0dac50fSopenharmony_ci property->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 1506e0dac50fSopenharmony_ci session_->SetSessionProperty(property); 1507e0dac50fSopenharmony_ci ret = session_->UpdateMaximizeMode(false); 1508e0dac50fSopenharmony_ci ASSERT_EQ(ret, WSError::WS_OK); 1509e0dac50fSopenharmony_ci 1510e0dac50fSopenharmony_ci session_->SetSessionProperty(nullptr); 1511e0dac50fSopenharmony_ci ret = session_->UpdateMaximizeMode(false); 1512e0dac50fSopenharmony_ci ASSERT_EQ(ret, WSError::WS_ERROR_NULLPTR); 1513e0dac50fSopenharmony_ci} 1514e0dac50fSopenharmony_ci 1515e0dac50fSopenharmony_ci/** 1516e0dac50fSopenharmony_ci * @tc.name: UpdateTitleInTargetPos 1517e0dac50fSopenharmony_ci * @tc.desc: UpdateTitleInTargetPos test 1518e0dac50fSopenharmony_ci * @tc.type: FUNC 1519e0dac50fSopenharmony_ci */ 1520e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, UpdateTitleInTargetPos, Function | SmallTest | Level2) 1521e0dac50fSopenharmony_ci{ 1522e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new (std::nothrow) SessionStageMocker(); 1523e0dac50fSopenharmony_ci EXPECT_NE(mockSessionStage, nullptr); 1524e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1525e0dac50fSopenharmony_ci 1526e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1527e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1528e0dac50fSopenharmony_ci auto ret = session_->UpdateTitleInTargetPos(true, 20); 1529e0dac50fSopenharmony_ci ASSERT_NE(ret, WSError::WS_ERROR_INVALID_SESSION); 1530e0dac50fSopenharmony_ci} 1531e0dac50fSopenharmony_ci 1532e0dac50fSopenharmony_ci/** 1533e0dac50fSopenharmony_ci * @tc.name: SwitchFreeMultiWindow 1534e0dac50fSopenharmony_ci * @tc.desc: SwitchFreeMultiWindow test 1535e0dac50fSopenharmony_ci * @tc.type: FUNC 1536e0dac50fSopenharmony_ci */ 1537e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SwitchFreeMultiWindow, Function | SmallTest | Level2) 1538e0dac50fSopenharmony_ci{ 1539e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new (std::nothrow) SessionStageMocker(); 1540e0dac50fSopenharmony_ci EXPECT_NE(mockSessionStage, nullptr); 1541e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1542e0dac50fSopenharmony_ci 1543e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1544e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1545e0dac50fSopenharmony_ci auto ret = session_->SwitchFreeMultiWindow(true); 1546e0dac50fSopenharmony_ci ASSERT_NE(ret, WSError::WS_ERROR_INVALID_SESSION); 1547e0dac50fSopenharmony_ci 1548e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = true; 1549e0dac50fSopenharmony_ci ret = session_->SwitchFreeMultiWindow(true); 1550e0dac50fSopenharmony_ci ASSERT_EQ(ret, WSError::WS_ERROR_INVALID_SESSION); 1551e0dac50fSopenharmony_ci} 1552e0dac50fSopenharmony_ci 1553e0dac50fSopenharmony_ci/** 1554e0dac50fSopenharmony_ci * @tc.name: SetTouchHotAreas 1555e0dac50fSopenharmony_ci * @tc.desc: SetTouchHotAreas test 1556e0dac50fSopenharmony_ci * @tc.type: FUNC 1557e0dac50fSopenharmony_ci */ 1558e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetTouchHotAreas, Function | SmallTest | Level2) 1559e0dac50fSopenharmony_ci{ 1560e0dac50fSopenharmony_ci session_->SetSessionProperty(nullptr); 1561e0dac50fSopenharmony_ci std::vector<Rect> touchHotAreas; 1562e0dac50fSopenharmony_ci session_->SetTouchHotAreas(touchHotAreas); 1563e0dac50fSopenharmony_ci ASSERT_EQ(session_->property_, nullptr); 1564e0dac50fSopenharmony_ci 1565e0dac50fSopenharmony_ci session_->property_ = new WindowSessionProperty(); 1566e0dac50fSopenharmony_ci touchHotAreas = session_->property_->touchHotAreas_; 1567e0dac50fSopenharmony_ci session_->property_->SetTouchHotAreas(touchHotAreas); 1568e0dac50fSopenharmony_ci ASSERT_EQ(touchHotAreas, session_->property_->touchHotAreas_); 1569e0dac50fSopenharmony_ci} 1570e0dac50fSopenharmony_ci 1571e0dac50fSopenharmony_ci/** 1572e0dac50fSopenharmony_ci * @tc.name: NotifyOccupiedAreaChangeInfo 1573e0dac50fSopenharmony_ci * @tc.desc: NotifyOccupiedAreaChangeInfo test 1574e0dac50fSopenharmony_ci * @tc.type: FUNC 1575e0dac50fSopenharmony_ci */ 1576e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, NotifyOccupiedAreaChangeInfo, Function | SmallTest | Level2) 1577e0dac50fSopenharmony_ci{ 1578e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new (std::nothrow) SessionStageMocker(); 1579e0dac50fSopenharmony_ci EXPECT_NE(mockSessionStage, nullptr); 1580e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1581e0dac50fSopenharmony_ci session_->NotifyOccupiedAreaChangeInfo(nullptr, nullptr); 1582e0dac50fSopenharmony_ci EXPECT_NE(session_->sessionStage_, nullptr); 1583e0dac50fSopenharmony_ci} 1584e0dac50fSopenharmony_ci 1585e0dac50fSopenharmony_ci/** 1586e0dac50fSopenharmony_ci * @tc.name: ProcessBackEvent 1587e0dac50fSopenharmony_ci * @tc.desc: ProcessBackEvent test 1588e0dac50fSopenharmony_ci * @tc.type: FUNC 1589e0dac50fSopenharmony_ci */ 1590e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, ProcessBackEvent, Function | SmallTest | Level2) 1591e0dac50fSopenharmony_ci{ 1592e0dac50fSopenharmony_ci sptr<SessionStageMocker> mockSessionStage = new (std::nothrow) SessionStageMocker(); 1593e0dac50fSopenharmony_ci EXPECT_NE(mockSessionStage, nullptr); 1594e0dac50fSopenharmony_ci session_->sessionStage_ = mockSessionStage; 1595e0dac50fSopenharmony_ci 1596e0dac50fSopenharmony_ci session_->sessionInfo_.isSystem_ = false; 1597e0dac50fSopenharmony_ci session_->state_ = SessionState::STATE_FOREGROUND; 1598e0dac50fSopenharmony_ci auto ret = session_->ProcessBackEvent(); 1599e0dac50fSopenharmony_ci ASSERT_NE(ret, WSError::WS_ERROR_INVALID_SESSION); 1600e0dac50fSopenharmony_ci} 1601e0dac50fSopenharmony_ci 1602e0dac50fSopenharmony_ci/** 1603e0dac50fSopenharmony_ci * @tc.name: ProcessBackGetAndSetSessionRequestRectEvent 1604e0dac50fSopenharmony_ci * @tc.desc: GetSessionRequestRectEvent, SetSessionRequestRectEvent test 1605e0dac50fSopenharmony_ci * @tc.type: FUNC 1606e0dac50fSopenharmony_ci */ 1607e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, GetAndSetSessionRequestRect, Function | SmallTest | Level2) 1608e0dac50fSopenharmony_ci{ 1609e0dac50fSopenharmony_ci session_->SetSessionProperty(nullptr); 1610e0dac50fSopenharmony_ci session_->GetSessionRequestRect(); 1611e0dac50fSopenharmony_ci ASSERT_EQ(session_->property_, nullptr); 1612e0dac50fSopenharmony_ci 1613e0dac50fSopenharmony_ci WSRect rect = {0, 0, 0, 0}; 1614e0dac50fSopenharmony_ci session_->SetSessionRequestRect(rect); 1615e0dac50fSopenharmony_ci ASSERT_EQ(session_->property_, nullptr); 1616e0dac50fSopenharmony_ci} 1617e0dac50fSopenharmony_ci 1618e0dac50fSopenharmony_ci/** 1619e0dac50fSopenharmony_ci * @tc.name: SetSessionRect01 1620e0dac50fSopenharmony_ci * @tc.desc: SetSessionRect test 1621e0dac50fSopenharmony_ci * @tc.type: FUNC 1622e0dac50fSopenharmony_ci */ 1623e0dac50fSopenharmony_ciHWTEST_F(WindowSessionTest, SetSessionRect01, Function | SmallTest | Level2) 1624e0dac50fSopenharmony_ci{ 1625e0dac50fSopenharmony_ci WSRect rect = session_->GetSessionRect(); 1626e0dac50fSopenharmony_ci session_->SetSessionRect(rect); 1627e0dac50fSopenharmony_ci ASSERT_EQ(rect, session_->winRect_); 1628e0dac50fSopenharmony_ci} 1629e0dac50fSopenharmony_ci} 1630e0dac50fSopenharmony_ci} // namespace Rosen 1631e0dac50fSopenharmony_ci} // namespace OHOS 1632