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