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