1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include "session_manager.h"
18 #include <iservice_registry.h>
19 #include <system_ability_definition.h>
20 #include <ipc_skeleton.h>
21 #include "session_manager_lite.h"
22 #include "session_manager_service_recover_interface.h"
23 #include "singleton_delegator.h"
24 #include "window_manager_hilog.h"
25
26 using namespace testing;
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace Rosen {
31 class SessionManagerLiteTest : public testing::Test {
32 public:
33 static void SetUpTestCase();
34 static void TearDownTestCase();
35 void SetUp() override;
36 void TearDown() override;
37 };
38
SetUpTestCase()39 void SessionManagerLiteTest::SetUpTestCase()
40 {
41 }
42
TearDownTestCase()43 void SessionManagerLiteTest::TearDownTestCase()
44 {
45 }
46
SetUp()47 void SessionManagerLiteTest::SetUp()
48 {
49 }
50
TearDown()51 void SessionManagerLiteTest::TearDown()
52 {
53 }
54
55 namespace {
56 /**
57 * @tc.name: ClearSessionManagerProxy
58 * @tc.desc: normal function
59 * @tc.type: FUNC
60 */
61 HWTEST_F(SessionManagerLiteTest, ClearSessionManagerProxy, Function | SmallTest | Level2)
62 {
63 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
64 sessionManagerLite.ClearSessionManagerProxy();
65 sessionManagerLite.GetSessionManagerServiceProxy();
66
67 sessionManagerLite.ClearSessionManagerProxy();
68 sessionManagerLite.Clear();
69 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
70 }
71 /**
72 * @tc.name: RecoverSessionManagerService
73 * @tc.desc: normal function
74 * @tc.type: FUNC
75 */
76 HWTEST_F(SessionManagerLiteTest, RecoverSessionManagerService, Function | SmallTest | Level2)
77 {
78 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
79 sessionManagerLite.RecoverSessionManagerService(nullptr);
80 sessionManagerLite.ClearSessionManagerProxy();
81 sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
82 sessionManagerLite.RecoverSessionManagerService(sessionManagerService);
83
84 sessionManagerLite.ClearSessionManagerProxy();
85 sessionManagerLite.Clear();
86 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
87 }
88 /**
89 * @tc.name: ReregisterSessionListener
90 * @tc.desc: normal function
91 * @tc.type: FUNC
92 */
93 HWTEST_F(SessionManagerLiteTest, ReregisterSessionListener, Function | SmallTest | Level2)
94 {
95 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
96 sessionManagerLite.ReregisterSessionListener();
97 sessionManagerLite.GetSessionManagerServiceProxy();
98 sessionManagerLite.ReregisterSessionListener();
99
100 sessionManagerLite.ClearSessionManagerProxy();
101 sessionManagerLite.Clear();
102 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
103 }
104 /**
105 * @tc.name: OnWMSConnectionChanged
106 * @tc.desc: normal function
107 * @tc.type: FUNC
108 */
109 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged01, Function | SmallTest | Level2)
110 {
111 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
112 sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
113 sessionManagerLite.OnWMSConnectionChanged(100, 100, true, sessionManagerService);
114
115 sessionManagerLite.ClearSessionManagerProxy();
116 sessionManagerLite.Clear();
117 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
118 }
119 /**
120 * @tc.name: OnWMSConnectionChanged
121 * @tc.desc: normal function
122 * @tc.type: FUNC
123 */
124 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged02, Function | SmallTest | Level2)
125 {
126 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
127 sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
128 sessionManagerLite.OnWMSConnectionChanged(100, 100, false, sessionManagerService);
129
130 sessionManagerLite.ClearSessionManagerProxy();
131 sessionManagerLite.Clear();
132 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
133 }
134 /**
135 * @tc.name: OnWMSConnectionChanged
136 * @tc.desc: normal function
137 * @tc.type: FUNC
138 */
139 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged03, Function | SmallTest | Level2)
140 {
141 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
142 sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
143 sessionManagerLite.OnWMSConnectionChanged(-1, -1, true, sessionManagerService);
144
145 sessionManagerLite.ClearSessionManagerProxy();
146 sessionManagerLite.Clear();
147 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
148 }
149 /**
150 * @tc.name: OnWMSConnectionChanged
151 * @tc.desc: normal function
152 * @tc.type: FUNC
153 */
154 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged04, Function | SmallTest | Level2)
155 {
156 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
157 sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
158 sessionManagerLite.OnWMSConnectionChanged(-1, -1, false, sessionManagerService);
159
160 sessionManagerLite.ClearSessionManagerProxy();
161 sessionManagerLite.Clear();
162 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
163 }
164 /**
165 * @tc.name: InitSceneSessionManagerLiteProxy
166 * @tc.desc: normal function
167 * @tc.type: FUNC
168 */
169 HWTEST_F(SessionManagerLiteTest, InitSceneSessionManagerLiteProxy01, Function | SmallTest | Level2)
170 {
171 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
172 sessionManagerLite.InitSceneSessionManagerLiteProxy();
173 sessionManagerLite.InitSceneSessionManagerLiteProxy();
174
175 sessionManagerLite.ClearSessionManagerProxy();
176 sessionManagerLite.Clear();
177 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
178 }
179 /**
180 * @tc.name: InitSceneSessionManagerLiteProxy
181 * @tc.desc: normal function
182 * @tc.type: FUNC
183 */
184 HWTEST_F(SessionManagerLiteTest, InitSceneSessionManagerLiteProxy02, Function | SmallTest | Level2)
185 {
186 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
187 sessionManagerLite.GetSceneSessionManagerLiteProxy();
188 sessionManagerLite.InitSceneSessionManagerLiteProxy();
189
190 sessionManagerLite.ClearSessionManagerProxy();
191 sessionManagerLite.Clear();
192 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
193 }
194 /**
195 * @tc.name: InitSceneSessionManagerLiteProxy
196 * @tc.desc: normal function
197 * @tc.type: FUNC
198 */
199 HWTEST_F(SessionManagerLiteTest, InitSceneSessionManagerLiteProxy03, Function | SmallTest | Level2)
200 {
201 SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
202 sessionManagerLite.GetSessionManagerServiceProxy();
203 sessionManagerLite.InitSceneSessionManagerLiteProxy();
204 sessionManagerLite.InitSceneSessionManagerLiteProxy();
205
206 sessionManagerLite.ClearSessionManagerProxy();
207 sessionManagerLite.Clear();
208 ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
209 }
210
211 /**
212 * @tc.name: OnWMSConnectionChangedCallback
213 * @tc.desc: normal function
214 * @tc.type: FUNC
215 */
216 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChangedCallback, Function | SmallTest | Level2)
217 {
218 SessionManagerLite sessionManagerLite;
219 sessionManagerLite.wmsConnectionChangedFunc_ = nullptr;
220 sessionManagerLite.OnWMSConnectionChangedCallback(0, 0, true, false);
221
222 int32_t userId = 2;
223 int32_t screenId = 0;
224 bool isConnected = true;
225 sessionManagerLite.currentWMSUserId_ = SYSTEM_USERID;
226 sessionManagerLite.OnWMSConnectionChanged(userId, screenId, isConnected, nullptr);
227
228 sessionManagerLite.ClearSessionManagerProxy();
229
230 sptr<ISessionManagerService> sessionManagerService;
231 sessionManagerLite.RecoverSessionManagerService(sessionManagerService);
__anoneb7b977c0202() 232 sessionManagerLite.RegisterUserSwitchListener([]() {});
233 sessionManagerLite.OnUserSwitch(sessionManagerService);
234 sessionManagerLite.Clear();
235
236 sessionManagerLite.isWMSConnected_ = true;
237 sessionManagerLite.currentWMSUserId_ = SYSTEM_USERID;
238 SessionManagerLite::WMSConnectionChangedCallbackFunc callbackFunc;
239 auto ret = sessionManagerLite.RegisterWMSConnectionChangedListener(callbackFunc);
240 ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
241 }
242
243 /**
244 * @tc.name: RegisterWMSConnectionChangedListener
245 * @tc.desc: normal function
246 * @tc.type: FUNC
247 */
248 HWTEST_F(SessionManagerLiteTest, RegisterWMSConnectionChangedListener, Function | SmallTest | Level2)
249 {
250 SessionManagerLite sessionManagerLite;
251 sessionManagerLite.OnFoundationDied();
252 FoundationDeathRecipientLite foundationDeathRecipientLite;
253 wptr<IRemoteObject> wptrDeath = nullptr;
254 foundationDeathRecipientLite.OnRemoteDied(wptrDeath);
255
256 SSMDeathRecipient sSMDeathRecipient;
257 sSMDeathRecipient.OnRemoteDied(wptrDeath);
258 SessionManagerLite::WMSConnectionChangedCallbackFunc callbackFunc;
259 auto ret = sessionManagerLite.RegisterWMSConnectionChangedListener(callbackFunc);
260 ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
261 }
262 }
263 }
264 }