• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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