1 /*
2 * Copyright (c) 2023 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/include/extension_session_manager.h"
18 #include "session/host/include/extension_session.h"
19 #include "window_manager_hilog.h"
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 namespace OHOS {
25 namespace Rosen {
26 class ExtensionSessionManagerTest : public testing::Test {
27 public:
28 static void SetUpTestCase();
29 static void TearDownTestCase();
30 void SetUp() override;
31 void TearDown() override;
32 private:
33 static constexpr uint32_t WAIT_SYNC_IN_NS = 200000;
34 };
35
SetUpTestCase()36 void ExtensionSessionManagerTest::SetUpTestCase()
37 {
38 }
39
TearDownTestCase()40 void ExtensionSessionManagerTest::TearDownTestCase()
41 {
42 }
43
SetUp()44 void ExtensionSessionManagerTest::SetUp()
45 {
46 }
47
TearDown()48 void ExtensionSessionManagerTest::TearDown()
49 {
50 }
51
52 namespace {
53 /**
54 * @tc.name: RequestExtensionSession
55 * @tc.desc: RequestExtensionSession Test
56 * @tc.type: FUNC
57 */
58 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSession, Function | MediumTest | Level2)
59 {
60 SessionInfo sessionInfo;
61 sessionInfo.abilityName_ = "RequestExtensionSession";
62 ASSERT_NE(nullptr, ExtensionSessionManager::GetInstance().RequestExtensionSession(sessionInfo));
63 }
64
65 /**
66 * @tc.name: RequestExtensionSessionActivation01
67 * @tc.desc: RequestExtensionSessionActivation Test
68 * @tc.type: FUNC
69 */
70 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionActivation01, Function | MediumTest | Level2)
71 {
72 SessionInfo info;
73 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
74 ASSERT_EQ(WSError::WS_OK,
75 ExtensionSessionManager::GetInstance().RequestExtensionSessionBackground(extensionSession, nullptr));
76 }
77
func(WSError we)78 void func(WSError we)
79 {}
80
81 /**
82 * @tc.name: RequestExtensionSessionActivation02
83 * @tc.desc: RequestExtensionSessionActivation Test
84 * @tc.type: FUNC
85 */
86 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionActivation02, Function | MediumTest | Level2)
87 {
88 SessionInfo info;
89 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
90 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
91 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionActivation(extensionSession, 1, nullptr));
92 usleep(WAIT_SYNC_IN_NS);
93
94 instance->extensionSessionMap_[extensionSession->GetPersistentId()] = extensionSession;
95 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionActivation(extensionSession, 1, nullptr));
96 usleep(WAIT_SYNC_IN_NS);
97
98 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionActivation(extensionSession, 1, (func)));
99 usleep(WAIT_SYNC_IN_NS);
100 }
101
102 /**
103 * @tc.name: RequestExtensionSessionBackground01
104 * @tc.desc: RequestExtensionSessionBackground Test
105 * @tc.type: FUNC
106 */
107 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionBackground01, Function | MediumTest | Level2)
108 {
109 SessionInfo info;
110 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
111 ASSERT_EQ(WSError::WS_OK,
112 ExtensionSessionManager::GetInstance().RequestExtensionSessionBackground(extensionSession, nullptr));
113 }
114
115 /**
116 * @tc.name: RequestExtensionSessionBackground02
117 * @tc.desc: RequestExtensionSessionBackground Test
118 * @tc.type: FUNC
119 */
120 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionBackground02, Function | MediumTest | Level2)
121 {
122 SessionInfo info;
123 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
124 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
125 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionBackground(extensionSession, nullptr));
126 usleep(WAIT_SYNC_IN_NS);
127
128 instance->extensionSessionMap_[extensionSession->GetPersistentId()] = extensionSession;
129 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionBackground(extensionSession, nullptr));
130 usleep(WAIT_SYNC_IN_NS);
131
132 instance->extensionSessionMap_[extensionSession->GetPersistentId()] = extensionSession;
133 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionBackground(extensionSession, func));
134 usleep(WAIT_SYNC_IN_NS);
135 }
136
137 /**
138 * @tc.name: RequestExtensionSessionDestruction01
139 * @tc.desc: RequestExtensionSessionDestruction Test
140 * @tc.type: FUNC
141 */
142 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestruction01, Function | MediumTest | Level2)
143 {
144 SessionInfo info;
145 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
146 ASSERT_EQ(WSError::WS_OK,
147 ExtensionSessionManager::GetInstance().RequestExtensionSessionDestruction(extensionSession, nullptr));
148 }
149
150 /**
151 * @tc.name: RequestExtensionSessionDestructionDone01
152 * @tc.desc: RequestExtensionSessionDestructionDone Test
153 * @tc.type: FUNC
154 */
155 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestructionDone01, Function | MediumTest | Level2)
156 {
157 SessionInfo info;
158 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
159 ASSERT_EQ(WSError::WS_OK,
160 ExtensionSessionManager::GetInstance().RequestExtensionSessionDestructionDone(extensionSession));
161 }
162
163 /**
164 * @tc.name: RequestExtensionSessionDestruction03
165 * @tc.desc: RequestExtensionSessionDestruction Test
166 * @tc.type: FUNC
167 */
168 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestruction03, Function | MediumTest | Level2)
169 {
170 SessionInfo info;
171 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
172 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
173 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestruction(extensionSession, nullptr));
174 usleep(WAIT_SYNC_IN_NS);
175
176 instance->extensionSessionMap_[extensionSession->GetPersistentId()] = extensionSession;
177 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestruction(extensionSession, nullptr));
178 usleep(WAIT_SYNC_IN_NS);
179
180 instance->extensionSessionMap_[extensionSession->GetPersistentId()] = extensionSession;
181 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestruction(extensionSession, func));
182 usleep(WAIT_SYNC_IN_NS);
183 }
184
185 /**
186 * @tc.name: RequestExtensionSessionDestructionDone03
187 * @tc.desc: RequestExtensionSessionDestructionDone Test
188 * @tc.type: FUNC
189 */
190 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestructionDone03, Function | MediumTest | Level2)
191 {
192 SessionInfo info;
193 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
194 ExtensionSessionManager* instance = &ExtensionSessionManager::GetInstance();
195 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestructionDone(extensionSession));
196 usleep(WAIT_SYNC_IN_NS);
197
198 instance->extensionSessionMap_[extensionSession->GetPersistentId()] = extensionSession;
199 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestructionDone(extensionSession));
200 usleep(WAIT_SYNC_IN_NS);
201 }
202
203 /**
204 * @tc.name: GetInstance
205 * @tc.desc: ExtensionSessionManager get instance and init
206 * @tc.type: FUNC
207 */
208 HWTEST_F(ExtensionSessionManagerTest, GetInstance, Function | MediumTest | Level2)
209 {
210 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
211 ASSERT_NE(nullptr, instance);
212 }
213
214 /**
215 * @tc.name: SetAbilitySessionInfo
216 * @tc.desc: ExtensionSessionManager set ability session info
217 * @tc.type: FUNC
218 */
219 HWTEST_F(ExtensionSessionManagerTest, SetAbilitySessionInfo, Function | MediumTest | Level2)
220 {
221 AAFwk::Want want;
222 SessionInfo infoInput;
223 infoInput.want = std::make_shared<AAFwk::Want>(want);
224 sptr<ExtensionSession> extSession = new ExtensionSession(infoInput);
225 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
226 sptr<AAFwk::SessionInfo> result = instance->SetAbilitySessionInfo(extSession);
227 int32_t persistentId = extSession->GetPersistentId();
228 ASSERT_EQ(result->persistentId, persistentId);
229
230 result = instance->SetAbilitySessionInfo(extSession);
231 extSession->sessionInfo_.want = nullptr;
232 ASSERT_EQ(result->persistentId, persistentId);
233 }
234
235 /**
236 * @tc.name: RequestExtensionSessionDestruction02
237 * @tc.desc: RequestExtensionSessionDestruction Test
238 * @tc.type: FUNC
239 */
240 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestruction02, Function | MediumTest | Level2)
241 {
242 AAFwk::Want want;
243 SessionInfo infoInput;
244 infoInput.want = std::make_shared<AAFwk::Want>(want);
245 sptr<ExtensionSession> extSession = nullptr;
246 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
247 WSError result01 = instance->RequestExtensionSessionDestruction(extSession, nullptr);
248 EXPECT_EQ(result01, WSError::WS_OK);
249 }
250
251 /**
252 * @tc.name: RequestExtensionSessionDestructionDone02
253 * @tc.desc: RequestExtensionSessionDestructionDone Test
254 * @tc.type: FUNC
255 */
256 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestructionDone02, Function | MediumTest | Level2)
257 {
258 AAFwk::Want want;
259 SessionInfo infoInput;
260 infoInput.want = std::make_shared<AAFwk::Want>(want);
261 sptr<ExtensionSession> extSession = nullptr;
262 ExtensionSessionManager* instance = &ExtensionSessionManager::GetInstance();
263 WSError result01 = instance->RequestExtensionSessionDestructionDone(extSession);
264 EXPECT_EQ(result01, WSError::WS_OK);
265 }
266 } // namespace
267 } // namespace Rosen
268 } // namespace OHOS
269