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 = sptr<ExtensionSession>::MakeSptr(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 = sptr<ExtensionSession>::MakeSptr(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 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionActivation(extensionSession, 1, (func)));
95 usleep(WAIT_SYNC_IN_NS);
96
97 extensionSession->persistentId_ = -1;
98 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionActivation(extensionSession, 1, nullptr));
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 = sptr<ExtensionSession>::MakeSptr(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 = sptr<ExtensionSession>::MakeSptr(info);
124 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
125 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionBackground(extensionSession, nullptr));
126 usleep(WAIT_SYNC_IN_NS);
127
128 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionBackground(extensionSession, func));
129 usleep(WAIT_SYNC_IN_NS);
130
131 extensionSession->persistentId_ = -1;
132 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionBackground(extensionSession, nullptr));
133 usleep(WAIT_SYNC_IN_NS);
134 }
135
136 /**
137 * @tc.name: RequestExtensionSessionDestruction01
138 * @tc.desc: RequestExtensionSessionDestruction Test
139 * @tc.type: FUNC
140 */
141 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestruction01, Function | MediumTest | Level2)
142 {
143 SessionInfo info;
144 sptr<ExtensionSession> extensionSession = sptr<ExtensionSession>::MakeSptr(info);
145 ASSERT_EQ(WSError::WS_OK,
146 ExtensionSessionManager::GetInstance().RequestExtensionSessionDestruction(extensionSession, nullptr));
147 }
148
149 /**
150 * @tc.name: RequestExtensionSessionDestructionDone01
151 * @tc.desc: RequestExtensionSessionDestructionDone Test
152 * @tc.type: FUNC
153 */
154 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestructionDone01, Function | MediumTest | Level2)
155 {
156 SessionInfo info;
157 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
158 ASSERT_EQ(WSError::WS_OK,
159 ExtensionSessionManager::GetInstance().RequestExtensionSessionDestructionDone(extensionSession));
160 }
161
162 /**
163 * @tc.name: RequestExtensionSessionDestruction03
164 * @tc.desc: RequestExtensionSessionDestruction Test
165 * @tc.type: FUNC
166 */
167 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestruction03, Function | MediumTest | Level2)
168 {
169 SessionInfo info;
170 sptr<ExtensionSession> extensionSession = sptr<ExtensionSession>::MakeSptr(info);
171 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
172 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestruction(extensionSession, nullptr));
173 usleep(WAIT_SYNC_IN_NS);
174
175 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestruction(extensionSession, func));
176 usleep(WAIT_SYNC_IN_NS);
177
178 extensionSession->persistentId_ = -1;
179 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestruction(extensionSession, nullptr));
180 usleep(WAIT_SYNC_IN_NS);
181 }
182
183 /**
184 * @tc.name: RequestExtensionSessionDestructionDone03
185 * @tc.desc: RequestExtensionSessionDestructionDone Test
186 * @tc.type: FUNC
187 */
188 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestructionDone03, Function | MediumTest | Level2)
189 {
190 SessionInfo info;
191 sptr<ExtensionSession> extensionSession = new ExtensionSession(info);
192 ExtensionSessionManager* instance = &ExtensionSessionManager::GetInstance();
193 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestructionDone(extensionSession));
194 usleep(WAIT_SYNC_IN_NS);
195
196 extensionSession->persistentId_ = -1;
197 ASSERT_EQ(WSError::WS_OK, instance->RequestExtensionSessionDestructionDone(extensionSession));
198 usleep(WAIT_SYNC_IN_NS);
199 }
200
201 /**
202 * @tc.name: GetInstance
203 * @tc.desc: ExtensionSessionManager get instance and init
204 * @tc.type: FUNC
205 */
206 HWTEST_F(ExtensionSessionManagerTest, GetInstance, Function | MediumTest | Level2)
207 {
208 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
209 ASSERT_NE(nullptr, instance);
210 }
211
212 /**
213 * @tc.name: SetAbilitySessionInfo
214 * @tc.desc: ExtensionSessionManager set ability session info
215 * @tc.type: FUNC
216 */
217 HWTEST_F(ExtensionSessionManagerTest, SetAbilitySessionInfo, Function | MediumTest | Level2)
218 {
219 AAFwk::Want want;
220 SessionInfo infoInput;
221 infoInput.want = std::make_shared<AAFwk::Want>(want);
222 sptr<ExtensionSession> extSession = new ExtensionSession(infoInput);
223 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
224 sptr<AAFwk::SessionInfo> result = instance->SetAbilitySessionInfo(extSession);
225 int32_t persistentId = extSession->GetPersistentId();
226 ASSERT_EQ(result->persistentId, persistentId);
227
228 result = instance->SetAbilitySessionInfo(extSession);
229 extSession->sessionInfo_.want = nullptr;
230 ASSERT_EQ(result->persistentId, persistentId);
231 }
232
233 /**
234 * @tc.name: RequestExtensionSessionDestruction02
235 * @tc.desc: RequestExtensionSessionDestruction Test
236 * @tc.type: FUNC
237 */
238 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestruction02, Function | MediumTest | Level2)
239 {
240 AAFwk::Want want;
241 SessionInfo infoInput;
242 infoInput.want = std::make_shared<AAFwk::Want>(want);
243 sptr<ExtensionSession> extSession = nullptr;
244 ExtensionSessionManager *instance = &ExtensionSessionManager::GetInstance();
245 WSError result01 = instance->RequestExtensionSessionDestruction(extSession, nullptr);
246 EXPECT_EQ(result01, WSError::WS_OK);
247 }
248
249 /**
250 * @tc.name: RequestExtensionSessionDestructionDone02
251 * @tc.desc: RequestExtensionSessionDestructionDone Test
252 * @tc.type: FUNC
253 */
254 HWTEST_F(ExtensionSessionManagerTest, RequestExtensionSessionDestructionDone02, Function | MediumTest | Level2)
255 {
256 AAFwk::Want want;
257 SessionInfo infoInput;
258 infoInput.want = std::make_shared<AAFwk::Want>(want);
259 sptr<ExtensionSession> extSession = nullptr;
260 ExtensionSessionManager* instance = &ExtensionSessionManager::GetInstance();
261 WSError result01 = instance->RequestExtensionSessionDestructionDone(extSession);
262 EXPECT_EQ(result01, WSError::WS_OK);
263 }
264 } // namespace
265 } // namespace Rosen
266 } // namespace OHOS
267