1 /*
2 * Copyright (c) 2021-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 <memory>
18
19 #define private public
20 #define protected public
21 #include "ability_connect_manager.h"
22 #undef private
23 #undef protected
24
25 #include "ability_config.h"
26 #include "ability_manager_errors.h"
27 #include "ability_scheduler.h"
28 #include "ability_util.h"
29 #include "bundlemgr/mock_bundle_manager.h"
30 #include "hilog_tag_wrapper.h"
31 #include "mock_ability_connect_callback.h"
32 #include "mock_sa_call.h"
33 #include "mock_task_handler_wrap.h"
34 #include "sa_mgr_client.h"
35 #include "system_ability_definition.h"
36 #include <thread>
37 #include <chrono>
38
39 using namespace testing::ext;
40 using namespace OHOS::AppExecFwk;
41 using testing::_;
42 using testing::Invoke;
43 using testing::Return;
44 using testing::SetArgReferee;
45 using ::testing::DoAll;
46
47 namespace {
48 const int32_t SLEEP_TIME = 10000;
49 }
50
51 namespace OHOS {
52 namespace AAFwk {
53 template<typename F>
WaitUntilTaskCalled(const F & f,const std::shared_ptr<TaskHandlerWrap> & handler,std::atomic<bool> & taskCalled)54 static void WaitUntilTaskCalled(const F& f, const std::shared_ptr<TaskHandlerWrap>& handler,
55 std::atomic<bool>& taskCalled)
56 {
57 const uint32_t maxRetryCount = 1000;
58 const uint32_t sleepTime = 1000;
59 uint32_t count = 0;
60 if (handler->SubmitTask(f)) {
61 while (!taskCalled.load()) {
62 ++count;
63 // if delay more than 1 second, break
64 if (count >= maxRetryCount) {
65 break;
66 }
67 usleep(sleepTime);
68 }
69 }
70 }
71
WaitUntilTaskDone(const std::shared_ptr<TaskHandlerWrap> & handler)72 static void WaitUntilTaskDone(const std::shared_ptr<TaskHandlerWrap>& handler)
73 {
74 std::atomic<bool> taskCalled(false);
75 auto f = [&taskCalled]() { taskCalled.store(true); };
76 WaitUntilTaskCalled(f, handler, taskCalled);
77 }
78
79 class AbilityConnectManagerTest : public testing::Test {
80 public:
81 static void SetUpTestCase(void);
82 static void TearDownTestCase(void);
83 void SetUp();
84 void TearDown();
85
86 AbilityConnectManager* ConnectManager() const;
87 std::shared_ptr<MockTaskHandlerWrap> TaskHandler() const;
88 std::shared_ptr<EventHandlerWrap> EventHandler() const;
89
90 AbilityRequest GenerateAbilityRequest(const std::string& deviceName, const std::string& abilityName,
91 const std::string& appName, const std::string& bundleName, const std::string& moduleName);
92
93 static constexpr int TEST_WAIT_TIME = 1000000;
94
95 sptr<SessionInfo> MockSessionInfo(int32_t persistentId);
96 std::shared_ptr<AbilityRecord> InitAbilityRecord();
97 std::shared_ptr<MockTaskHandlerWrap> taskHandler_;
98
99 protected:
100 AbilityRequest abilityRequest_{};
101 AbilityRequest abilityRequest1_{};
102 AbilityRequest abilityRequest2_{};
103 std::shared_ptr<AbilityRecord> serviceRecord_{ nullptr };
104 std::shared_ptr<AbilityRecord> serviceRecord1_{ nullptr };
105 std::shared_ptr<AbilityRecord> serviceRecord2_{ nullptr };
106 OHOS::sptr<Token> serviceToken_{ nullptr };
107 OHOS::sptr<Token> serviceToken1_{ nullptr };
108 OHOS::sptr<Token> serviceToken2_{ nullptr };
109 OHOS::sptr<IAbilityConnection> callbackA_{ nullptr };
110 OHOS::sptr<IAbilityConnection> callbackB_{ nullptr };
111
112 private:
113 std::shared_ptr<AbilityConnectManager> connectManager_;
114 std::shared_ptr<EventHandlerWrap> eventHandler_;
115 };
116
GenerateAbilityRequest(const std::string & deviceName,const std::string & abilityName,const std::string & appName,const std::string & bundleName,const std::string & moduleName)117 AbilityRequest AbilityConnectManagerTest::GenerateAbilityRequest(const std::string& deviceName,
118 const std::string& abilityName, const std::string& appName, const std::string& bundleName,
119 const std::string& moduleName)
120 {
121 ElementName element(deviceName, bundleName, abilityName, moduleName);
122 Want want;
123 want.SetElement(element);
124
125 AbilityInfo abilityInfo;
126 abilityInfo.visible = true;
127 abilityInfo.applicationName = appName;
128 abilityInfo.type = AbilityType::SERVICE;
129 abilityInfo.name = abilityName;
130 abilityInfo.bundleName = bundleName;
131 abilityInfo.moduleName = moduleName;
132 abilityInfo.deviceId = deviceName;
133 ApplicationInfo appinfo;
134 appinfo.name = appName;
135 abilityInfo.applicationInfo = appinfo;
136 AbilityRequest abilityRequest;
137 abilityRequest.want = want;
138 abilityRequest.abilityInfo = abilityInfo;
139 abilityRequest.appInfo = appinfo;
140 abilityInfo.process = bundleName;
141
142 return abilityRequest;
143 }
144
MockSessionInfo(int32_t persistentId)145 sptr<SessionInfo> AbilityConnectManagerTest::MockSessionInfo(int32_t persistentId)
146 {
147 sptr<SessionInfo> sessionInfo = new (std::nothrow) SessionInfo();
148 if (!sessionInfo) {
149 TAG_LOGE(AAFwkTag::TEST, "sessionInfo is nullptr");
150 return nullptr;
151 }
152 sessionInfo->persistentId = persistentId;
153 return sessionInfo;
154 }
155
InitAbilityRecord()156 std::shared_ptr<AbilityRecord> AbilityConnectManagerTest::InitAbilityRecord()
157 {
158 AbilityRequest abilityRequest;
159 abilityRequest.appInfo.bundleName = "com.example.unittest";
160 abilityRequest.abilityInfo.name = "MainAbility";
161 abilityRequest.abilityInfo.type = AbilityType::PAGE;
162 std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
163 return abilityRecord;
164 }
165
SetUpTestCase(void)166 void AbilityConnectManagerTest::SetUpTestCase(void)
167 {}
TearDownTestCase(void)168 void AbilityConnectManagerTest::TearDownTestCase(void)
169 {
170 std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME));
171 }
172
SetUp(void)173 void AbilityConnectManagerTest::SetUp(void)
174 {
175 connectManager_ = std::make_unique<AbilityConnectManager>(0);
176 taskHandler_ = MockTaskHandlerWrap::CreateQueueHandler("AbilityConnectManagerTest");
177 eventHandler_ = std::make_shared<EventHandlerWrap>(taskHandler_);
178 // generate ability request
179 std::string deviceName = "device";
180 std::string abilityName = "ServiceAbility";
181 std::string appName = "hiservcie";
182 std::string bundleName = "com.ix.hiservcie";
183 std::string moduleName = "entry";
184 abilityRequest_ = GenerateAbilityRequest(deviceName, abilityName, appName, bundleName, moduleName);
185 serviceRecord_ = AbilityRecord::CreateAbilityRecord(abilityRequest_);
186 serviceToken_ = serviceRecord_->GetToken();
187 std::string deviceName1 = "device";
188 std::string abilityName1 = "musicServiceAbility";
189 std::string appName1 = "musicservcie";
190 std::string bundleName1 = "com.ix.musicservcie";
191 std::string moduleName1 = "entry";
192 abilityRequest1_ = GenerateAbilityRequest(deviceName1, abilityName1, appName1, bundleName1, moduleName1);
193 serviceRecord1_ = AbilityRecord::CreateAbilityRecord(abilityRequest1_);
194 std::string deviceName2 = "device";
195 std::string abilityName2 = "residentServiceAbility";
196 std::string appName2 = "residentservcie";
197 std::string bundleName2 = "com.ix.residentservcie";
198 std::string moduleName2 = "entry";
199 abilityRequest2_ = GenerateAbilityRequest(deviceName2, abilityName2, appName2, bundleName2, moduleName2);
200 serviceRecord2_ = AbilityRecord::CreateAbilityRecord(abilityRequest2_);
201 serviceToken2_ = serviceRecord_->GetToken();
202 serviceToken1_ = serviceRecord_->GetToken();
203 callbackA_ = new AbilityConnectCallback();
204 callbackB_ = new AbilityConnectCallback();
205 // mock bms
206 OHOS::DelayedSingleton<SaMgrClient>::GetInstance()->RegisterSystemAbility(
207 OHOS::BUNDLE_MGR_SERVICE_SYS_ABILITY_ID, new BundleMgrService());
208 }
209
TearDown(void)210 void AbilityConnectManagerTest::TearDown(void)
211 {
212 // reset the callback count
213 AbilityConnectCallback::onAbilityConnectDoneCount = 0;
214 AbilityConnectCallback::onAbilityDisconnectDoneCount = 0;
215 serviceRecord_ = nullptr;
216 }
217
ConnectManager() const218 AbilityConnectManager* AbilityConnectManagerTest::ConnectManager() const
219 {
220 return connectManager_.get();
221 }
222
TaskHandler() const223 std::shared_ptr<MockTaskHandlerWrap> AbilityConnectManagerTest::TaskHandler() const
224 {
225 return taskHandler_;
226 }
227
EventHandler() const228 std::shared_ptr<EventHandlerWrap> AbilityConnectManagerTest::EventHandler() const
229 {
230 return eventHandler_;
231 }
232
233 /*
234 * Feature: AbilityConnectManager
235 * Function: StartAbility
236 * SubFunction: NA
237 * FunctionPoints: StartAbility
238 * EnvConditions:NA
239 * CaseDescription: Verify the normal process of startability
240 */
241 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_001, TestSize.Level1)
242 {
243 ConnectManager()->SetTaskHandler(TaskHandler());
244 ConnectManager()->SetEventHandler(EventHandler());
245
246 auto result = ConnectManager()->StartAbility(abilityRequest_);
247 EXPECT_EQ(OHOS::ERR_OK, result);
248 WaitUntilTaskDone(TaskHandler());
249
250 auto elementName = abilityRequest_.want.GetElement().GetURI();
251 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
252 EXPECT_NE(service, nullptr);
253 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
254
255 service->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
256
257 auto result1 = ConnectManager()->StartAbility(abilityRequest_);
258 WaitUntilTaskDone(TaskHandler());
259 EXPECT_EQ(OHOS::ERR_OK, result1);
260 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
261
262 service->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVATING);
263 auto result2 = ConnectManager()->StartAbility(abilityRequest_);
264 WaitUntilTaskDone(TaskHandler());
265 EXPECT_EQ(OHOS::ERR_OK, result2);
266 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
267 }
268
269 /*
270 * Feature: AbilityConnectManager
271 * Function: TerminateAbility
272 * SubFunction: NA
273 * FunctionPoints: StartAbility and TerminateAbility
274 * EnvConditions:NA
275 * CaseDescription: Verify the following:
276 * 1.token is nullptr, terminate ability failed
277 * 2.token is not nullptr, terminate ability success, and verify the status
278 */
279 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_002, TestSize.Level1)
280 {
281 ConnectManager()->SetTaskHandler(TaskHandler());
282 ConnectManager()->SetEventHandler(EventHandler());
283
284 auto result = ConnectManager()->StartAbility(abilityRequest_);
285 EXPECT_EQ(OHOS::ERR_OK, result);
286 WaitUntilTaskDone(TaskHandler());
287
288 OHOS::sptr<OHOS::IRemoteObject> nullToken = nullptr;
289 auto result1 = ConnectManager()->TerminateAbility(nullToken);
290 EXPECT_EQ(ERR_CONNECT_MANAGER_NULL_ABILITY_RECORD, result1);
291
292 auto elementName = abilityRequest_.want.GetElement().GetURI();
293 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
294 EXPECT_NE(service, nullptr);
295
296 auto result2 = ConnectManager()->TerminateAbility(service->GetToken());
297 WaitUntilTaskDone(TaskHandler());
298 EXPECT_EQ(OHOS::ERR_OK, result2);
299 EXPECT_EQ(service->GetAbilityState(), TERMINATING);
300 }
301
302 /*
303 * Feature: AbilityConnectManager
304 * Function: TerminateAbility
305 * SubFunction: NA
306 * FunctionPoints: StartAbility and TerminateAbility
307 * EnvConditions:NA
308 * CaseDescription: Verify ability is terminating, terminate ability success
309 */
310 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_003, TestSize.Level1)
311 {
312 ConnectManager()->SetTaskHandler(TaskHandler());
313 ConnectManager()->SetEventHandler(EventHandler());
314
315 auto result = ConnectManager()->StartAbility(abilityRequest_);
316 EXPECT_EQ(OHOS::ERR_OK, result);
317 WaitUntilTaskDone(TaskHandler());
318
319 auto elementName = abilityRequest_.want.GetElement().GetURI();
320 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
321 EXPECT_NE(service, nullptr);
322
323 service->SetTerminatingState();
324 auto result1 = ConnectManager()->TerminateAbility(service->GetToken());
325 WaitUntilTaskDone(TaskHandler());
326 EXPECT_EQ(OHOS::ERR_OK, result1);
327 EXPECT_NE(service->GetAbilityState(), TERMINATING);
328 }
329
330 /*
331 * Feature: AbilityConnectManager
332 * Function: TerminateAbility
333 * SubFunction: NA
334 * FunctionPoints: StartAbility and TerminateAbility
335 * EnvConditions: NA
336 * CaseDescription: Verify service is connected, terminate ability failed
337 */
338 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_004, TestSize.Level1)
339 {
340 ConnectManager()->SetTaskHandler(TaskHandler());
341 ConnectManager()->SetEventHandler(EventHandler());
342
343 auto result = ConnectManager()->StartAbility(abilityRequest_);
344 EXPECT_EQ(OHOS::ERR_OK, result);
345 WaitUntilTaskDone(TaskHandler());
346
347 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
348 EXPECT_EQ(0, result1);
349
350 auto elementName = abilityRequest_.want.GetElement().GetURI();
351 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
352 EXPECT_NE(service, nullptr);
353
354 auto result2 = ConnectManager()->TerminateAbility(service->GetToken());
355 WaitUntilTaskDone(TaskHandler());
356 EXPECT_EQ(0, result2);
357 EXPECT_EQ(service->GetAbilityState(), TERMINATING);
358 }
359
360 /*
361 * Feature: AbilityConnectManager
362 * Function: StopServiceAbility
363 * SubFunction: NA
364 * FunctionPoints: StartAbility and StopServiceAbility
365 * EnvConditions: NA
366 * CaseDescription: Verify the following:
367 * 1.token is nullptr, stop service ability failed
368 * 2.token is not nullptr, stop service ability success, and verify the status
369 */
370 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_005, TestSize.Level1)
371 {
372 ConnectManager()->SetTaskHandler(TaskHandler());
373 ConnectManager()->SetEventHandler(EventHandler());
374
375 auto result = ConnectManager()->StartAbility(abilityRequest_);
376 EXPECT_EQ(OHOS::ERR_OK, result);
377 WaitUntilTaskDone(TaskHandler());
378
379 auto elementName = abilityRequest_.want.GetElement().GetURI();
380 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
381 EXPECT_NE(service, nullptr);
382
383 AbilityRequest otherRequest;
384 auto result1 = ConnectManager()->StopServiceAbility(otherRequest);
385 WaitUntilTaskDone(TaskHandler());
386 EXPECT_EQ(OHOS::ERR_INVALID_VALUE, result1);
387
388 auto result2 = ConnectManager()->StopServiceAbility(abilityRequest_);
389 WaitUntilTaskDone(TaskHandler());
390 EXPECT_EQ(OHOS::ERR_OK, result2);
391 EXPECT_EQ(service->GetAbilityState(), TERMINATING);
392 }
393
394 /*
395 * Feature: AbilityConnectManager
396 * Function: StopServiceAbility
397 * SubFunction: NA
398 * FunctionPoints: StartAbility and StopServiceAbility
399 * EnvConditions:NA
400 * CaseDescription: Verify ability is terminating, stop service ability success
401 */
402 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_006, TestSize.Level1)
403 {
404 ConnectManager()->SetTaskHandler(TaskHandler());
405 ConnectManager()->SetEventHandler(EventHandler());
406
407 auto result = ConnectManager()->StartAbility(abilityRequest_);
408 EXPECT_EQ(OHOS::ERR_OK, result);
409 WaitUntilTaskDone(TaskHandler());
410
411 auto elementName = abilityRequest_.want.GetElement().GetURI();
412 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
413 EXPECT_NE(service, nullptr);
414
415 service->SetTerminatingState();
416 auto result1 = ConnectManager()->StopServiceAbility(abilityRequest_);
417 WaitUntilTaskDone(TaskHandler());
418 EXPECT_EQ(OHOS::ERR_OK, result1);
419 EXPECT_NE(service->GetAbilityState(), TERMINATING);
420 }
421
422 /*
423 * Feature: AbilityConnectManager
424 * Function: StopServiceAbility
425 * SubFunction: NA
426 * FunctionPoints: StartAbility and StopServiceAbility
427 * EnvConditions: NA
428 * CaseDescription: Verify service is connected, stop service ability failed
429 */
430 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_007, TestSize.Level1)
431 {
432 ConnectManager()->SetTaskHandler(TaskHandler());
433 ConnectManager()->SetEventHandler(EventHandler());
434
435 auto result = ConnectManager()->StartAbility(abilityRequest_);
436 EXPECT_EQ(OHOS::ERR_OK, result);
437 WaitUntilTaskDone(TaskHandler());
438
439 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
440 EXPECT_EQ(0, result1);
441
442 auto elementName = abilityRequest_.want.GetElement().GetURI();
443 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
444 EXPECT_NE(service, nullptr);
445
446 auto result2 = ConnectManager()->StopServiceAbility(abilityRequest_);
447 WaitUntilTaskDone(TaskHandler());
448 EXPECT_EQ(0, result2);
449 EXPECT_EQ(service->GetAbilityState(), TERMINATING);
450 }
451
452 /*
453 * Feature: AbilityConnectManager
454 * Function: ConnectAbilityLocked
455 * SubFunction: NA
456 * FunctionPoints: NA
457 * EnvConditions:NA
458 * CaseDescription: verify the scene of service not loaded and callback not bound.
459 */
460 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_008, TestSize.Level1)
461 {
462 int result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
463 EXPECT_EQ(0, result);
464
465 auto connectMap = ConnectManager()->connectMap_;
466 auto connectRecordList = connectMap.at(callbackA_->AsObject());
467 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
468
469 auto elementName = abilityRequest_.want.GetElement();
470 auto elementNameUri = elementName.GetURI();
471 auto serviceMap = ConnectManager()->GetServiceMap();
472 auto abilityRecord = serviceMap.at(elementNameUri);
473 connectRecordList = abilityRecord->GetConnectRecordList();
474 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
475 }
476
477 /*
478 * Feature: AbilityConnectManager
479 * Function: ConnectAbilityLocked
480 * SubFunction: NA
481 * FunctionPoints: NA
482 * EnvConditions:NA
483 * CaseDescription: verify the scene of service load ability's timeout.
484 */
485 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_009, TestSize.Level1)
486 {
487 ConnectManager()->SetTaskHandler(TaskHandler());
488 ConnectManager()->SetEventHandler(EventHandler());
489 int result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
490 EXPECT_EQ(0, result);
491
492 auto connectMap = ConnectManager()->connectMap_;
493 EXPECT_EQ(1, static_cast<int>(connectMap.size()));
494 WaitUntilTaskDone(TaskHandler());
495 usleep(TEST_WAIT_TIME);
496
497 connectMap = ConnectManager()->connectMap_;
498 EXPECT_EQ(1, static_cast<int>(connectMap.size()));
499 }
500
501 /*
502 * Feature: AbilityConnectManager
503 * Function: ConnectAbilityLocked
504 * SubFunction: NA
505 * FunctionPoints: NA
506 * EnvConditions:NA
507 * CaseDescription: verify the scene of service loaded and callback not bound.
508 */
509 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_010, TestSize.Level1)
510 {
511 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
512 EXPECT_EQ(0, result);
513
514 result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackB_, nullptr);
515 EXPECT_EQ(0, result);
516
517 auto connectMap = ConnectManager()->connectMap_;
518 auto connectRecordList = connectMap.at(callbackA_->AsObject());
519 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
520
521 connectRecordList = connectMap.at(callbackB_->AsObject());
522 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
523
524 auto elementName = abilityRequest_.want.GetElement();
525 std::string elementNameUri = elementName.GetURI();
526 auto serviceMap = ConnectManager()->GetServiceMap();
527 auto abilityRecord = serviceMap.at(elementNameUri);
528 connectRecordList = abilityRecord->GetConnectRecordList();
529 EXPECT_EQ(2, static_cast<int>(connectRecordList.size()));
530 }
531
532 /*
533 * Feature: AbilityConnectManager
534 * Function: ConnectAbilityLocked
535 * SubFunction: NA
536 * FunctionPoints: NA
537 * EnvConditions:NA
538 * CaseDescription: verify the scene of service connect ability's timeout.
539 */
540 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_011, TestSize.Level1)
541 {
542 ConnectManager()->SetTaskHandler(TaskHandler());
543 ConnectManager()->SetEventHandler(EventHandler());
544
545 int result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
546 auto elementName = abilityRequest_.want.GetElement();
547 std::string elementNameUri = elementName.GetURI();
548 auto serviceMap = ConnectManager()->GetServiceMap();
549 auto abilityRecord = serviceMap.at(elementNameUri);
550 auto token = abilityRecord->GetToken();
551
552 auto connectMap = ConnectManager()->connectMap_;
553 EXPECT_EQ(1, static_cast<int>(connectMap.size()));
554
555 auto scheduler = new AbilityScheduler();
556 ConnectManager()->AttachAbilityThreadLocked(scheduler, token->AsObject());
557 ConnectManager()->AbilityTransitionDone(token->AsObject(), OHOS::AAFwk::AbilityState::INACTIVE);
558
559 WaitUntilTaskDone(TaskHandler());
560 usleep(TEST_WAIT_TIME);
561 connectMap = ConnectManager()->connectMap_;
562 EXPECT_EQ(0, result);
563 EXPECT_EQ(1, static_cast<int>(connectMap.size()));
564 }
565
566 /*
567 * Feature: AbilityConnectManager
568 * Function: ConnectAbilityLocked
569 * SubFunction: NA
570 * FunctionPoints: NA
571 * EnvConditions:NA
572 * CaseDescription: verify the scene of service loaded and callback bound.
573 */
574 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_012, TestSize.Level1)
575 {
576 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
577 EXPECT_EQ(0, result);
578
579 result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
580 EXPECT_EQ(0, result);
581
582 auto connectMap = ConnectManager()->connectMap_;
583 auto connectRecordList = connectMap.at(callbackA_->AsObject());
584 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
585
586 auto elementName = abilityRequest_.want.GetElement();
587 std::string elementNameUri = elementName.GetURI();
588 auto serviceMap = ConnectManager()->GetServiceMap();
589 auto abilityRecord = serviceMap.at(elementNameUri);
590 connectRecordList = abilityRecord->GetConnectRecordList();
591 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
592 }
593
594 /*
595 * Feature: AbilityConnectManager
596 * Function: ConnectAbilityLocked
597 * SubFunction: NA
598 * FunctionPoints: NA
599 * EnvConditions:NA
600 * CaseDescription: verify the scene of service not loaded and callback bound.
601 */
602 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_013, TestSize.Level1)
603 {
604 int result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
605 EXPECT_EQ(0, result);
606
607 std::string deviceNameB = "device";
608 std::string abilityNameB = "ServiceAbilityB";
609 std::string appNameB = "hiservcieB";
610 std::string bundleNameB = "com.ix.hiservcieB";
611 std::string moduleNameB = "entry";
612 auto abilityRequestB = GenerateAbilityRequest(deviceNameB, abilityNameB, appNameB, bundleNameB, moduleNameB);
613 result = ConnectManager()->ConnectAbilityLocked(abilityRequestB, callbackA_, nullptr);
614 EXPECT_EQ(0, result);
615
616 auto connectMap = ConnectManager()->connectMap_;
617 auto connectRecordList = connectMap.at(callbackA_->AsObject());
618 EXPECT_EQ(2, static_cast<int>(connectRecordList.size()));
619
620 auto elementName = abilityRequest_.want.GetElement();
621 std::string elementNameUri = elementName.GetURI();
622 auto serviceMap = ConnectManager()->GetServiceMap();
623 auto abilityRecord = serviceMap.at(elementNameUri);
624 connectRecordList = abilityRecord->GetConnectRecordList();
625 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
626
627 auto elementNameB = abilityRequest_.want.GetElement();
628 std::string elementNameUriB = elementNameB.GetURI();
629 abilityRecord = serviceMap.at(elementNameUriB);
630 connectRecordList = abilityRecord->GetConnectRecordList();
631 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
632 }
633
634 /*
635 * Feature: AbilityConnectManager
636 * Function: ConnectAbilityLocked
637 * SubFunction: NA
638 * FunctionPoints: NA
639 * EnvConditions:NA
640 * CaseDescription: verify the scene of service loaded and callback bound, but service and callback was not associated.
641 */
642 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_014, TestSize.Level1)
643 {
644 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
645 EXPECT_EQ(0, result);
646
647 std::string deviceNameB = "device";
648 std::string abilityNameB = "ServiceAbilityB";
649 std::string appNameB = "hiservcieB";
650 std::string bundleNameB = "com.ix.hiservcieB";
651 std::string moduleNameB = "entry";
652 auto abilityRequestB = GenerateAbilityRequest(deviceNameB, abilityNameB, appNameB, bundleNameB, moduleNameB);
653 result = ConnectManager()->ConnectAbilityLocked(abilityRequestB, callbackB_, nullptr);
654 EXPECT_EQ(0, result);
655
656 ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackB_, nullptr);
657 auto connectMap = ConnectManager()->connectMap_;
658 auto connectRecordList = connectMap.at(callbackB_->AsObject());
659 EXPECT_EQ(2, static_cast<int>(connectRecordList.size()));
660
661 connectRecordList = connectMap.at(callbackA_->AsObject());
662 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
663
664 auto elementName = abilityRequest_.want.GetElement();
665 std::string elementNameUri = elementName.GetURI();
666 auto serviceMap = ConnectManager()->GetServiceMap();
667 auto abilityRecord = serviceMap.at(elementNameUri);
668 connectRecordList = abilityRecord->GetConnectRecordList();
669 EXPECT_EQ(2, static_cast<int>(connectRecordList.size()));
670 }
671
672 /*
673 * Feature: AbilityConnectManager
674 * Function: AttachAbilityThreadLocked
675 * SubFunction: NA
676 * FunctionPoints: NA
677 * EnvConditions:NA
678 * CaseDescription: verify the AttachAbilityThreadLocked function when the parameter is null.
679 */
680 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_015, TestSize.Level1)
681 {
682 auto result = ConnectManager()->AttachAbilityThreadLocked(nullptr, nullptr);
683 EXPECT_EQ(OHOS::ERR_INVALID_VALUE, result);
684 }
685
686 /*
687 * Feature: AbilityConnectManager
688 * Function: ScheduleConnectAbilityDoneLocked
689 * SubFunction: NA
690 * FunctionPoints: NA
691 * EnvConditions:NA
692 * CaseDescription: verify the ScheduleConnectAbilityDoneLocked function when the parameter is null.
693 */
694 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_016, TestSize.Level1)
695 {
696 auto callback = new AbilityConnectCallback();
697 auto result = ConnectManager()->ScheduleConnectAbilityDoneLocked(nullptr, callback);
698 EXPECT_EQ(OHOS::ERR_INVALID_VALUE, result);
699 }
700
701 /*
702 * Feature: AbilityConnectManager
703 * Function: ScheduleConnectAbilityDoneLocked
704 * SubFunction: NA
705 * FunctionPoints: NA
706 * EnvConditions:NA
707 * CaseDescription: verify the ScheduleConnectAbilityDoneLocked function when the state is CONNECTED.
708 */
709 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_017, TestSize.Level1)
710 {
711 auto callback = new AbilityConnectCallback();
712 ConnectManager()->ConnectAbilityLocked(abilityRequest_, callback, nullptr);
713
714 auto elementName = abilityRequest_.want.GetElement();
715 std::string elementNameUri = elementName.GetURI();
716 auto serviceMap = ConnectManager()->GetServiceMap();
717 auto abilityRecord = serviceMap.at(elementNameUri);
718 auto token = abilityRecord->GetToken();
719
720 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
721 ConnectManager()->ScheduleConnectAbilityDoneLocked(token, callback);
722 auto abilityRecordB = Token::GetAbilityRecordByToken(token);
723 EXPECT_TRUE(abilityRecordB);
724 auto connectRecordList = abilityRecordB->GetConnectRecordList();
725 int size = connectRecordList.size();
726 EXPECT_EQ(1, size);
727 if (size != 0) {
728 auto connState = (*(connectRecordList.begin()))->GetConnectState();
729 EXPECT_EQ(ConnectionState::CONNECTED, connState);
730 }
731 }
732
733 /*
734 * Feature: AbilityConnectManager
735 * Function: GetActiveUIExtensionList
736 * SubFunction: NA
737 * FunctionPoints: NA
738 * EnvConditions:NA
739 * CaseDescription: verify the GetActiveUIExtensionList function.
740 */
741 HWTEST_F(AbilityConnectManagerTest, GetActiveUIExtensionList_01, TestSize.Level1)
742 {
743 int32_t pid = 1;
744 std::vector<std::string> extensionList;
745 auto result = ConnectManager()->GetActiveUIExtensionList(pid, extensionList);
746 EXPECT_EQ(result, ERR_OK);
747
748 std::string bundleName = "com.test.demo";
749 result = ConnectManager()->GetActiveUIExtensionList(bundleName, extensionList);
750 EXPECT_EQ(result, ERR_OK);
751 }
752
753 /*
754 * Feature: AbilityConnectManager
755 * Function: ScheduleConnectAbilityDoneLocked
756 * SubFunction: NA
757 * FunctionPoints: NA
758 * EnvConditions:NA
759 * CaseDescription: verify the input parameters.
760 */
761 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_001, TestSize.Level1)
762 {
763 // start test
764 // test1 for serviceToken is null but remoteObject is valid
765 OHOS::sptr<OHOS::IRemoteObject> object = new AbilityConnectCallback();
766 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(nullptr, object);
767 EXPECT_EQ(OHOS::ERR_INVALID_VALUE, ret);
768
769 // test2 for both of serviceToken and remoteObject are null
770 ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(nullptr, nullptr);
771 EXPECT_EQ(OHOS::ERR_INVALID_VALUE, ret);
772 }
773
774 /*
775 * Feature: AbilityConnectManager
776 * Function: ScheduleConnectAbilityDoneLocked
777 * SubFunction: NA
778 * FunctionPoints: NA
779 * EnvConditions:NA
780 * CaseDescription: verify the input serviceToken which corresponding ability record doesn't exist.
781 */
782 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_002, TestSize.Level1)
783 {
784 // test for serviceToken's abilityRecord is null
785 serviceRecord_ = nullptr;
786 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, nullptr);
787 EXPECT_EQ(OHOS::ERR_INVALID_VALUE, ret);
788 }
789
790 /*
791 * Feature: AbilityConnectManager
792 * Function: ScheduleConnectAbilityDoneLocked
793 * SubFunction: OnAbilityConnectDone
794 * FunctionPoints: NA
795 * EnvConditions:NA
796 * CaseDescription: verify the input serviceToken which corresponding connection list is empty.
797 */
798 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_003, TestSize.Level1)
799 {
800 // test for serviceToken's connection list is null
801 // start test
802 auto callback = new AbilityConnectCallback();
803 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, callback);
804 EXPECT_EQ(OHOS::AAFwk::INVALID_CONNECTION_STATE, ret);
805 auto connList = serviceRecord_->GetConnectRecordList();
806 EXPECT_EQ(true, connList.empty()); // the connection list size should be empty
807 }
808
809 /*
810 * Feature: AbilityConnectManager
811 * Function: ScheduleConnectAbilityDoneLocked
812 * SubFunction: OnAbilityConnectDone
813 * FunctionPoints: NA
814 * EnvConditions:NA
815 * CaseDescription: verify the input serviceToken which corresponding connection list members' state
816 * is not CONNECTING or CONNECTED.
817 */
818 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_004, TestSize.Level1)
819 {
820 // test for schedule the service connected done but the corresponding connection state is not CONNECTING
821 // generate the first connection record of callbackA_
822 auto newConnRecord1 = ConnectionRecord::CreateConnectionRecord(
823 serviceToken_, serviceRecord_, callbackA_, nullptr); // newConnRecord1's default state is INIT
824 serviceRecord_->AddConnectRecordToList(newConnRecord1);
825 // generate the second connection record of callbackB_
826 auto newConnRecord2 = ConnectionRecord::CreateConnectionRecord(serviceToken_, serviceRecord_, callbackB_, nullptr);
827 newConnRecord2->SetConnectState(ConnectionState::DISCONNECTING); // newConnRecord2's state is DISCONNECTING
828 serviceRecord_->AddConnectRecordToList(newConnRecord2);
829 auto connList = serviceRecord_->GetConnectRecordList();
830 EXPECT_EQ(2, static_cast<int>(connList.size())); // the connection list members should be two
831 // start test
832 auto callback = new AbilityConnectCallback();
833 serviceRecord_->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
834 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, callback);
835 EXPECT_EQ(OHOS::ERR_OK, ret); // the result should be OK
836 // connection callback should not be called, so check the count
837 EXPECT_EQ(0, AbilityConnectCallback::onAbilityConnectDoneCount);
838 EXPECT_EQ(0, AbilityConnectCallback::onAbilityDisconnectDoneCount);
839 }
840
841 /*
842 * Feature: AbilityConnectManager
843 * Function: ScheduleConnectAbilityDoneLocked
844 * SubFunction: OnAbilityConnectDone
845 * FunctionPoints: NA
846 * EnvConditions:NA
847 * CaseDescription: verify the scene : 1.serviceToken's corresponding connection list member's state is CONNECTING.
848 * 2.But the connection callback is null.
849 */
850 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_005, TestSize.Level1)
851 {
852 // test for schedule the service connected done but the corresponding connection state is not CONNECTING
853 // generate the first connection record of null
854 auto newConnRecord1 = ConnectionRecord::CreateConnectionRecord(
855 serviceToken_, serviceRecord_, nullptr, nullptr); // newConnRecord1's default state is INIT
856 serviceRecord_->AddConnectRecordToList(newConnRecord1);
857 newConnRecord1->SetConnectState(ConnectionState::CONNECTING); // newConnRecord1's state is CONNECTING
858 auto connList = serviceRecord_->GetConnectRecordList();
859 EXPECT_EQ(1, static_cast<int>(connList.size())); // the connection list members should be zero
860 // start test
861 auto callback = new AbilityConnectCallback();
862 serviceRecord_->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
863 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, callback);
864 EXPECT_EQ(OHOS::ERR_OK, ret); // the result should be OK
865 // connection callback should not be called, so check the count
866 EXPECT_EQ(0, AbilityConnectCallback::onAbilityConnectDoneCount);
867 }
868
869 /*
870 * Feature: AbilityConnectManager
871 * Function: ScheduleConnectAbilityDoneLocked
872 * SubFunction: OnAbilityConnectDone
873 * FunctionPoints: NA
874 * EnvConditions:NA
875 * CaseDescription: verify the scene : 1.serviceToken's corresponding connection list member's state is CONNECTED.
876 * 2.But the connection callback is null.
877 */
878 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_006, TestSize.Level1)
879 {
880 // test for schedule the service connected done but the corresponding connection state is not CONNECTING
881 // generate the first connection record of null
882 auto newConnRecord1 = ConnectionRecord::CreateConnectionRecord(
883 serviceToken_, serviceRecord_, nullptr, nullptr); // newConnRecord1's default state is INIT
884 serviceRecord_->AddConnectRecordToList(newConnRecord1);
885 newConnRecord1->SetConnectState(ConnectionState::CONNECTED); // newConnRecord1's state is CONNECTED
886 auto connList = serviceRecord_->GetConnectRecordList();
887 EXPECT_EQ(1, static_cast<int>(connList.size())); // the connection list members should be zero
888 // start test
889 auto callback = new AbilityConnectCallback();
890 serviceRecord_->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
891 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, callback);
892 EXPECT_EQ(OHOS::ERR_OK, ret); // the result should be OK
893 // connection callback should not be called, so check the count
894 EXPECT_EQ(0, AbilityConnectCallback::onAbilityConnectDoneCount);
895 }
896
897 /*
898 * Feature: AbilityConnectManager
899 * Function: ScheduleConnectAbilityDoneLocked
900 * SubFunction: OnAbilityConnectDone
901 * FunctionPoints: NA
902 * EnvConditions:NA
903 * CaseDescription: verify the scene : 1.serviceToken's corresponding connection list member's state is CONNECTING.
904 * 2.But the connection callback is valid.
905 */
906 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_007, TestSize.Level1)
907 {
908 // test for schedule the service connected done but the corresponding connection state is not CONNECTING
909 // generate the first connection record of callbackA_
910 auto newConnRecord1 = ConnectionRecord::CreateConnectionRecord(
911 serviceToken_, serviceRecord_, callbackA_, nullptr); // newConnRecord1's default state is INIT
912 serviceRecord_->AddConnectRecordToList(newConnRecord1);
913 // generate the second connection record of callbackB_
914 auto newConnRecord2 = ConnectionRecord::CreateConnectionRecord(serviceToken_, serviceRecord_, callbackB_, nullptr);
915 newConnRecord2->SetConnectState(ConnectionState::CONNECTING); // newConnRecord2's state is CONNECTING
916 serviceRecord_->AddConnectRecordToList(newConnRecord2);
917 auto connList = serviceRecord_->GetConnectRecordList();
918 EXPECT_EQ(2, static_cast<int>(connList.size())); // the connection list members should be two
919 // start test
920 auto callback = new AbilityConnectCallback();
921 serviceRecord_->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
922 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, callback);
923 EXPECT_EQ(OHOS::ERR_OK, ret); // the result should be OK
924 // connection callback should not be called, so check the count
925 EXPECT_EQ(0, AbilityConnectCallback::onAbilityConnectDoneCount);
926 EXPECT_EQ(0, AbilityConnectCallback::onAbilityDisconnectDoneCount);
927 }
928
929 /*
930 * Feature: AbilityConnectManager
931 * Function: ScheduleConnectAbilityDoneLocked
932 * SubFunction: OnAbilityConnectDone
933 * FunctionPoints: NA
934 * EnvConditions:NA
935 * CaseDescription: verify the scene : 1.serviceToken's corresponding connection list member's state is CONNECTED.
936 * 2.But the connection callback is valid.
937 */
938 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Connect_008, TestSize.Level1)
939 {
940 // test for schedule the service connected done but the corresponding connection state is not CONNECTING
941 // generate the first connection record of callbackA_
942 auto newConnRecord1 = ConnectionRecord::CreateConnectionRecord(
943 serviceToken_, serviceRecord_, callbackA_, nullptr); // newConnRecord1's default state is INIT
944 newConnRecord1->SetConnectState(ConnectionState::CONNECTED); // newConnRecord1's state is CONNECTED
945 serviceRecord_->AddConnectRecordToList(newConnRecord1);
946 // generate the second connection record of callbackB_
947 auto newConnRecord2 = ConnectionRecord::CreateConnectionRecord(serviceToken_, serviceRecord_, callbackB_, nullptr);
948 newConnRecord2->SetConnectState(ConnectionState::CONNECTING); // newConnRecord2's state is CONNECTING
949 serviceRecord_->AddConnectRecordToList(newConnRecord2);
950 // generate the third connection record of callbackC
951 auto callbackC = new AbilityConnectCallback();
952 auto newConnRecord3 = ConnectionRecord::CreateConnectionRecord(serviceToken_, serviceRecord_, callbackC, nullptr);
953 newConnRecord3->SetConnectState(ConnectionState::CONNECTING); // newConnRecord3's state is CONNECTING
954 serviceRecord_->AddConnectRecordToList(newConnRecord3);
955 auto connList = serviceRecord_->GetConnectRecordList();
956 EXPECT_EQ(3, static_cast<int>(connList.size())); // the connection list members should be three
957 // start test
958 auto callback = new AbilityConnectCallback();
959 serviceRecord_->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
960 int ret = ConnectManager()->ScheduleConnectAbilityDoneLocked(serviceToken_, callback);
961 EXPECT_EQ(OHOS::ERR_OK, ret); // the result should be OK
962 // connection callback should not be called, so check the count
963 EXPECT_EQ(0, AbilityConnectCallback::onAbilityConnectDoneCount);
964 EXPECT_EQ(0, AbilityConnectCallback::onAbilityDisconnectDoneCount);
965 }
966
967 /*
968 * Feature: AbilityConnectManager
969 * Function: DisconnectAbilityLocked
970 * SubFunction:
971 * FunctionPoints: DisconnectAbilityLocked and ConnectAbilityLocked
972 * EnvConditions:NA
973 * CaseDescription:Verify the following:
974 * 1. Disconnect ability a nonexistent connect, disconnect failed
975 * 2. If the current connect ability state is not connected, disconnect fails
976 * 3. Verify the success of disconnect ability
977 */
978 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Disconnect_001, TestSize.Level1)
979 {
980 ConnectManager()->SetTaskHandler(TaskHandler());
981 ConnectManager()->SetEventHandler(EventHandler());
982
983 auto callback = new AbilityConnectCallback();
984 auto result = ConnectManager()->DisconnectAbilityLocked(callback);
985 EXPECT_EQ(result, OHOS::AAFwk::CONNECTION_NOT_EXIST);
986
987 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
988 EXPECT_EQ(0, result1);
989
990 auto result2 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
991 EXPECT_EQ(result2, OHOS::AAFwk::INVALID_CONNECTION_STATE);
992
993 auto list = ConnectManager()->GetConnectRecordListByCallback(callbackA_);
994 EXPECT_EQ(static_cast<int>(list.size()), 1);
995
996 for (auto& it : list) {
997 it->SetConnectState(ConnectionState::CONNECTED);
998 }
999
1000 auto result3 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
1001 EXPECT_EQ(result3, OHOS::ERR_OK);
1002 }
1003
1004 /*
1005 * Feature: AbilityConnectManager
1006 * Function: DisconnectAbilityLocked
1007 * SubFunction:
1008 * FunctionPoints: DisconnectAbilityLocked and ConnectAbilityLocked
1009 * EnvConditions:NA
1010 * CaseDescription: Results after verifying the disconnect ability
1011 */
1012 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Disconnect_002, TestSize.Level1)
1013 {
1014 ConnectManager()->SetTaskHandler(TaskHandler());
1015 ConnectManager()->SetEventHandler(EventHandler());
1016
1017 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1018 EXPECT_EQ(0, result);
1019
1020 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackB_, nullptr);
1021 EXPECT_EQ(0, result1);
1022
1023 auto result2 = ConnectManager()->ConnectAbilityLocked(abilityRequest1_, callbackA_, nullptr);
1024 EXPECT_EQ(0, result2);
1025
1026 auto result3 = ConnectManager()->ConnectAbilityLocked(abilityRequest1_, callbackB_, nullptr);
1027 EXPECT_EQ(0, result3);
1028
1029 auto listA = ConnectManager()->GetConnectRecordListByCallback(callbackA_);
1030 EXPECT_EQ(static_cast<int>(listA.size()), 2);
1031
1032 for (auto& it : listA) {
1033 it->SetConnectState(ConnectionState::CONNECTED);
1034 }
1035
1036 auto listB = ConnectManager()->GetConnectRecordListByCallback(callbackB_);
1037 EXPECT_EQ(static_cast<int>(listB.size()), 2);
1038
1039 for (auto& it : listB) {
1040 it->SetConnectState(ConnectionState::CONNECTED);
1041 }
1042
1043 auto result5 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
1044 WaitUntilTaskDone(TaskHandler());
1045 EXPECT_EQ(result5, OHOS::ERR_OK);
1046 auto serviceMap = ConnectManager()->GetServiceMap();
1047 EXPECT_EQ(static_cast<int>(serviceMap.size()), 2);
1048
1049 auto connectMap = ConnectManager()->connectMap_;
1050 EXPECT_EQ(static_cast<int>(connectMap.size()), 1);
1051 for (auto& it : connectMap) {
1052 EXPECT_EQ(static_cast<int>(it.second.size()), 2);
1053 }
1054 }
1055
1056 /*
1057 * Feature: AbilityConnectManager
1058 * Function: DisconnectAbilityLocked
1059 * SubFunction:
1060 * FunctionPoints: DisconnectAbilityLocked and ConnectAbilityLocked
1061 * EnvConditions:NA
1062 * CaseDescription:Verify the following:
1063 * 1. Disconnect ability a nonexistent connect, disconnect failed
1064 * 2. If the current connect ability state is not connected, disconnect fails
1065 * 3. Verify the success of disconnect ability
1066 */
1067 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Disconnect_003, TestSize.Level1)
1068 {
1069 ConnectManager()->SetTaskHandler(TaskHandler());
1070 ConnectManager()->SetEventHandler(EventHandler());
1071
1072 auto callback = new AbilityConnectCallback();
1073 auto result = ConnectManager()->DisconnectAbilityLocked(callback);
1074 EXPECT_EQ(result, OHOS::AAFwk::CONNECTION_NOT_EXIST);
1075
1076 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1077 EXPECT_EQ(0, result1);
1078
1079 auto result2 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
1080 EXPECT_EQ(result2, OHOS::AAFwk::INVALID_CONNECTION_STATE);
1081
1082 auto list = ConnectManager()->GetConnectRecordListByCallback(callbackA_);
1083 EXPECT_EQ(static_cast<int>(list.size()), 1);
1084
1085 for (auto& it : list) {
1086 it->SetConnectState(ConnectionState::CONNECTED);
1087 }
1088
1089 auto result3 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
1090 EXPECT_EQ(result3, OHOS::ERR_OK);
1091 }
1092
1093 /*
1094 * Feature: AbilityConnectManager
1095 * Function: DisconnectAbilityLocked
1096 * SubFunction:
1097 * FunctionPoints: DisconnectAbilityLocked and ConnectAbilityLocked
1098 * EnvConditions:NA
1099 * CaseDescription: Results after verifying the disconnect ability
1100 */
1101 HWTEST_F(AbilityConnectManagerTest, AAFWK_Kit_Disconnect_004, TestSize.Level1)
1102 {
1103 ConnectManager()->SetTaskHandler(TaskHandler());
1104 ConnectManager()->SetEventHandler(EventHandler());
1105
1106 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1107 EXPECT_EQ(0, result);
1108
1109 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackB_, nullptr);
1110 EXPECT_EQ(0, result1);
1111
1112 auto result2 = ConnectManager()->ConnectAbilityLocked(abilityRequest1_, callbackA_, nullptr);
1113 EXPECT_EQ(0, result2);
1114
1115 auto result3 = ConnectManager()->ConnectAbilityLocked(abilityRequest1_, callbackB_, nullptr);
1116 EXPECT_EQ(0, result3);
1117
1118 auto listA = ConnectManager()->GetConnectRecordListByCallback(callbackA_);
1119 EXPECT_EQ(static_cast<int>(listA.size()), 2);
1120
1121 for (auto& it : listA) {
1122 it->SetConnectState(ConnectionState::CONNECTED);
1123 }
1124
1125 auto listB = ConnectManager()->GetConnectRecordListByCallback(callbackB_);
1126 EXPECT_EQ(static_cast<int>(listB.size()), 2);
1127
1128 for (auto& it : listB) {
1129 it->SetConnectState(ConnectionState::CONNECTED);
1130 }
1131
1132 auto result5 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
1133 WaitUntilTaskDone(TaskHandler());
1134 EXPECT_EQ(result5, OHOS::ERR_OK);
1135 auto serviceMap = ConnectManager()->GetServiceMap();
1136 EXPECT_EQ(static_cast<int>(serviceMap.size()), 2);
1137
1138 auto connectMap = ConnectManager()->connectMap_;
1139 EXPECT_EQ(static_cast<int>(connectMap.size()), 1);
1140 for (auto& it : connectMap) {
1141 EXPECT_EQ(static_cast<int>(it.second.size()), 2);
1142 }
1143 }
1144
1145 /*
1146 * Feature: AbilityConnectManager
1147 * Function: AbilityTransitionDone
1148 * SubFunction: NA
1149 * FunctionPoints: AbilityTransitionDone
1150 * EnvConditions:NA
1151 * CaseDescription: Verify the abilitytransitiondone process
1152 */
1153 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_019, TestSize.Level1)
1154 {
1155 OHOS::sptr<OHOS::IRemoteObject> nullToken = nullptr;
1156 auto result = ConnectManager()->AbilityTransitionDone(nullToken, OHOS::AAFwk::AbilityState::INACTIVE);
1157 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
1158
1159 ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1160 auto elementName = abilityRequest_.want.GetElement();
1161 std::string elementNameUri = elementName.GetURI();
1162 auto serviceMap = ConnectManager()->GetServiceMap();
1163 auto abilityRecord = serviceMap.at(elementNameUri);
1164 auto token = abilityRecord->GetToken();
1165
1166 auto result1 = ConnectManager()->AbilityTransitionDone(token, OHOS::AAFwk::AbilityState::INACTIVE);
1167 EXPECT_EQ(result1, OHOS::ERR_INVALID_VALUE);
1168
1169 ConnectManager()->MoveToTerminatingMap(abilityRecord);
1170 auto result2 = ConnectManager()->AbilityTransitionDone(token, OHOS::AAFwk::AbilityState::INITIAL);
1171 EXPECT_EQ(result2, OHOS::ERR_OK);
1172
1173 auto result3 = ConnectManager()->AbilityTransitionDone(token, OHOS::AAFwk::AbilityState::TERMINATING);
1174 EXPECT_EQ(result3, OHOS::ERR_INVALID_VALUE);
1175 }
1176
1177 /*
1178 * Feature: AbilityConnectManager
1179 * Function: ScheduleDisconnectAbilityDoneLocked
1180 * SubFunction: NA
1181 * FunctionPoints: ScheduleDisconnectAbilityDoneLocked
1182 * EnvConditions:NA
1183 * CaseDescription: Verify the ScheduleDisconnectAbilityDoneLocked process
1184 */
1185 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_020, TestSize.Level1)
1186 {
1187 ConnectManager()->SetTaskHandler(TaskHandler());
1188 ConnectManager()->SetEventHandler(EventHandler());
1189
1190 OHOS::sptr<OHOS::IRemoteObject> nullToken = nullptr;
1191 auto result = ConnectManager()->ScheduleDisconnectAbilityDoneLocked(nullToken);
1192 EXPECT_EQ(result, OHOS::AAFwk::CONNECTION_NOT_EXIST);
1193
1194 std::shared_ptr<AbilityRecord> ability = nullptr;
1195 OHOS::sptr<OHOS::IRemoteObject> token1 = new OHOS::AAFwk::Token(ability);
1196 auto result1 = ConnectManager()->ScheduleDisconnectAbilityDoneLocked(token1);
1197 EXPECT_EQ(result1, OHOS::AAFwk::CONNECTION_NOT_EXIST);
1198
1199 ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1200 auto elementName = abilityRequest_.want.GetElement();
1201 std::string elementNameUri = elementName.GetURI();
1202 auto serviceMap = ConnectManager()->GetServiceMap();
1203 auto abilityRecord = serviceMap.at(elementNameUri);
1204 auto token = abilityRecord->GetToken();
1205
1206 auto listA = ConnectManager()->GetConnectRecordListByCallback(callbackA_);
1207 for (auto& it : listA) {
1208 it->SetConnectState(ConnectionState::CONNECTED);
1209 }
1210
1211 auto result2 = ConnectManager()->DisconnectAbilityLocked(callbackA_);
1212 WaitUntilTaskDone(TaskHandler());
1213 EXPECT_EQ(result2, OHOS::ERR_OK);
1214
1215 auto result3 = ConnectManager()->ScheduleDisconnectAbilityDoneLocked(token);
1216 EXPECT_EQ(result3, OHOS::AAFwk::INVALID_CONNECTION_STATE);
1217
1218 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
1219
1220 auto result4 = ConnectManager()->ScheduleDisconnectAbilityDoneLocked(token);
1221 EXPECT_EQ(result4, OHOS::ERR_OK);
1222 }
1223
1224 /*
1225 * Feature: AbilityConnectManager
1226 * Function: ScheduleCommandAbilityDoneLocked
1227 * SubFunction: NA
1228 * FunctionPoints: ScheduleCommandAbilityDoneLocked
1229 * EnvConditions:NA
1230 * CaseDescription: Verify the ScheduleCommandAbilityDoneLocked process
1231 */
1232 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_021, TestSize.Level1)
1233 {
1234 ConnectManager()->SetTaskHandler(TaskHandler());
1235 ConnectManager()->SetEventHandler(EventHandler());
1236
1237 OHOS::sptr<OHOS::IRemoteObject> nullToken = nullptr;
1238 auto result = ConnectManager()->ScheduleCommandAbilityDoneLocked(nullToken);
1239 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
1240
1241 std::shared_ptr<AbilityRecord> ability = nullptr;
1242 OHOS::sptr<OHOS::IRemoteObject> token1 = new OHOS::AAFwk::Token(ability);
1243 auto result1 = ConnectManager()->ScheduleCommandAbilityDoneLocked(token1);
1244 EXPECT_EQ(result1, OHOS::ERR_INVALID_VALUE);
1245
1246 ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1247 auto elementName = abilityRequest_.want.GetElement();
1248 std::string elementNameUri = elementName.GetURI();
1249 auto serviceMap = ConnectManager()->GetServiceMap();
1250 auto abilityRecord = serviceMap.at(elementNameUri);
1251 auto token = abilityRecord->GetToken();
1252
1253 auto result2 = ConnectManager()->ScheduleCommandAbilityDoneLocked(token);
1254 EXPECT_EQ(result2, OHOS::AAFwk::INVALID_CONNECTION_STATE);
1255
1256 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
1257 auto result3 = ConnectManager()->ScheduleCommandAbilityDoneLocked(token);
1258 EXPECT_EQ(result3, OHOS::ERR_OK);
1259 }
1260
1261 /*
1262 * Feature: AbilityConnectManager
1263 * Function: GetExtensionByTokenFromServiceMap
1264 * SubFunction: NA
1265 * FunctionPoints: GetExtensionByTokenFromServiceMap
1266 * EnvConditions:NA
1267 * CaseDescription: Verify the GetExtensionByTokenFromServiceMap process
1268 */
1269 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_022, TestSize.Level1)
1270 {
1271 ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1272 auto elementName = abilityRequest_.want.GetElement();
1273 std::string elementNameUri = elementName.GetURI();
1274 auto serviceMap = ConnectManager()->GetServiceMap();
1275 auto abilityRecord = serviceMap.at(elementNameUri);
1276 auto token = abilityRecord->GetToken();
1277
1278 auto ability = ConnectManager()->GetExtensionByTokenFromServiceMap(token);
1279 EXPECT_EQ(abilityRecord, ability);
1280
1281 OHOS::sptr<OHOS::IRemoteObject> nullToken = nullptr;
1282 auto ability1 = ConnectManager()->GetExtensionByTokenFromServiceMap(nullToken);
1283 EXPECT_EQ(nullptr, ability1);
1284
1285 auto recordId = abilityRecord->GetAbilityRecordId();
1286 EXPECT_EQ(ConnectManager()->GetExtensionByIdFromServiceMap(recordId), abilityRecord);
1287 EXPECT_EQ(ConnectManager()->GetExtensionByIdFromServiceMap(0), nullptr);
1288 }
1289
1290 /*
1291 * Feature: AbilityConnectManager
1292 * Function: OnAbilityDied
1293 * SubFunction:
1294 * FunctionPoints: OnAbilityDied
1295 * EnvConditions:NA
1296 * CaseDescription: Verify the OnAbilityDied process
1297 */
1298 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_024, TestSize.Level1)
1299 {
1300 ConnectManager()->SetTaskHandler(TaskHandler());
1301 ConnectManager()->SetEventHandler(EventHandler());
1302
1303 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1304 EXPECT_EQ(0, result);
1305
1306 auto result1 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackB_, nullptr);
1307 EXPECT_EQ(0, result1);
1308
1309 auto result2 = ConnectManager()->ConnectAbilityLocked(abilityRequest1_, callbackA_, nullptr);
1310 EXPECT_EQ(0, result2);
1311
1312 auto result3 = ConnectManager()->ConnectAbilityLocked(abilityRequest1_, callbackB_, nullptr);
1313 EXPECT_EQ(0, result3);
1314
1315 auto listA = ConnectManager()->GetConnectRecordListByCallback(callbackA_);
1316 EXPECT_EQ(static_cast<int>(listA.size()), 2);
1317
1318 for (auto& it : listA) {
1319 it->SetConnectState(ConnectionState::CONNECTED);
1320 }
1321
1322 auto listB = ConnectManager()->GetConnectRecordListByCallback(callbackB_);
1323 EXPECT_EQ(static_cast<int>(listB.size()), 2);
1324
1325 for (auto& it : listB) {
1326 it->SetConnectState(ConnectionState::CONNECTED);
1327 }
1328
1329 auto elementName = abilityRequest_.want.GetElement();
1330 std::string elementNameUri = elementName.GetURI();
1331 auto serviceMap = ConnectManager()->GetServiceMap();
1332 auto abilityRecord = serviceMap.at(elementNameUri);
1333 auto token = abilityRecord->GetToken();
1334
1335 int userId = 0;
__anon6d2e28cc0302() 1336 auto task = [abilityRecord, connectManager = ConnectManager(), userId]() {
1337 connectManager->HandleAbilityDiedTask(abilityRecord, userId);
1338 };
1339 EXPECT_CALL(*taskHandler_, SubmitTaskInner(_, _)).WillRepeatedly(DoAll(SetArgReferee<0>(task),
1340 testing::Invoke(taskHandler_.get(), &MockTaskHandlerWrap::MockTaskHandler)));
1341 ConnectManager()->OnAbilityDied(abilityRecord, 0);
1342 auto list = abilityRecord->GetConnectRecordList();
1343 EXPECT_EQ(static_cast<int>(list.size()), 0);
1344
1345 auto elementName1 = abilityRequest1_.want.GetElement();
1346 std::string elementNameUri1 = elementName1.GetURI();
1347 serviceMap = ConnectManager()->GetServiceMap();
1348 auto abilityRecord1 = serviceMap.at(elementNameUri1);
1349 auto token1 = abilityRecord1->GetToken();
__anon6d2e28cc0402() 1350 auto task1 = [abilityRecord1, connectManager = ConnectManager(), userId]() {
1351 connectManager->HandleAbilityDiedTask(abilityRecord1, userId);
1352 };
1353 EXPECT_CALL(*taskHandler_, SubmitTaskInner(_, _)).WillRepeatedly(DoAll(SetArgReferee<0>(task1),
1354 testing::Invoke(taskHandler_.get(), &MockTaskHandlerWrap::MockTaskHandler)));
1355 ConnectManager()->OnAbilityDied(abilityRecord1, 0);
1356 auto list1 = abilityRecord1->GetConnectRecordList();
1357 EXPECT_EQ(static_cast<int>(list1.size()), 0);
1358 }
1359
1360 /*
1361 * Feature: AbilityConnectManager
1362 * Function: DispatchInactive
1363 * SubFunction:
1364 * FunctionPoints: DispatchInactive
1365 * EnvConditions:NA
1366 * CaseDescription: Verify the DispatchInactive process
1367 */
1368 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_025, TestSize.Level1)
1369 {
1370 std::shared_ptr<AbilityRecord> ability = nullptr;
1371 auto result = ConnectManager()->DispatchInactive(ability, OHOS::AAFwk::AbilityState::INACTIVATING);
1372 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
1373
1374 ConnectManager()->SetTaskHandler(TaskHandler());
1375 ConnectManager()->SetEventHandler(EventHandler());
1376
1377 auto result3 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1378 EXPECT_EQ(0, result3);
1379
1380 auto elementName = abilityRequest_.want.GetElement();
1381 std::string elementNameUri = elementName.GetURI();
1382 auto serviceMap = ConnectManager()->GetServiceMap();
1383 auto abilityRecord = serviceMap.at(elementNameUri);
1384 auto token = abilityRecord->GetToken();
1385
1386 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
1387 auto result1 = ConnectManager()->DispatchInactive(abilityRecord, OHOS::AAFwk::AbilityState::INACTIVATING);
1388 EXPECT_EQ(result1, OHOS::ERR_INVALID_VALUE);
1389
1390 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::INACTIVATING);
1391 auto result2 = ConnectManager()->DispatchInactive(abilityRecord, OHOS::AAFwk::AbilityState::INACTIVATING);
1392 EXPECT_EQ(result2, OHOS::ERR_OK);
1393 EXPECT_EQ(abilityRecord->GetAbilityState(), OHOS::AAFwk::AbilityState::INACTIVE);
1394 }
1395
1396 /*
1397 * Feature: AbilityConnectManager
1398 * Function: DispatchInactive
1399 * SubFunction:
1400 * FunctionPoints: DispatchInactive
1401 * EnvConditions:NA
1402 * CaseDescription: Verify the DispatchInactive process
1403 */
1404 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_026, TestSize.Level1)
1405 {
1406 std::shared_ptr<AbilityRecord> ability = nullptr;
1407 auto result = ConnectManager()->DispatchInactive(ability, OHOS::AAFwk::AbilityState::INACTIVATING);
1408 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
1409
1410 ConnectManager()->SetTaskHandler(TaskHandler());
1411 ConnectManager()->SetEventHandler(EventHandler());
1412
1413 auto result3 = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1414 EXPECT_EQ(0, result3);
1415
1416 auto elementName = abilityRequest_.want.GetElement();
1417 std::string elementNameUri = elementName.GetURI();
1418 auto serviceMap = ConnectManager()->GetServiceMap();
1419 auto abilityRecord = serviceMap.at(elementNameUri);
1420 auto token = abilityRecord->GetToken();
1421
1422 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::ACTIVE);
1423 auto result1 = ConnectManager()->DispatchInactive(abilityRecord, OHOS::AAFwk::AbilityState::INACTIVATING);
1424 EXPECT_EQ(result1, OHOS::ERR_INVALID_VALUE);
1425
1426 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::INACTIVATING);
1427 auto result2 = ConnectManager()->DispatchInactive(abilityRecord, OHOS::AAFwk::AbilityState::INACTIVATING);
1428 EXPECT_EQ(result2, OHOS::ERR_OK);
1429 EXPECT_EQ(abilityRecord->GetAbilityState(), OHOS::AAFwk::AbilityState::INACTIVE);
1430 }
1431
1432 /*
1433 * Feature: AbilityConnectManager
1434 * Function: AddConnectDeathRecipient
1435 * SubFunction:
1436 * FunctionPoints: AddConnectDeathRecipient
1437 * EnvConditions:NA
1438 * CaseDescription: Verify the AddConnectDeathRecipient process
1439 */
1440 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_027, TestSize.Level1)
1441 {
1442 ConnectManager()->SetTaskHandler(TaskHandler());
1443 ConnectManager()->SetEventHandler(EventHandler());
1444
1445 ConnectManager()->AddConnectDeathRecipient(nullptr);
1446 EXPECT_TRUE(ConnectManager()->recipientMap_.empty());
1447 }
1448
1449 /*
1450 * Feature: AbilityConnectManager
1451 * Function: RemoveConnectDeathRecipient
1452 * SubFunction:
1453 * FunctionPoints: RemoveConnectDeathRecipient
1454 * EnvConditions:NA
1455 * CaseDescription: Verify the RemoveConnectDeathRecipient process
1456 */
1457 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_028, TestSize.Level1)
1458 {
1459 ConnectManager()->SetTaskHandler(TaskHandler());
1460 ConnectManager()->SetEventHandler(EventHandler());
1461
1462 ConnectManager()->AddConnectDeathRecipient(nullptr);
1463 EXPECT_TRUE(ConnectManager()->recipientMap_.empty());
1464
1465 ConnectManager()->RemoveConnectDeathRecipient(nullptr);
1466 EXPECT_TRUE(ConnectManager()->recipientMap_.empty());
1467 }
1468
1469 /*
1470 * Feature: AbilityConnectManager
1471 * Function: OnCallBackDied
1472 * SubFunction:
1473 * FunctionPoints: OnCallBackDied
1474 * EnvConditions:NA
1475 * CaseDescription: Verify the OnCallBackDied process
1476 */
1477 HWTEST_F(AbilityConnectManagerTest, AAFWK_Connect_Service_029, TestSize.Level1)
1478 {
1479 TAG_LOGI(AAFwkTag::TEST, "AbilityConnectManagerTest::AAFWK_Connect_Service_029 called.");
1480 ConnectManager()->SetTaskHandler(TaskHandler());
1481 ConnectManager()->SetEventHandler(EventHandler());
1482
1483
1484 auto result = ConnectManager()->ConnectAbilityLocked(abilityRequest_, callbackA_, nullptr);
1485 EXPECT_EQ(0, result);
1486
1487 const sptr<IRemoteObject> remoteObject1 = nullptr;
__anon6d2e28cc0502() 1488 auto task1 = [remoteObject1, connectManager = ConnectManager()]() {
1489 connectManager->HandleCallBackDiedTask(remoteObject1);
1490 };
1491 EXPECT_CALL(*taskHandler_, SubmitTaskInner(_, _)).WillRepeatedly(DoAll(SetArgReferee<0>(task1),
1492 testing::Invoke(taskHandler_.get(), &MockTaskHandlerWrap::MockTaskHandler)));
1493 ConnectManager()->OnCallBackDied(nullptr);
1494 auto connectMap = ConnectManager()->connectMap_;
1495 auto connectRecordList = connectMap.at(callbackA_->AsObject());
1496 EXPECT_EQ(1, static_cast<int>(connectRecordList.size()));
1497 for (auto& it : connectRecordList) {
1498 EXPECT_NE(it->GetAbilityConnectCallback(), nullptr);
1499 }
1500
1501
1502 const sptr<IRemoteObject> remoteObject2 = callbackA_->AsObject();
__anon6d2e28cc0602() 1503 auto task2 = [remoteObject2, connectManager = ConnectManager()]() {
1504 connectManager->HandleCallBackDiedTask(remoteObject2);
1505 };
1506 EXPECT_CALL(*taskHandler_, SubmitTaskInner(_, _)).WillRepeatedly(DoAll(SetArgReferee<0>(task2),
1507 testing::Invoke(taskHandler_.get(), &MockTaskHandlerWrap::MockTaskHandler)));
1508 ConnectManager()->OnCallBackDied(callbackA_->AsObject());
1509 connectRecordList = connectMap.at(callbackA_->AsObject());
1510 EXPECT_EQ(1, static_cast<int>(connectMap.size()));
1511 for (auto& it : connectRecordList) {
1512 EXPECT_EQ(it->GetAbilityConnectCallback(), nullptr);
1513 }
1514 TAG_LOGI(AAFwkTag::TEST, "AbilityConnectManagerTest::AAFWK_Connect_Service_029 end.");
1515 }
1516
1517 /*
1518 * Feature: AbilityConnectManager
1519 * Function: StartAbilityLocked
1520 * SubFunction: StartAbilityLocked
1521 * FunctionPoints: NA
1522 * EnvConditions: NA
1523 * CaseDescription: Verify AbilityConnectManager StartAbilityLocked
1524 */
1525 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_StartAbilityLocked_001, TestSize.Level1)
1526 {
1527 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1528 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1529 AbilityRequest abilityRequest;
1530 abilityRequest.abilityInfo.deviceId = "id";
1531 abilityRequest.abilityInfo.bundleName = "bundle";
1532 abilityRequest.abilityInfo.name = "name";
1533 abilityRequest.abilityInfo.moduleName = "module";
1534 std::string stringUri = "id/bundle/module/name";
1535 AppExecFwk::ElementName element(abilityRequest.abilityInfo.deviceId, abilityRequest.abilityInfo.bundleName,
1536 abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName);
1537 EXPECT_EQ(element.GetURI(), stringUri);
1538 abilityRecord->currentState_ = AbilityState::ACTIVE;
1539 abilityRecord->SetPreAbilityRecord(serviceRecord1_);
1540 connectManager->serviceMap_.emplace(stringUri, abilityRecord);
1541 int res = connectManager->StartAbilityLocked(abilityRequest);
1542 EXPECT_EQ(res, ERR_OK);
1543 }
1544
1545 /*
1546 * Feature: AbilityConnectManager
1547 * Function: GetOrCreateServiceRecord
1548 * SubFunction: GetOrCreateServiceRecord
1549 * FunctionPoints: NA
1550 * EnvConditions: NA
1551 * CaseDescription: Verify AbilityConnectManager GetOrCreateServiceRecord
1552 */
1553 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetOrCreateServiceRecord_001, TestSize.Level1)
1554 {
1555 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1556 ASSERT_NE(connectManager, nullptr);
1557 AbilityRequest abilityRequest;
1558 bool isCreatedByConnect = false;
1559 std::shared_ptr<AbilityRecord> targetService = nullptr;
1560 bool isLoadedAbility = false;
1561 abilityRequest.abilityInfo.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
1562 connectManager->serviceMap_.clear();
1563 connectManager->GetOrCreateServiceRecord(abilityRequest, isCreatedByConnect, targetService, isLoadedAbility);
1564 }
1565
1566 /*
1567 * Feature: AbilityConnectManager
1568 * Function: ConnectAbilityLocked
1569 * SubFunction: ConnectAbilityLocked
1570 * FunctionPoints: NA
1571 * EnvConditions: NA
1572 * CaseDescription: Verify AbilityConnectManager ConnectAbilityLocked
1573 */
1574 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ConnectAbilityLocked_001, TestSize.Level1)
1575 {
1576 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1577 ASSERT_NE(connectManager, nullptr);
1578 ConnectManager()->SetTaskHandler(TaskHandler());
1579 ConnectManager()->SetEventHandler(EventHandler());
1580 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1581 AbilityRequest abilityRequest;
1582 sptr<IRemoteObject> callerToken = abilityRecord->GetToken();
1583 OHOS::sptr<IAbilityConnection> connect = new AbilityConnectCallback();
1584 OHOS::sptr<IAbilityConnection> callback1 = new AbilityConnectCallback();
1585 OHOS::sptr<IAbilityConnection> callback2 = new AbilityConnectCallback();
1586 std::shared_ptr<ConnectionRecord> connection1 =
1587 std::make_shared<ConnectionRecord>(callerToken, abilityRecord, callback1, nullptr);
1588 std::shared_ptr<ConnectionRecord> connection2 =
1589 std::make_shared<ConnectionRecord>(callerToken, abilityRecord, callback2, nullptr);
1590 abilityRequest.abilityInfo.deviceId = "id";
1591 abilityRequest.abilityInfo.bundleName = "bundle";
1592 abilityRequest.abilityInfo.name = "name";
1593 abilityRequest.abilityInfo.moduleName = "module";
1594 std::string stringUri = "id/bundle/name/module";
1595 abilityRecord->currentState_ = AbilityState::ACTIVE;
1596 abilityRecord->AddConnectRecordToList(connection1);
1597 connectManager->serviceMap_.emplace(stringUri, abilityRecord);
1598 connectManager->connectMap_.clear();
1599 connectManager->ConnectAbilityLocked(abilityRequest, connect, callerToken);
1600 abilityRecord->AddConnectRecordToList(connection2);
1601 connectManager->ConnectAbilityLocked(abilityRequest, connect, callerToken);
1602 connectManager->SetEventHandler(nullptr);
1603 connectManager->ConnectAbilityLocked(abilityRequest, connect, callerToken);
1604 }
1605
1606 /*
1607 * Feature: AbilityConnectManager
1608 * Function: AttachAbilityThreadLocked
1609 * SubFunction: AttachAbilityThreadLocked
1610 * FunctionPoints: NA
1611 * EnvConditions: NA
1612 * CaseDescription: Verify AbilityConnectManager AttachAbilityThreadLocked
1613 */
1614 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_AttachAbilityThreadLocked_001, TestSize.Level1)
1615 {
1616 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1617 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1618 sptr<IAbilityScheduler> scheduler = nullptr;
1619 sptr<IRemoteObject> token = abilityRecord->GetToken();
1620 connectManager->serviceMap_.emplace("first", abilityRecord);
1621 connectManager->eventHandler_ = nullptr;
1622 connectManager->taskHandler_ = nullptr;
1623 int res = connectManager->AttachAbilityThreadLocked(scheduler, token);
1624 EXPECT_EQ(res, ERR_OK);
1625 }
1626
1627 /*
1628 * Feature: AbilityConnectManager
1629 * Function: OnAppStateChanged
1630 * SubFunction: OnAppStateChanged
1631 * FunctionPoints: NA
1632 * EnvConditions: NA
1633 * CaseDescription: Verify AbilityConnectManager OnAppStateChanged
1634 */
1635 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_OnAppStateChanged_001, TestSize.Level1)
1636 {
1637 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1638 ASSERT_NE(connectManager, nullptr);
1639 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1640 AppInfo info;
1641 std::string bundleName = "bundleName";
1642 std::string name = "name";
1643 int32_t uid = 0;
1644 info.processName = bundleName;
1645 abilityRecord->abilityInfo_.applicationInfo.bundleName = bundleName;
1646 abilityRecord->abilityInfo_.applicationInfo.name = name;
1647 abilityRecord->abilityInfo_.uid = uid;
1648 info.appData.push_back({name, uid});
1649 connectManager->serviceMap_.emplace("first", abilityRecord);
1650 connectManager->OnAppStateChanged(info);
1651 }
1652
1653 /*
1654 * Feature: AbilityConnectManager
1655 * Function: OnAppStateChanged
1656 * SubFunction: OnAppStateChanged
1657 * FunctionPoints: NA
1658 * EnvConditions: NA
1659 * CaseDescription: Verify AbilityConnectManager OnAppStateChanged
1660 */
1661 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_OnAppStateChanged_002, TestSize.Level1)
1662 {
1663 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1664 ASSERT_NE(connectManager, nullptr);
1665 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1666 AppInfo info;
1667 std::string bundleName = "bundleName";
1668 std::string name = "name";
1669 int32_t uid = 0;
1670 info.processName = "";
1671 abilityRecord->abilityInfo_.applicationInfo.bundleName = bundleName;
1672 abilityRecord->abilityInfo_.applicationInfo.name = name;
1673 abilityRecord->abilityInfo_.uid = uid;
1674 info.appData.push_back({name, uid});
1675 connectManager->serviceMap_.emplace("first", abilityRecord);
1676 connectManager->serviceMap_.emplace("first", nullptr);
1677 connectManager->OnAppStateChanged(info);
1678 }
1679
1680 /*
1681 * Feature: AbilityConnectManager
1682 * Function: AbilityTransitionDone
1683 * SubFunction: AbilityTransitionDone
1684 * FunctionPoints: NA
1685 * EnvConditions: NA
1686 * CaseDescription: Verify AbilityConnectManager AbilityTransitionDone
1687 */
1688 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_AbilityTransitionDone_001, TestSize.Level1)
1689 {
1690 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1691 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1692 sptr<IRemoteObject> token = abilityRecord->GetToken();
1693 int state = AbilityState::INACTIVE;
1694 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
1695 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
1696 connectManager->serviceMap_.emplace("first", abilityRecord);
1697 int res1 = connectManager->AbilityTransitionDone(token, state);
1698 EXPECT_EQ(res1, ERR_INVALID_VALUE);
1699 state = AbilityState::INITIAL;
1700 connectManager->MoveToTerminatingMap(abilityRecord);
1701 int res2 = connectManager->AbilityTransitionDone(token, state);
1702 EXPECT_EQ(res2, ERR_OK);
1703 }
1704
1705 /*
1706 * Feature: AbilityConnectManager
1707 * Function: ScheduleConnectAbilityDoneLocked
1708 * SubFunction: ScheduleConnectAbilityDoneLocked
1709 * FunctionPoints: NA
1710 * EnvConditions: NA
1711 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
1712 */
1713 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_001, TestSize.Level1)
1714 {
1715 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1716 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1717 sptr<IRemoteObject> token = abilityRecord->GetToken();
1718 sptr<IRemoteObject> remoteObject = nullptr;
1719 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
1720 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
1721 connectManager->serviceMap_.emplace("first", abilityRecord);
1722 int res = connectManager->ScheduleConnectAbilityDoneLocked(token, remoteObject);
1723 EXPECT_EQ(res, ERR_OK);
1724 }
1725
1726 /*
1727 * Feature: AbilityConnectManager
1728 * Function: ScheduleDisconnectAbilityDoneLocked
1729 * SubFunction: ScheduleDisconnectAbilityDoneLocked
1730 * FunctionPoints: NA
1731 * EnvConditions: NA
1732 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
1733 */
1734 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_001, TestSize.Level1)
1735 {
1736 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1737 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1738 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
1739 std::shared_ptr<ConnectionRecord> connection =
1740 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
1741 sptr<IRemoteObject> token = abilityRecord->GetToken();
1742 connection->SetConnectState(ConnectionState::DISCONNECTING);
1743 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
1744 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
1745 abilityRecord->connRecordList_.push_back(connection);
1746 connectManager->serviceMap_.emplace("first", abilityRecord);
1747 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
1748 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
1749 abilityRecord->AddStartId();
1750 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
1751 connectManager->serviceMap_.emplace("first", abilityRecord);
1752 res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
1753 EXPECT_EQ(res, ERR_OK);
1754 }
1755
1756 /*
1757 * Feature: AbilityConnectManager
1758 * Function: ScheduleCommandAbilityDoneLocked
1759 * SubFunction: ScheduleCommandAbilityDoneLocked
1760 * FunctionPoints: NA
1761 * EnvConditions: NA
1762 * CaseDescription: Verify AbilityConnectManager ScheduleCommandAbilityDoneLocked
1763 */
1764 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleCommandAbilityDoneLocked_001, TestSize.Level1)
1765 {
1766 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1767 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1768 sptr<IRemoteObject> token = abilityRecord->GetToken();
1769 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
1770 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
1771 abilityRecord->connRecordList_.clear();
1772 connectManager->serviceMap_.emplace("first", abilityRecord);
1773 int res = connectManager->ScheduleCommandAbilityDoneLocked(token);
1774 EXPECT_EQ(res, ERR_OK);
1775 }
1776
1777 /*
1778 * Feature: AbilityConnectManager
1779 * Function: CompleteCommandAbility
1780 * SubFunction: CompleteCommandAbility
1781 * FunctionPoints: NA
1782 * EnvConditions: NA
1783 * CaseDescription: Verify AbilityConnectManager CompleteCommandAbility
1784 */
1785 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_CompleteCommandAbility_001, TestSize.Level1)
1786 {
1787 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1788 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1789 connectManager->taskHandler_ = nullptr;
1790 connectManager->CompleteCommandAbility(abilityRecord);
1791 EXPECT_TRUE(abilityRecord->IsAbilityState(AbilityState::ACTIVE));
1792 }
1793
1794 /*
1795 * Feature: AbilityConnectManager
1796 * Function: GetServiceRecordByElementName
1797 * SubFunction: GetServiceRecordByElementName
1798 * FunctionPoints: NA
1799 * EnvConditions: NA
1800 * CaseDescription: Verify AbilityConnectManager GetServiceRecordByElementName
1801 */
1802 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetServiceRecordByElementName_001, TestSize.Level1)
1803 {
1804 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1805 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1806 std::string element = "first";
1807 connectManager->serviceMap_.emplace(element, abilityRecord);
1808 auto res = connectManager->GetServiceRecordByElementName(element);
1809 EXPECT_NE(res, nullptr);
1810 }
1811
1812 /*
1813 * Feature: AbilityConnectManager
1814 * Function: GetExtensionByTokenFromServiceMap
1815 * SubFunction: GetExtensionByTokenFromServiceMap
1816 * FunctionPoints: NA
1817 * EnvConditions: NA
1818 * CaseDescription: Verify AbilityConnectManager GetExtensionByTokenFromServiceMap
1819 */
1820 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetExtensionByTokenFromServiceMap_001, TestSize.Level1)
1821 {
1822 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1823 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1824 sptr<IRemoteObject> token = abilityRecord->GetToken();
1825 connectManager->serviceMap_.emplace("first", nullptr);
1826 auto res = connectManager->GetExtensionByTokenFromServiceMap(token);
1827 EXPECT_EQ(res, nullptr);
1828 }
1829
1830 /*
1831 * Feature: AbilityConnectManager
1832 * Function: GetConnectRecordListByCallback
1833 * SubFunction: GetConnectRecordListByCallback
1834 * FunctionPoints: NA
1835 * EnvConditions: NA
1836 * CaseDescription: Verify AbilityConnectManager GetConnectRecordListByCallback
1837 */
1838 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetConnectRecordListByCallback_001, TestSize.Level1)
1839 {
1840 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1841 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1842 sptr<IAbilityConnection> callback = new AbilityConnectCallback();
1843 connectManager->connectMap_.clear();
1844 auto res = connectManager->GetConnectRecordListByCallback(callback);
1845 EXPECT_EQ(res.size(), 0u);
1846 }
1847
1848 /*
1849 * Feature: AbilityConnectManager
1850 * Function: GetExtensionByIdFromServiceMap
1851 * SubFunction: GetExtensionByIdFromServiceMap
1852 * FunctionPoints: NA
1853 * EnvConditions: NA
1854 * CaseDescription: Verify AbilityConnectManager GetExtensionByIdFromServiceMap
1855 */
1856 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetAbilityRecordById_001, TestSize.Level1)
1857 {
1858 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1859 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1860 int64_t abilityRecordId = abilityRecord->GetRecordId();
1861 connectManager->serviceMap_.emplace("first", abilityRecord);
1862 connectManager->serviceMap_.emplace("second", nullptr);
1863 auto res = connectManager->GetExtensionByIdFromServiceMap(abilityRecordId);
1864 EXPECT_NE(res, nullptr);
1865 }
1866
1867 /*
1868 * Feature: AbilityConnectManager
1869 * Function: LoadAbility
1870 * SubFunction: LoadAbility
1871 * FunctionPoints: NA
1872 * EnvConditions: NA
1873 * CaseDescription: Verify AbilityConnectManager LoadAbility
1874 */
1875 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_LoadAbility_001, TestSize.Level1)
1876 {
1877 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1878 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1879 abilityRecord->isLauncherRoot_ = true;
1880 abilityRecord->isRestarting_ = true;
1881 abilityRecord->isLauncherAbility_ = true;
1882 abilityRecord->restartCount_ = -1;
1883 EXPECT_FALSE(abilityRecord->CanRestartRootLauncher());
1884 connectManager->LoadAbility(abilityRecord);
1885 }
1886
1887 /*
1888 * Feature: AbilityConnectManager
1889 * Function: LoadAbility
1890 * SubFunction: LoadAbility
1891 * FunctionPoints: NA
1892 * EnvConditions: NA
1893 * CaseDescription: Verify AbilityConnectManager LoadAbility
1894 */
1895 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_LoadAbility_002, TestSize.Level1)
1896 {
1897 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1898 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1899 std::shared_ptr<CallerRecord> caller1 = std::make_shared<CallerRecord>(0, abilityRecord);
1900 std::shared_ptr<CallerRecord> caller2 = std::make_shared<CallerRecord>();
1901 abilityRecord->isLauncherRoot_ = false;
1902 abilityRecord->isCreateByConnect_ = false;
1903 abilityRecord->callerList_.push_back(caller1);
1904 EXPECT_TRUE(abilityRecord->CanRestartRootLauncher());
1905 connectManager->LoadAbility(abilityRecord);
1906 abilityRecord->callerList_.push_back(caller2);
1907 connectManager->LoadAbility(abilityRecord);
1908 abilityRecord->callerList_.push_back(nullptr);
1909 connectManager->LoadAbility(abilityRecord);
1910 }
1911
1912 /*
1913 * Feature: AbilityConnectManager
1914 * Function: PostTimeOutTask
1915 * SubFunction: PostTimeOutTask
1916 * FunctionPoints: NA
1917 * EnvConditions: NA
1918 * CaseDescription: Verify AbilityConnectManager PostTimeOutTask
1919 */
1920 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_PostTimeOutTask_001, TestSize.Level1)
1921 {
1922 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1923 ASSERT_NE(connectManager, nullptr);
1924 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1925 uint32_t messageId = 2;
1926 connectManager->PostTimeOutTask(abilityRecord, messageId);
1927 }
1928
1929 /*
1930 * Feature: AbilityConnectManager
1931 * Function: HandleStartTimeoutTask
1932 * SubFunction: HandleStartTimeoutTask
1933 * FunctionPoints: NA
1934 * EnvConditions: NA
1935 * CaseDescription: Verify AbilityConnectManager HandleStartTimeoutTask
1936 */
1937 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleStartTimeoutTask_001, TestSize.Level1)
1938 {
1939 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1940 ASSERT_NE(connectManager, nullptr);
1941 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1942 abilityRecord->abilityInfo_.name = "abilityName";
1943 connectManager->HandleStartTimeoutTask(abilityRecord);
1944 }
1945
1946 /*
1947 * Feature: AbilityConnectManager
1948 * Function: HandleStartTimeoutTask
1949 * SubFunction: HandleStartTimeoutTask
1950 * FunctionPoints: NA
1951 * EnvConditions: NA
1952 * CaseDescription: Verify AbilityConnectManager HandleStartTimeoutTask
1953 */
1954 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleStartTimeoutTask_002, TestSize.Level1)
1955 {
1956 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1957 ASSERT_NE(connectManager, nullptr);
1958 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1959 abilityRecord->abilityInfo_.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
1960 connectManager->HandleStartTimeoutTask(abilityRecord);
1961 }
1962
1963 /*
1964 * Feature: AbilityConnectManager
1965 * Function: HandleConnectTimeoutTask
1966 * SubFunction: HandleConnectTimeoutTask
1967 * FunctionPoints: NA
1968 * EnvConditions: NA
1969 * CaseDescription: Verify AbilityConnectManager HandleConnectTimeoutTask
1970 */
1971 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleConnectTimeoutTask_001, TestSize.Level1)
1972 {
1973 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1974 ASSERT_NE(connectManager, nullptr);
1975 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1976 abilityRecord->abilityInfo_.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
1977 connectManager->HandleConnectTimeoutTask(abilityRecord);
1978 }
1979
1980 /*
1981 * Feature: AbilityConnectManager
1982 * Function: HandleCommandTimeoutTask
1983 * SubFunction: HandleCommandTimeoutTask
1984 * FunctionPoints: NA
1985 * EnvConditions: NA
1986 * CaseDescription: Verify AbilityConnectManager HandleCommandTimeoutTask
1987 */
1988 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleCommandTimeoutTask_001, TestSize.Level1)
1989 {
1990 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
1991 ASSERT_NE(connectManager, nullptr);
1992 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
1993 abilityRecord->abilityInfo_.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
1994 connectManager->HandleCommandTimeoutTask(abilityRecord);
1995 abilityRecord->abilityInfo_.name = "abilityName";
1996 connectManager->HandleCommandTimeoutTask(abilityRecord);
1997 }
1998
1999 /*
2000 * Feature: AbilityConnectManager
2001 * Function: HandleTerminateDisconnectTask
2002 * SubFunction: HandleTerminateDisconnectTask
2003 * FunctionPoints: NA
2004 * EnvConditions: NA
2005 * CaseDescription: Verify AbilityConnectManager HandleTerminateDisconnectTask
2006 */
2007 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleTerminateDisconnectTask_001, TestSize.Level1)
2008 {
2009 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2010 ASSERT_NE(connectManager, nullptr);
2011 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
2012 std::shared_ptr<ConnectionRecord> connection =
2013 std::make_shared<ConnectionRecord>(nullptr, nullptr, callback, nullptr);
2014 AbilityConnectManager::ConnectListType connectlist;
2015 connectlist.push_back(nullptr);
2016 connectlist.push_back(connection);
2017 connectManager->HandleTerminateDisconnectTask(connectlist);
2018 }
2019
2020 /*
2021 * Feature: AbilityConnectManager
2022 * Function: DispatchInactive
2023 * SubFunction: DispatchInactive
2024 * FunctionPoints: NA
2025 * EnvConditions: NA
2026 * CaseDescription: Verify AbilityConnectManager DispatchInactive
2027 */
2028 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_DispatchInactive_001, TestSize.Level1)
2029 {
2030 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2031 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2032 int state = 0;
2033 abilityRecord->SetAbilityState(AbilityState::INACTIVATING);
2034 abilityRecord->isCreateByConnect_ = false;
2035 connectManager->SetTaskHandler(TaskHandler());
2036 connectManager->SetEventHandler(EventHandler());
2037 int res = connectManager->DispatchInactive(abilityRecord, state);
2038 EXPECT_EQ(res, ERR_OK);
2039 }
2040
2041 /*
2042 * Feature: AbilityConnectManager
2043 * Function: DispatchTerminate
2044 * SubFunction: DispatchTerminate
2045 * FunctionPoints: NA
2046 * EnvConditions: NA
2047 * CaseDescription: Verify AbilityConnectManager DispatchTerminate
2048 */
2049 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_DispatchTerminate_001, TestSize.Level1)
2050 {
2051 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2052 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2053 connectManager->SetTaskHandler(TaskHandler());
2054 connectManager->SetEventHandler(EventHandler());
2055 int res = connectManager->DispatchTerminate(abilityRecord);
2056 EXPECT_EQ(res, ERR_OK);
2057 }
2058
2059 /*
2060 * Feature: AbilityConnectManager
2061 * Function: CommandAbility
2062 * SubFunction: CommandAbility
2063 * FunctionPoints: NA
2064 * EnvConditions: NA
2065 * CaseDescription: Verify AbilityConnectManager CommandAbility
2066 */
2067 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_CommandAbility_001, TestSize.Level1)
2068 {
2069 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2070 ASSERT_NE(connectManager, nullptr);
2071 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2072 connectManager->SetEventHandler(nullptr);
2073 connectManager->CommandAbility(abilityRecord);
2074 }
2075
2076 /*
2077 * Feature: AbilityConnectManager
2078 * Function: TerminateDone
2079 * SubFunction: TerminateDone
2080 * FunctionPoints: NA
2081 * EnvConditions: NA
2082 * CaseDescription: Verify AbilityConnectManager TerminateDone
2083 */
2084 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_TerminateDone_001, TestSize.Level1)
2085 {
2086 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2087 ASSERT_NE(connectManager, nullptr);
2088 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2089 abilityRecord->SetAbilityState(AbilityState::TERMINATING);
2090 connectManager->TerminateDone(abilityRecord);
2091 }
2092
2093 /*
2094 * Feature: AbilityConnectManager
2095 * Function: GetAbilityConnectedRecordFromRecordList
2096 * SubFunction: GetAbilityConnectedRecordFromRecordList
2097 * FunctionPoints: NA
2098 * EnvConditions: NA
2099 * CaseDescription: Verify AbilityConnectManager GetAbilityConnectedRecordFromRecordList
2100 */
2101 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetAbilityConnectedRecordFromRecordList_001, TestSize.Level1)
2102 {
2103 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2104 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2105 std::list<std::shared_ptr<ConnectionRecord>> connectRecordList;
2106 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
2107 std::shared_ptr<ConnectionRecord> connection =
2108 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
2109 connectRecordList.push_back(connection);
2110 auto res1 = connectManager->GetAbilityConnectedRecordFromRecordList(nullptr, connectRecordList);
2111 EXPECT_EQ(res1, nullptr);
2112 connectRecordList.push_back(nullptr);
2113 auto res2 = connectManager->GetAbilityConnectedRecordFromRecordList(abilityRecord, connectRecordList);
2114 EXPECT_EQ(res2, connection);
2115 }
2116
2117 /*
2118 * Feature: AbilityConnectManager
2119 * Function: RemoveServiceAbility
2120 * SubFunction: RemoveServiceAbility
2121 * FunctionPoints: NA
2122 * EnvConditions: NA
2123 * CaseDescription: Verify AbilityConnectManager RemoveServiceAbility
2124 */
2125 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_RemoveServiceAbility_001, TestSize.Level1)
2126 {
2127 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2128 ASSERT_NE(connectManager, nullptr);
2129 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2130 AbilityInfo abilityInfo;
2131 abilityRecord->abilityInfo_ = abilityInfo;
2132 connectManager->serviceMap_.clear();
2133 connectManager->RemoveServiceAbility(abilityRecord);
2134 }
2135
2136 /*
2137 * Feature: AbilityConnectManager
2138 * Function: OnCallBackDied
2139 * SubFunction: OnCallBackDied
2140 * FunctionPoints: NA
2141 * EnvConditions: NA
2142 * CaseDescription: Verify AbilityConnectManager OnCallBackDied
2143 */
2144 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_OnCallBackDied_001, TestSize.Level1)
2145 {
2146 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2147 ASSERT_NE(connectManager, nullptr);
2148 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2149 wptr<IRemoteObject> remote{ abilityRecord->GetToken() };
2150 connectManager->SetEventHandler(nullptr);
2151 connectManager->OnCallBackDied(remote);
2152 }
2153
2154 /*
2155 * Feature: AbilityConnectManager
2156 * Function: HandleCallBackDiedTask
2157 * SubFunction: HandleCallBackDiedTask
2158 * FunctionPoints: NA
2159 * EnvConditions: NA
2160 * CaseDescription: Verify AbilityConnectManager HandleCallBackDiedTask
2161 */
2162 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleCallBackDiedTask_001, TestSize.Level1)
2163 {
2164 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2165 ASSERT_NE(connectManager, nullptr);
2166 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2167 sptr<IRemoteObject> connect = abilityRecord->GetToken();
2168 connectManager->connectMap_.clear();
2169 connectManager->HandleCallBackDiedTask(connect);
2170 }
2171
2172 /*
2173 * Feature: AbilityConnectManager
2174 * Function: OnAbilityDied
2175 * SubFunction: OnAbilityDied
2176 * FunctionPoints: NA
2177 * EnvConditions: NA
2178 * CaseDescription: Verify AbilityConnectManager OnAbilityDied
2179 */
2180 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_OnAbilityDied_001, TestSize.Level1)
2181 {
2182 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2183 ASSERT_NE(connectManager, nullptr);
2184 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2185 int32_t currentUserId = 0;
2186 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
2187 connectManager->SetEventHandler(nullptr);
2188 connectManager->OnAbilityDied(abilityRecord, currentUserId);
2189 abilityRecord->abilityInfo_.type = AbilityType::EXTENSION;
2190 connectManager->OnAbilityDied(abilityRecord, currentUserId);
2191 }
2192
2193 /*
2194 * Feature: AbilityConnectManager
2195 * Function: OnTimeOut
2196 * SubFunction: OnTimeOut
2197 * FunctionPoints: NA
2198 * EnvConditions: NA
2199 * CaseDescription: Verify AbilityConnectManager OnTimeOut
2200 */
2201 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_OnTimeOut_001, TestSize.Level1)
2202 {
2203 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2204 ASSERT_NE(connectManager, nullptr);
2205 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2206 uint32_t msgId = 2;
2207 connectManager->serviceMap_.emplace("first", abilityRecord);
2208 int64_t abilityRecordId = 1;
2209 connectManager->OnTimeOut(msgId, abilityRecordId);
2210 msgId = 0;
2211 connectManager->OnTimeOut(msgId, abilityRecordId);
2212 }
2213
2214 /*
2215 * Feature: AbilityConnectManager
2216 * Function: HandleInactiveTimeout
2217 * SubFunction: HandleInactiveTimeout
2218 * FunctionPoints: NA
2219 * EnvConditions: NA
2220 * CaseDescription: Verify AbilityConnectManager HandleInactiveTimeout
2221 */
2222 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleInactiveTimeout_001, TestSize.Level1)
2223 {
2224 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2225 ASSERT_NE(connectManager, nullptr);
2226 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2227 abilityRecord->abilityInfo_.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
2228 connectManager->HandleInactiveTimeout(abilityRecord);
2229 abilityRecord->abilityInfo_.name = "abilityName";
2230 connectManager->HandleInactiveTimeout(abilityRecord);
2231 }
2232
2233 /*
2234 * Feature: AbilityConnectManager
2235 * Function: HandleAbilityDiedTask
2236 * SubFunction: HandleAbilityDiedTask
2237 * FunctionPoints: NA
2238 * EnvConditions: NA
2239 * CaseDescription: Verify AbilityConnectManager HandleAbilityDiedTask
2240 */
2241 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_HandleAbilityDiedTask_001, TestSize.Level1)
2242 {
2243 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2244 ASSERT_NE(connectManager, nullptr);
2245 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2246 int32_t currentUserId = 0;
2247 connectManager->serviceMap_.clear();
2248 connectManager->HandleAbilityDiedTask(abilityRecord, currentUserId);
2249 }
2250
2251 /*
2252 * Feature: AbilityConnectManager
2253 * Function: DisconnectBeforeCleanup
2254 * SubFunction: DisconnectBeforeCleanup
2255 * FunctionPoints: NA
2256 * EnvConditions: NA
2257 * CaseDescription: Verify AbilityConnectManager DisconnectBeforeCleanup
2258 */
2259 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_DisconnectBeforeCleanup_001, TestSize.Level1)
2260 {
2261 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(100);
2262 ASSERT_NE(connectManager, nullptr);
2263 ConnectManager()->SetTaskHandler(TaskHandler());
2264 ConnectManager()->SetEventHandler(EventHandler());
2265 serviceRecord1_->SetUid(102 * 200000);
2266 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2267 AbilityRequest abilityRequest;
2268 sptr<IRemoteObject> callerToken = abilityRecord->GetToken();
2269 OHOS::sptr<IAbilityConnection> callback1 = new AbilityConnectCallback();
2270 std::shared_ptr<ConnectionRecord> connection1 =
2271 std::make_shared<ConnectionRecord>(callerToken, abilityRecord, callback1, nullptr);
2272 connection1->AttachCallerInfo();
2273 abilityRequest.abilityInfo.deviceId = "id";
2274 abilityRequest.abilityInfo.bundleName = "bundle";
2275 abilityRequest.abilityInfo.name = "name";
2276 abilityRequest.abilityInfo.moduleName = "module";
2277 std::string stringUri = "id/bundle/name/module";
2278 abilityRecord->currentState_ = AbilityState::ACTIVE;
2279 abilityRecord->AddConnectRecordToList(connection1);
2280 connectManager->AddConnectObjectToMap(callback1->AsObject(), abilityRecord->GetConnectRecordList(), false);
2281 connectManager->serviceMap_.emplace(stringUri, abilityRecord);
2282 connectManager->DisconnectBeforeCleanup();
2283 ASSERT_EQ(abilityRecord->GetConnectRecordList().empty(), true);
2284 ASSERT_EQ(connectManager->GetConnectRecordListByCallback(callback1).empty(), true);
2285 }
2286
2287 /*
2288 * Feature: AbilityConnectManager
2289 * Function: RestartAbility
2290 * SubFunction: RestartAbility
2291 * FunctionPoints: NA
2292 * EnvConditions: NA
2293 * CaseDescription: Verify AbilityConnectManager RestartAbility
2294 */
2295 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_RestartAbility_001, TestSize.Level1)
2296 {
2297 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2298 ASSERT_NE(connectManager, nullptr);
2299 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2300 int32_t currentUserId = 0;
2301 connectManager->userId_ = 1;
2302 abilityRecord->abilityInfo_.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
2303 connectManager->RestartAbility(abilityRecord, currentUserId);
2304 connectManager->userId_ = currentUserId;
2305 connectManager->RestartAbility(abilityRecord, currentUserId);
2306 }
2307
2308 /*
2309 * Feature: AbilityConnectManager
2310 * Function: RestartAbility
2311 * SubFunction: RestartAbility
2312 * FunctionPoints: NA
2313 * EnvConditions: NA
2314 * CaseDescription: Verify AbilityConnectManager RestartAbility
2315 */
2316 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_RestartAbility_002, TestSize.Level1)
2317 {
2318 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2319 ASSERT_NE(connectManager, nullptr);
2320 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2321 int32_t currentUserId = 0;
2322 connectManager->userId_ = currentUserId;
2323 abilityRecord->abilityInfo_.name = "abilityName";
2324 abilityRecord->SetRestartCount(-1);
2325 connectManager->RestartAbility(abilityRecord, currentUserId);
2326 }
2327
2328 /*
2329 * Feature: AbilityConnectManager
2330 * Function: RestartAbility
2331 * SubFunction: RestartAbility
2332 * FunctionPoints: NA
2333 * EnvConditions: NA
2334 * CaseDescription: Verify AbilityConnectManager RestartAbility
2335 */
2336 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_RestartAbility_003, TestSize.Level1)
2337 {
2338 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2339 ASSERT_NE(connectManager, nullptr);
2340 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2341 int32_t currentUserId = 0;
2342 connectManager->userId_ = 1;
2343 abilityRecord->abilityInfo_.bundleName = AbilityConfig::SCENEBOARD_BUNDLE_NAME;
2344 abilityRecord->abilityInfo_.name = AbilityConfig::SCENEBOARD_ABILITY_NAME;
2345 connectManager->HandleAbilityDiedTask(abilityRecord, currentUserId);
2346 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 0);
2347 }
2348
2349 /*
2350 * Feature: AbilityConnectManager
2351 * Function: DumpState
2352 * SubFunction: DumpState
2353 * FunctionPoints: NA
2354 * EnvConditions: NA
2355 * CaseDescription: Verify AbilityConnectManager DumpState
2356 */
2357 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_DumpState_001, TestSize.Level1)
2358 {
2359 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2360 ASSERT_NE(connectManager, nullptr);
2361 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2362 std::vector<std::string> info;
2363 bool isClient = false;
2364 std::string args = "args";
2365 connectManager->serviceMap_.emplace(args, abilityRecord);
2366 connectManager->DumpState(info, isClient, args);
2367 connectManager->serviceMap_.clear();
2368 connectManager->DumpState(info, isClient, args);
2369 args = "";
2370 connectManager->DumpState(info, isClient, args);
2371 }
2372
2373 /*
2374 * Feature: AbilityConnectManager
2375 * Function: DumpStateByUri
2376 * SubFunction: DumpStateByUri
2377 * FunctionPoints: NA
2378 * EnvConditions: NA
2379 * CaseDescription: Verify AbilityConnectManager DumpStateByUri
2380 */
2381 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_DumpStateByUri_001, TestSize.Level1)
2382 {
2383 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2384 ASSERT_NE(connectManager, nullptr);
2385 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2386 std::vector<std::string> info;
2387 bool isClient = false;
2388 std::string args = "args";
2389 std::vector<std::string> params;
2390 connectManager->serviceMap_.emplace(args, abilityRecord);
2391 connectManager->DumpStateByUri(info, isClient, args, params);
2392 connectManager->serviceMap_.clear();
2393 connectManager->DumpStateByUri(info, isClient, args, params);
2394 }
2395
2396 /*
2397 * Feature: AbilityConnectManager
2398 * Function: GetExtensionRunningInfos
2399 * SubFunction: GetExtensionRunningInfos
2400 * FunctionPoints: NA
2401 * EnvConditions: NA
2402 * CaseDescription: Verify AbilityConnectManager GetExtensionRunningInfos
2403 */
2404 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetExtensionRunningInfos_001, TestSize.Level1)
2405 {
2406 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2407 ASSERT_NE(connectManager, nullptr);
2408 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2409 int upperLimit = 1;
2410 std::vector<ExtensionRunningInfo> info;
2411 int32_t userId = 0;
2412 bool isPerm = false;
2413 ExtensionRunningInfo extensionInfo;
2414 info.push_back(extensionInfo);
2415 connectManager->serviceMap_.emplace("first", abilityRecord);
2416 connectManager->GetExtensionRunningInfos(upperLimit, info, userId, isPerm);
2417 }
2418
2419 /*
2420 * Feature: AbilityConnectManager
2421 * Function: GetExtensionRunningInfo
2422 * SubFunction: GetExtensionRunningInfo
2423 * FunctionPoints: NA
2424 * EnvConditions: NA
2425 * CaseDescription: Verify AbilityConnectManager GetExtensionRunningInfo
2426 */
2427 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_GetExtensionRunningInfo_001, TestSize.Level1)
2428 {
2429 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2430 ASSERT_NE(connectManager, nullptr);
2431 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2432 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
2433 std::shared_ptr<ConnectionRecord> connection =
2434 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
2435 int32_t userId = 0;
2436 std::vector<ExtensionRunningInfo> info;
2437 Want want;
2438 AbilityInfo abilityInfo;
2439 ApplicationInfo applicationInfo;
2440 want.SetElementName("device", "bundle", "ability", "module");
2441 abilityRecord->SetWant(want);
2442 abilityRecord->connRecordList_.push_back(nullptr);
2443 abilityRecord->connRecordList_.push_back(connection);
2444 connectManager->GetExtensionRunningInfo(abilityRecord, userId, info);
2445 }
2446
2447 /*
2448 * Feature: AbilityConnectManager
2449 * Function: IsAbilityNeedKeepAlive
2450 * SubFunction:
2451 * FunctionPoints: IsAbilityNeedKeepAlive
2452 * EnvConditions:NA
2453 * CaseDescription: Verify the IsAbilityNeedKeepAlive need keep alive.
2454 * @tc.require: issueI6588V
2455 */
2456 HWTEST_F(AbilityConnectManagerTest, AAFWK_IsAbilityNeedKeepAlive_001, TestSize.Level1)
2457 {
2458 ConnectManager()->SetTaskHandler(TaskHandler());
2459 ConnectManager()->SetEventHandler(EventHandler());
2460
2461 serviceRecord2_->SetKeepAliveBundle(true);
2462 // mock bms return
2463 EXPECT_TRUE(ConnectManager()->IsAbilityNeedKeepAlive(serviceRecord2_));
2464 }
2465
2466 /*
2467 * Feature: AbilityConnectManager
2468 * Function: RestartAbility
2469 * SubFunction:
2470 * FunctionPoints: RestartAbility
2471 * EnvConditions:NA
2472 * CaseDescription: Verify ability not restart the normal ability died.
2473 * @tc.require: issueI6588V
2474 */
2475 HWTEST_F(AbilityConnectManagerTest, AAFWK_RestartAbility_001, TestSize.Level1)
2476 {
2477 ConnectManager()->SetTaskHandler(TaskHandler());
2478 ConnectManager()->SetEventHandler(EventHandler());
2479
2480 int userId = 0;
2481
2482 auto result = ConnectManager()->StartAbility(abilityRequest_);
2483 EXPECT_EQ(OHOS::ERR_OK, result);
2484
2485 auto elementName = abilityRequest_.want.GetElement().GetURI();
2486 std::shared_ptr<AbilityRecord> service = ConnectManager()->GetServiceRecordByElementName(elementName);
2487 EXPECT_NE(service, nullptr);
2488 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
2489
2490 // HandleTerminate
__anon6d2e28cc0702() 2491 auto task = [service, connectManager = ConnectManager(), userId]() {
2492 connectManager->HandleAbilityDiedTask(service, userId);
2493 };
2494 EXPECT_CALL(*taskHandler_, SubmitTaskInner(_, _)).WillRepeatedly(DoAll(SetArgReferee<0>(task),
2495 testing::Invoke(taskHandler_.get(), &MockTaskHandlerWrap::MockTaskHandler)));
2496 ConnectManager()->OnAbilityDied(service, userId);
2497 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 0);
2498 }
2499
2500 /*
2501 * Feature: AbilityConnectManager
2502 * Function: RestartAbility
2503 * SubFunction:
2504 * FunctionPoints: RestartAbility
2505 * EnvConditions:NA
2506 * CaseDescription: Verify ability restart when the resident ability died.
2507 * @tc.require: issueI6588V
2508 */
2509 HWTEST_F(AbilityConnectManagerTest, AAFWK_RestartAbility_002, TestSize.Level1)
2510 {
2511 ConnectManager()->SetTaskHandler(TaskHandler());
2512 ConnectManager()->SetEventHandler(EventHandler());
2513
2514 int userId = 0;
2515
2516 auto result = ConnectManager()->StartAbility(abilityRequest2_);
2517 EXPECT_EQ(OHOS::ERR_OK, result);
2518 WaitUntilTaskDone(TaskHandler());
2519
2520 auto elementName = abilityRequest2_.want.GetElement().GetURI();
2521 auto service = ConnectManager()->GetServiceRecordByElementName(elementName);
2522 EXPECT_NE(service, nullptr);
2523 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
2524
2525 // HandleTerminate
2526 ConnectManager()->HandleAbilityDiedTask(service, userId);
2527 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 0);
2528 }
2529
2530 /*
2531 * Feature: AbilityConnectManager
2532 * Function: RestartAbility
2533 * SubFunction:
2534 * FunctionPoints: RestartAbility
2535 * EnvConditions:NA
2536 * CaseDescription: Verify ability restart when the resident ability died and restart out of max times.
2537 * @tc.require: issueI6588V
2538 */
2539 HWTEST_F(AbilityConnectManagerTest, AAFWK_RestartAbility_003, TestSize.Level1)
2540 {
2541 ConnectManager()->SetTaskHandler(TaskHandler());
2542 ConnectManager()->SetEventHandler(EventHandler());
2543
2544 int userId = 0;
2545
2546 auto result = ConnectManager()->StartAbility(abilityRequest2_);
2547 EXPECT_EQ(OHOS::ERR_OK, result);
2548 WaitUntilTaskDone(TaskHandler());
2549
2550 auto elementName = abilityRequest2_.want.GetElement().GetURI();
2551 std::shared_ptr<AbilityRecord> service = ConnectManager()->GetServiceRecordByElementName(elementName);
2552 EXPECT_NE(service, nullptr);
2553 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
2554 // set the over interval time according the config; without init config, the interval time is 0.
2555 // ensure now - restartTime < intervalTime
2556 service->SetRestartTime(AbilityUtil::SystemTimeMillis() + 1000);
2557
2558 // HandleTerminate
2559 ConnectManager()->HandleAbilityDiedTask(service, userId);
2560 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 0);
2561 }
2562
2563 /*
2564 * Feature: AbilityConnectManager
2565 * Function: PostRestartResidentTask
2566 * SubFunction:
2567 * FunctionPoints: PostRestartResidentTask
2568 * EnvConditions:NA
2569 * CaseDescription: Verify the PostRestartResidentTask process.
2570 * @tc.require: issueI6588V
2571 */
2572 HWTEST_F(AbilityConnectManagerTest, AAFWK_PostRestartResidentTask_001, TestSize.Level1)
2573 {
2574 ConnectManager()->SetTaskHandler(TaskHandler());
2575 ConnectManager()->SetEventHandler(EventHandler());
2576
2577 ConnectManager()->PostRestartResidentTask(abilityRequest2_);
2578 WaitUntilTaskDone(TaskHandler());
2579 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 0);
2580 }
2581
2582 /*
2583 * Feature: AbilityConnectManager
2584 * Function: StartAbility
2585 * SubFunction: NA
2586 * FunctionPoints: StartAbility
2587 * EnvConditions:NA
2588 * CaseDescription: Verify the normal process of startability with session info
2589 */
2590 HWTEST_F(AbilityConnectManagerTest, AAFWK_Start_Service_With_SessionInfo_001, TestSize.Level1)
2591 {
2592 ConnectManager()->SetTaskHandler(TaskHandler());
2593 ConnectManager()->SetEventHandler(EventHandler());
2594
2595 auto sessionInfo = MockSessionInfo(0);
2596 abilityRequest_.sessionInfo = sessionInfo;
2597 auto result = ConnectManager()->StartAbility(abilityRequest_);
2598 EXPECT_EQ(OHOS::ERR_OK, result);
2599 abilityRequest_.sessionInfo = nullptr;
2600 WaitUntilTaskDone(TaskHandler());
2601
2602 auto service = ConnectManager()->GetUIExtensionBySessionInfo(sessionInfo);
2603 EXPECT_EQ(static_cast<int>(ConnectManager()->GetServiceMap().size()), 1);
2604 }
2605
2606 /*
2607 * Feature: AbilityConnectManager
2608 * Function: StartAbilityLocked
2609 * SubFunction: StartAbilityLocked
2610 * FunctionPoints: NA
2611 * EnvConditions: NA
2612 * CaseDescription: Verify AbilityConnectManager StartAbilityLocked with session info
2613 */
2614 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_StartAbilityLocked_With_SessionInfo_001, TestSize.Level1)
2615 {
2616 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2617 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2618 AbilityRequest abilityRequest;
2619 abilityRequest.abilityInfo.deviceId = "id";
2620 abilityRequest.abilityInfo.bundleName = "bundle";
2621 abilityRequest.abilityInfo.name = "name";
2622 abilityRequest.abilityInfo.moduleName = "module";
2623 std::string stringUri = "id/bundle/module/name";
2624 AppExecFwk::ElementName element(abilityRequest.abilityInfo.deviceId, abilityRequest.abilityInfo.bundleName,
2625 abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName);
2626 EXPECT_EQ(element.GetURI(), stringUri);
2627 abilityRecord->currentState_ = AbilityState::ACTIVE;
2628 abilityRecord->SetPreAbilityRecord(serviceRecord1_);
2629 connectManager->serviceMap_.emplace(stringUri, abilityRecord);
2630 abilityRequest.sessionInfo = MockSessionInfo(0);
2631 int res = connectManager->StartAbilityLocked(abilityRequest);
2632 EXPECT_EQ(res, ERR_OK);
2633 }
2634
2635 /*
2636 * Feature: MissionListManager
2637 * Function: MoveToBackground
2638 * SubFunction: NA
2639 * FunctionPoints: MissionListManager MoveToBackground
2640 * EnvConditions: NA
2641 * CaseDescription: Verify MoveToBackground
2642 */
2643 HWTEST_F(AbilityConnectManagerTest, MoveToBackground_001, TestSize.Level1)
2644 {
2645 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2646 ASSERT_NE(connectManager, nullptr);
2647 std::shared_ptr<AbilityRecord> abilityRecord;
2648 connectManager->MoveToBackground(abilityRecord);
2649 connectManager.reset();
2650 }
2651
2652 /*
2653 * Feature: MissionListManager
2654 * Function: MoveToBackground
2655 * SubFunction: NA
2656 * FunctionPoints: MissionListManager MoveToBackground
2657 * EnvConditions: NA
2658 * CaseDescription: Verify MoveToBackground
2659 */
2660 HWTEST_F(AbilityConnectManagerTest, MoveToBackground_002, TestSize.Level1)
2661 {
2662 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2663 ASSERT_NE(connectManager, nullptr);
2664 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2665 abilityRecord->lifeCycleStateInfo_.sceneFlag = 1;
2666 connectManager->MoveToBackground(abilityRecord);
2667 connectManager.reset();
2668 }
2669
2670 /*
2671 * Feature: MissionListManager
2672 * Function: MoveToBackground
2673 * SubFunction: NA
2674 * FunctionPoints: MissionListManager MoveToBackground
2675 * EnvConditions: NA
2676 * CaseDescription: Verify MoveToBackground
2677 */
2678 HWTEST_F(AbilityConnectManagerTest, MoveToBackground_003, TestSize.Level1)
2679 {
2680 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2681 ASSERT_NE(connectManager, nullptr);
2682 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2683 abilityRecord->lifeCycleStateInfo_.sceneFlag = 2;
2684 abilityRecord->SetClearMissionFlag(true);
2685 connectManager->MoveToBackground(abilityRecord);
2686 connectManager.reset();
2687 }
2688
2689
2690 /*
2691 * Feature: MissionListManager
2692 * Function: CompleteBackground
2693 * SubFunction: NA
2694 * FunctionPoints: MissionListManager CompleteBackground
2695 * EnvConditions: NA
2696 * CaseDescription: Verify CompleteBackground
2697 */
2698 HWTEST_F(AbilityConnectManagerTest, CompleteBackground_001, TestSize.Level1)
2699 {
2700 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2701 ASSERT_NE(connectManager, nullptr);
2702 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2703 abilityRecord->currentState_ = AbilityState::FOREGROUND;
2704 connectManager->CompleteBackground(abilityRecord);
2705 connectManager.reset();
2706 }
2707
2708 /*
2709 * Feature: MissionListManager
2710 * Function: CompleteBackground
2711 * SubFunction: NA
2712 * FunctionPoints: MissionListManager CompleteBackground
2713 * EnvConditions: NA
2714 * CaseDescription: Verify CompleteBackground
2715 */
2716 HWTEST_F(AbilityConnectManagerTest, CompleteBackground_002, TestSize.Level1)
2717 {
2718 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2719 ASSERT_NE(connectManager, nullptr);
2720 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2721 abilityRecord->currentState_ = AbilityState::BACKGROUNDING;
2722 abilityRecord->SetPendingState(AbilityState::FOREGROUND);
2723 abilityRecord->SetSwitchingPause(true);
2724 connectManager->CompleteBackground(abilityRecord);
2725 connectManager.reset();
2726 }
2727
2728 /*
2729 * Feature: MissionListManager
2730 * Function: CompleteBackground
2731 * SubFunction: NA
2732 * FunctionPoints: MissionListManager CompleteBackground
2733 * EnvConditions: NA
2734 * CaseDescription: Verify CompleteBackground
2735 */
2736 HWTEST_F(AbilityConnectManagerTest, CompleteBackground_003, TestSize.Level1)
2737 {
2738 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2739 ASSERT_NE(connectManager, nullptr);
2740 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2741 abilityRecord->currentState_ = AbilityState::BACKGROUNDING;
2742 abilityRecord->SetPendingState(AbilityState::BACKGROUND);
2743 abilityRecord->SetSwitchingPause(false);
2744 abilityRecord->SetStartedByCall(true);
2745 abilityRecord->SetStartToBackground(true);
2746 abilityRecord->isReady_ = true;
2747 connectManager->CompleteBackground(abilityRecord);
2748 connectManager.reset();
2749 }
2750
2751 /*
2752 * Feature: MissionListManager
2753 * Function: CompleteBackground
2754 * SubFunction: NA
2755 * FunctionPoints: MissionListManager CompleteBackground
2756 * EnvConditions: NA
2757 * CaseDescription: Verify CompleteBackground
2758 */
2759 HWTEST_F(AbilityConnectManagerTest, CompleteBackground_004, TestSize.Level1)
2760 {
2761 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2762 ASSERT_NE(connectManager, nullptr);
2763 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2764 std::shared_ptr<AbilityRecord> abilityRecord2 = InitAbilityRecord();
2765 abilityRecord->currentState_ = AbilityState::BACKGROUNDING;
2766 abilityRecord->SetPendingState(AbilityState::BACKGROUND);
2767 abilityRecord->SetSwitchingPause(false);
2768 abilityRecord->SetStartedByCall(false);
2769 abilityRecord->SetStartToBackground(true);
2770 abilityRecord->isReady_ = true;
2771 abilityRecord2->currentState_ = AbilityState::BACKGROUND;
2772 connectManager->CompleteBackground(abilityRecord);
2773 connectManager.reset();
2774 }
2775
2776 /*
2777 * Feature: MissionListManager
2778 * Function: CompleteBackground
2779 * SubFunction: NA
2780 * FunctionPoints: MissionListManager CompleteBackground
2781 * EnvConditions: NA
2782 * CaseDescription: Verify CompleteBackground
2783 */
2784 HWTEST_F(AbilityConnectManagerTest, CompleteBackground_005, TestSize.Level1)
2785 {
2786 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2787 ASSERT_NE(connectManager, nullptr);
2788 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2789 std::shared_ptr<AbilityRecord> abilityRecord2 = InitAbilityRecord();
2790 abilityRecord->currentState_ = AbilityState::BACKGROUNDING;
2791 abilityRecord->SetPendingState(AbilityState::BACKGROUND);
2792 abilityRecord->SetSwitchingPause(false);
2793 abilityRecord->SetStartedByCall(true);
2794 abilityRecord->SetStartToBackground(false);
2795 abilityRecord->isReady_ = true;
2796 abilityRecord2->currentState_ = AbilityState::BACKGROUND;
2797 connectManager->CompleteBackground(abilityRecord);
2798 connectManager.reset();
2799 }
2800
2801 /*
2802 * Feature: MissionListManager
2803 * Function: CompleteBackground
2804 * SubFunction: NA
2805 * FunctionPoints: MissionListManager CompleteBackground
2806 * EnvConditions: NA
2807 * CaseDescription: Verify CompleteBackground
2808 */
2809 HWTEST_F(AbilityConnectManagerTest, CompleteBackground_006, TestSize.Level1)
2810 {
2811 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2812 ASSERT_NE(connectManager, nullptr);
2813 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2814 std::shared_ptr<AbilityRecord> abilityRecord2 = InitAbilityRecord();
2815 abilityRecord->currentState_ = AbilityState::BACKGROUNDING;
2816 abilityRecord->SetPendingState(AbilityState::BACKGROUND);
2817 abilityRecord->SetSwitchingPause(false);
2818 abilityRecord->SetStartedByCall(true);
2819 abilityRecord->SetStartToBackground(true);
2820 abilityRecord->isReady_ = false;
2821 abilityRecord2->currentState_ = AbilityState::FOREGROUND;
2822 connectManager->CompleteBackground(abilityRecord);
2823 connectManager.reset();
2824 }
2825
2826 /*
2827 * Feature: MissionListManager
2828 * Function: PrintTimeOutLog
2829 * SubFunction: NA
2830 * FunctionPoints: MissionListManager PrintTimeOutLog
2831 * EnvConditions: NA
2832 * CaseDescription: Verify PrintTimeOutLog
2833 */
2834 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_001, TestSize.Level1)
2835 {
2836 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2837 ASSERT_NE(connectManager, nullptr);
2838 uint32_t msgId = 0;
2839 connectManager->PrintTimeOutLog(nullptr, msgId);
2840 connectManager.reset();
2841 }
2842
2843 /*
2844 * Feature: MissionListManager
2845 * Function: PrintTimeOutLog
2846 * SubFunction: NA
2847 * FunctionPoints: MissionListManager PrintTimeOutLog
2848 * EnvConditions: NA
2849 * CaseDescription: Verify PrintTimeOutLog
2850 */
2851 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_002, TestSize.Level1)
2852 {
2853 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2854 ASSERT_NE(connectManager, nullptr);
2855 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2856 uint32_t msgId = 0;
2857 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2858 connectManager.reset();
2859 }
2860
2861 /*
2862 * Feature: MissionListManager
2863 * Function: PrintTimeOutLog
2864 * SubFunction: NA
2865 * FunctionPoints: MissionListManager PrintTimeOutLog
2866 * EnvConditions: NA
2867 * CaseDescription: Verify PrintTimeOutLog
2868 */
2869 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_003, TestSize.Level1)
2870 {
2871 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2872 ASSERT_NE(connectManager, nullptr);
2873 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2874 uint32_t msgId = 1;
2875 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2876 connectManager.reset();
2877 }
2878
2879 /*
2880 * Feature: MissionListManager
2881 * Function: PrintTimeOutLog
2882 * SubFunction: NA
2883 * FunctionPoints: MissionListManager PrintTimeOutLog
2884 * EnvConditions: NA
2885 * CaseDescription: Verify PrintTimeOutLog
2886 */
2887 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_004, TestSize.Level1)
2888 {
2889 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2890 ASSERT_NE(connectManager, nullptr);
2891 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2892 uint32_t msgId = 2;
2893 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2894 connectManager.reset();
2895 }
2896
2897 /*
2898 * Feature: MissionListManager
2899 * Function: PrintTimeOutLog
2900 * SubFunction: NA
2901 * FunctionPoints: MissionListManager PrintTimeOutLog
2902 * EnvConditions: NA
2903 * CaseDescription: Verify PrintTimeOutLog
2904 */
2905 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_005, TestSize.Level1)
2906 {
2907 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2908 ASSERT_NE(connectManager, nullptr);
2909 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2910 uint32_t msgId = 4;
2911 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2912 connectManager.reset();
2913 }
2914
2915 /*
2916 * Feature: MissionListManager
2917 * Function: PrintTimeOutLog
2918 * SubFunction: NA
2919 * FunctionPoints: MissionListManager PrintTimeOutLog
2920 * EnvConditions: NA
2921 * CaseDescription: Verify PrintTimeOutLog
2922 */
2923 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_006, TestSize.Level1)
2924 {
2925 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2926 ASSERT_NE(connectManager, nullptr);
2927 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2928 uint32_t msgId = 5;
2929 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2930 connectManager.reset();
2931 }
2932
2933 /*
2934 * Feature: MissionListManager
2935 * Function: PrintTimeOutLog
2936 * SubFunction: NA
2937 * FunctionPoints: MissionListManager PrintTimeOutLog
2938 * EnvConditions: NA
2939 * CaseDescription: Verify PrintTimeOutLog
2940 */
2941 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_007, TestSize.Level1)
2942 {
2943 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2944 ASSERT_NE(connectManager, nullptr);
2945 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2946 uint32_t msgId = 6;
2947 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2948 connectManager.reset();
2949 }
2950
2951 /*
2952 * Feature: MissionListManager
2953 * Function: PrintTimeOutLog
2954 * SubFunction: NA
2955 * FunctionPoints: MissionListManager PrintTimeOutLog
2956 * EnvConditions: NA
2957 * CaseDescription: Verify PrintTimeOutLog
2958 */
2959 HWTEST_F(AbilityConnectManagerTest, PrintTimeOutLog_008, TestSize.Level1)
2960 {
2961 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
2962 ASSERT_NE(connectManager, nullptr);
2963 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
2964 uint32_t msgId = 3;
2965 connectManager->PrintTimeOutLog(abilityRecord, msgId);
2966 connectManager.reset();
2967 }
2968
2969 /*
2970 * Feature: AbilityConnectManager
2971 * Function: OnAbilityRequestDone
2972 * SubFunction: NA
2973 * FunctionPoints: AbilityConnectManager OnAbilityRequestDone
2974 * EnvConditions: NA
2975 * CaseDescription: Verify OnAbilityRequestDone
2976 * @tc.require: AR000I8B26
2977 */
2978 HWTEST_F(AbilityConnectManagerTest, OnAbilityRequestDone_001, TestSize.Level1)
2979 {
2980 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
2981 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
2982 sptr<IRemoteObject> token = abilityRecord->GetToken();
2983 abilityRecord->abilityInfo_.extensionAbilityType = ExtensionAbilityType::UI;
2984 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
2985 connectManager->serviceMap_.emplace("first", abilityRecord);
2986 connectManager->OnAbilityRequestDone(token, 2);
2987 EXPECT_EQ(abilityRecord->GetAbilityState(), AbilityState::FOREGROUNDING);
2988 connectManager->serviceMap_.erase("first");
2989 abilityRecord->abilityInfo_.extensionAbilityType = ExtensionAbilityType::UNSPECIFIED;
2990 abilityRecord->SetAbilityState(AbilityState::INITIAL);
2991 }
2992
2993 /*
2994 * Feature: AbilityConnectManager
2995 * Function: ScheduleCommandAbilityWindowDone
2996 * SubFunction: NA
2997 * FunctionPoints: AbilityConnectManager ScheduleCommandAbilityWindowDone
2998 * EnvConditions: NA
2999 * CaseDescription: Verify ScheduleCommandAbilityWindowDone
3000 * @tc.require: AR000I8B26
3001 */
3002 HWTEST_F(AbilityConnectManagerTest, ScheduleCommandAbilityWindowDone_001, TestSize.Level1)
3003 {
3004 ConnectManager()->SetTaskHandler(TaskHandler());
3005 ConnectManager()->SetEventHandler(EventHandler());
3006 auto sessionInfo = MockSessionInfo(0);
3007
3008 sptr<IRemoteObject> nullToken = nullptr;
3009 auto result = ConnectManager()->ScheduleCommandAbilityWindowDone(
3010 nullToken, sessionInfo, WIN_CMD_FOREGROUND, ABILITY_CMD_FOREGROUND);
3011 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
3012
3013 std::shared_ptr<AbilityRecord> ability = nullptr;
3014 OHOS::sptr<OHOS::IRemoteObject> token1 = new OHOS::AAFwk::Token(ability);
3015 auto result1 = ConnectManager()->ScheduleCommandAbilityWindowDone(
3016 token1, sessionInfo, WIN_CMD_FOREGROUND, ABILITY_CMD_FOREGROUND);
3017 EXPECT_EQ(result1, OHOS::ERR_INVALID_VALUE);
3018
3019 sptr<SessionInfo> nullSession = nullptr;
3020 auto result2 = ConnectManager()->ScheduleCommandAbilityWindowDone(
3021 serviceToken_, nullSession, WIN_CMD_FOREGROUND, ABILITY_CMD_FOREGROUND);
3022 EXPECT_EQ(result2, OHOS::ERR_INVALID_VALUE);
3023
3024 auto result3 = ConnectManager()->ScheduleCommandAbilityWindowDone(
3025 serviceToken_, sessionInfo, WIN_CMD_FOREGROUND, ABILITY_CMD_FOREGROUND);
3026 EXPECT_EQ(result3, OHOS::ERR_OK);
3027 }
3028
3029 /*
3030 * Feature: AbilityConnectManager
3031 * Function: ForegroundUIExtensionAbility
3032 * SubFunction: NA
3033 * FunctionPoints: MissionListManager ForegroundUIExtensionAbility
3034 * EnvConditions: NA
3035 * CaseDescription: Verify ForegroundUIExtensionAbility
3036 * @tc.require: AR000I8B26
3037 */
3038 HWTEST_F(AbilityConnectManagerTest, MoveToForeground_001, TestSize.Level1)
3039 {
3040 serviceRecord_->ForegroundUIExtensionAbility();
3041 EXPECT_EQ(serviceRecord_->GetAbilityState(), AbilityState::FOREGROUNDING);
3042 serviceRecord_->SetAbilityState(AbilityState::INITIAL);
3043 }
3044
3045 /*
3046 * Feature: AbilityConnectManager
3047 * Function: DispatchForeground
3048 * SubFunction:
3049 * FunctionPoints: DispatchForeground
3050 * EnvConditions:NA
3051 * CaseDescription: Verify the DispatchForeground process
3052 * @tc.require: AR000I8B26
3053 */
3054 HWTEST_F(AbilityConnectManagerTest, DispatchForeground_001, TestSize.Level1)
3055 {
3056 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
3057 ASSERT_NE(connectManager, nullptr);
3058 std::shared_ptr<AbilityRecord> ability = nullptr;
3059 auto result = connectManager->DispatchForeground(ability);
3060 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
3061
3062 result = connectManager->DispatchForeground(serviceRecord_);
3063 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
3064
3065 connectManager->SetTaskHandler(TaskHandler());
3066 connectManager->SetEventHandler(EventHandler());
3067 result = connectManager->DispatchForeground(serviceRecord_);
3068 EXPECT_EQ(result, OHOS::ERR_OK);
3069 }
3070
3071 /*
3072 * Feature: AbilityConnectManager
3073 * Function: DispatchBackground
3074 * SubFunction:
3075 * FunctionPoints: DispatchBackground
3076 * EnvConditions:NA
3077 * CaseDescription: Verify the DispatchBackground process
3078 * @tc.require: AR000I8B26
3079 */
3080 HWTEST_F(AbilityConnectManagerTest, DispatchBackground_001, TestSize.Level1)
3081 {
3082 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
3083 ASSERT_NE(connectManager, nullptr);
3084 std::shared_ptr<AbilityRecord> ability = nullptr;
3085 auto result = connectManager->DispatchBackground(ability);
3086 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
3087
3088 result = connectManager->DispatchBackground(serviceRecord_);
3089 EXPECT_EQ(result, OHOS::ERR_INVALID_VALUE);
3090
3091 connectManager->SetTaskHandler(TaskHandler());
3092 connectManager->SetEventHandler(EventHandler());
3093 result = connectManager->DispatchBackground(serviceRecord_);
3094 EXPECT_EQ(result, OHOS::ERR_OK);
3095 }
3096
3097 /*
3098 * Feature: AbilityConnectManager
3099 * Function: HandleCommandWindowTimeoutTask
3100 * SubFunction: HandleCommandWindowTimeoutTask
3101 * FunctionPoints: NA
3102 * EnvConditions: NA
3103 * CaseDescription: Verify AbilityConnectManager HandleCommandWindowTimeoutTask
3104 * @tc.require: AR000I8B26
3105 */
3106 HWTEST_F(AbilityConnectManagerTest, HandleCommandWindowTimeoutTask_001, TestSize.Level1)
3107 {
3108 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3109 ASSERT_NE(connectManager, nullptr);
3110 connectManager->HandleCommandWindowTimeoutTask(serviceRecord_, MockSessionInfo(0), WIN_CMD_FOREGROUND);
3111 }
3112
3113 /*
3114 * Feature: AbilityConnectManager
3115 * Function: CommandAbilityWindow
3116 * SubFunction: CommandAbilityWindow
3117 * FunctionPoints: NA
3118 * EnvConditions: NA
3119 * CaseDescription: Verify AbilityConnectManager CommandAbilityWindow
3120 * @tc.require: AR000I8B26
3121 */
3122 HWTEST_F(AbilityConnectManagerTest, CommandAbilityWindow_001, TestSize.Level1)
3123 {
3124 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3125 ASSERT_NE(connectManager, nullptr);
3126 connectManager->SetTaskHandler(TaskHandler());
3127 connectManager->SetEventHandler(EventHandler());
3128 connectManager->CommandAbilityWindow(serviceRecord_, MockSessionInfo(0), WIN_CMD_FOREGROUND);
3129 }
3130
3131 /*
3132 * Feature: AbilityConnectManager
3133 * Function: CompleteForeground
3134 * SubFunction: CompleteForeground
3135 * FunctionPoints: NA
3136 * EnvConditions: NA
3137 * CaseDescription: Verify AbilityConnectManager CompleteForeground
3138 * @tc.require: AR000I8B26
3139 */
3140 HWTEST_F(AbilityConnectManagerTest, CompleteForeground_001, TestSize.Level1)
3141 {
3142 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
3143 ASSERT_NE(connectManager, nullptr);
3144 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
3145 abilityRecord->currentState_ = AbilityState::BACKGROUND;
3146 connectManager->CompleteForeground(abilityRecord);
3147 EXPECT_EQ(abilityRecord->GetAbilityState(), AbilityState::BACKGROUND);
3148
3149 abilityRecord->currentState_ = AbilityState::FOREGROUNDING;
3150 connectManager->CompleteForeground(abilityRecord);
3151 EXPECT_EQ(abilityRecord->GetAbilityState(), AbilityState::FOREGROUND);
3152 connectManager.reset();
3153 }
3154
3155 /*
3156 * Feature: AbilityConnectManager
3157 * Function: AddUIExtWindowDeathRecipient
3158 * SubFunction: AddUIExtWindowDeathRecipient
3159 * FunctionPoints: NA
3160 * EnvConditions: NA
3161 * CaseDescription: Verify AbilityConnectManager AddUIExtWindowDeathRecipient
3162 * @tc.require: AR000I8B26
3163 */
3164 HWTEST_F(AbilityConnectManagerTest, AddUIExtWindowDeathRecipient_001, TestSize.Level1)
3165 {
3166 ConnectManager()->SetTaskHandler(TaskHandler());
3167 ConnectManager()->SetEventHandler(EventHandler());
3168 ConnectManager()->uiExtRecipientMap_.clear();
3169
3170 ConnectManager()->AddUIExtWindowDeathRecipient(nullptr);
3171 EXPECT_TRUE(ConnectManager()->uiExtRecipientMap_.empty());
3172
3173 ConnectManager()->AddUIExtWindowDeathRecipient(callbackA_->AsObject());
3174 EXPECT_EQ(static_cast<int>(ConnectManager()->uiExtRecipientMap_.size()), 1);
3175
3176 // Add twice, do not add repeatedly
3177 ConnectManager()->AddUIExtWindowDeathRecipient(callbackA_->AsObject());
3178 EXPECT_EQ(static_cast<int>(ConnectManager()->uiExtRecipientMap_.size()), 1);
3179 ConnectManager()->uiExtRecipientMap_.clear();
3180 }
3181
3182 /*
3183 * Feature: AbilityConnectManager
3184 * Function: RemoveUIExtWindowDeathRecipient
3185 * SubFunction:
3186 * FunctionPoints: RemoveUIExtWindowDeathRecipient
3187 * EnvConditions:NA
3188 * CaseDescription: Verify the RemoveUIExtWindowDeathRecipient process
3189 * @tc.require: AR000I8B26
3190 */
3191 HWTEST_F(AbilityConnectManagerTest, RemoveUIExtWindowDeathRecipient_001, TestSize.Level1)
3192 {
3193 ConnectManager()->SetTaskHandler(TaskHandler());
3194 ConnectManager()->SetEventHandler(EventHandler());
3195 ConnectManager()->uiExtRecipientMap_.clear();
3196
3197 ConnectManager()->AddUIExtWindowDeathRecipient(callbackA_->AsObject());
3198 EXPECT_EQ(static_cast<int>(ConnectManager()->uiExtRecipientMap_.size()), 1);
3199
3200 ConnectManager()->RemoveUIExtWindowDeathRecipient(nullptr);
3201 EXPECT_FALSE(ConnectManager()->uiExtRecipientMap_.empty());
3202
3203 ConnectManager()->RemoveUIExtWindowDeathRecipient(callbackA_->AsObject());
3204 EXPECT_TRUE(ConnectManager()->uiExtRecipientMap_.empty());
3205 }
3206
3207 /*
3208 * Feature: AbilityConnectManager
3209 * Function: OnUIExtWindowDied
3210 * SubFunction:
3211 * FunctionPoints: OnUIExtWindowDied
3212 * EnvConditions:NA
3213 * CaseDescription: Verify the OnUIExtWindowDied process
3214 * @tc.require: AR000I8B26
3215 */
3216 HWTEST_F(AbilityConnectManagerTest, OnUIExtWindowDied_001, TestSize.Level1)
3217 {
3218 ConnectManager()->SetTaskHandler(TaskHandler());
3219 ConnectManager()->SetEventHandler(EventHandler());
3220 ConnectManager()->uiExtRecipientMap_.clear();
3221 ConnectManager()->uiExtensionMap_.clear();
3222
3223 ConnectManager()->uiExtensionMap_.emplace(
3224 callbackA_->AsObject(), AbilityConnectManager::UIExtWindowMapValType(serviceRecord_, MockSessionInfo(0)));
3225 ConnectManager()->AddUIExtWindowDeathRecipient(callbackA_->AsObject());
3226 ConnectManager()->OnUIExtWindowDied(nullptr);
3227 EXPECT_EQ(static_cast<int>(ConnectManager()->uiExtRecipientMap_.size()), 1);
3228 EXPECT_EQ(static_cast<int>(ConnectManager()->uiExtensionMap_.size()), 1);
3229 }
3230
3231 /*
3232 * Feature: AbilityConnectManager
3233 * Function: HandleUIExtWindowDiedTask
3234 * SubFunction: HandleUIExtWindowDiedTask
3235 * FunctionPoints: NA
3236 * EnvConditions: NA
3237 * CaseDescription: Verify AbilityConnectManager HandleUIExtWindowDiedTask
3238 * @tc.require: AR000I8B26
3239 */
3240 HWTEST_F(AbilityConnectManagerTest, HandleUIExtWindowDiedTask_001, TestSize.Level1)
3241 {
3242 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3243 ASSERT_NE(connectManager, nullptr);
3244 connectManager->uiExtRecipientMap_.clear();
3245 connectManager->uiExtensionMap_.clear();
3246
3247 connectManager->uiExtensionMap_.emplace(
3248 callbackA_->AsObject(), AbilityConnectManager::UIExtWindowMapValType(serviceRecord_, MockSessionInfo(0)));
3249 connectManager->AddUIExtWindowDeathRecipient(callbackA_->AsObject());
3250 connectManager->HandleUIExtWindowDiedTask(nullptr);
3251 EXPECT_EQ(static_cast<int>(connectManager->uiExtRecipientMap_.size()), 1);
3252 EXPECT_EQ(static_cast<int>(connectManager->uiExtensionMap_.size()), 1);
3253
3254 connectManager->HandleUIExtWindowDiedTask(callbackA_->AsObject());
3255 EXPECT_TRUE(connectManager->uiExtRecipientMap_.empty());
3256 EXPECT_TRUE(connectManager->uiExtensionMap_.empty());
3257 }
3258
3259 /*
3260 * Feature: AbilityConnectManager
3261 * Function: IsUIExtensionFocused
3262 * SubFunction: IsUIExtensionFocused
3263 * FunctionPoints: NA
3264 * EnvConditions: NA
3265 * CaseDescription: Verify AbilityConnectManager IsUIExtensionFocused
3266 */
3267 HWTEST_F(AbilityConnectManagerTest, IsUIExtensionFocused_001, TestSize.Level1)
3268 {
3269 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
3270 ASSERT_NE(connectManager, nullptr);
3271 connectManager->uiExtensionMap_.clear();
3272 bool isFocused = connectManager->IsUIExtensionFocused(
3273 serviceRecord_->GetApplicationInfo().accessTokenId, serviceRecord1_->GetToken());
3274 EXPECT_EQ(isFocused, false);
3275 connectManager.reset();
3276 }
3277
3278 /*
3279 * Feature: AbilityConnectManager
3280 * Function: IsUIExtensionFocused
3281 * SubFunction: IsUIExtensionFocused
3282 * FunctionPoints: NA
3283 * EnvConditions: NA
3284 * CaseDescription: Verify AbilityConnectManager IsUIExtensionFocused
3285 */
3286 HWTEST_F(AbilityConnectManagerTest, IsUIExtensionFocused_002, TestSize.Level1)
3287 {
3288 AAFwk::IsMockSaCall::IsMockSaCallWithPermission();
3289 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
3290 ASSERT_NE(connectManager, nullptr);
3291 connectManager->uiExtensionMap_.clear();
3292
3293 std::string device = "device";
3294 std::string abilityName = "uiExtensionUserAbility";
3295 std::string appName = "uiExtensionUser";
3296 std::string bundleName = "com.ix.uiExtensionUser";
3297 std::string moduleName = "entry";
3298 auto request = GenerateAbilityRequest(device, abilityName, appName, bundleName, moduleName);
3299 auto uiExtensionUser = AbilityRecord::CreateAbilityRecord(request);
3300 EXPECT_NE(uiExtensionUser, nullptr);
3301
3302 std::string abilityName1 = "uiExtensionAbility1";
3303 std::string appName1 = "uiExtensionProvider1";
3304 std::string bundleName1 = "com.ix.uiExtensionProvider1";
3305 std::string moduleName1 = "entry";
3306 auto request1 = GenerateAbilityRequest(device, abilityName1, appName1, bundleName1, moduleName1);
3307 auto uiExtension1 = AbilityRecord::CreateAbilityRecord(request1);
3308 EXPECT_NE(uiExtension1, nullptr);
3309 uiExtension1->abilityInfo_.extensionAbilityType = ExtensionAbilityType::SYS_COMMON_UI;
3310 sptr<SessionInfo> sessionInfo1 = new (std::nothrow) SessionInfo();
3311 sessionInfo1->callerToken = uiExtensionUser->GetToken();
3312 uiExtension1->sessionInfo_ = sessionInfo1;
3313 connectManager->uiExtensionMap_.emplace(
3314 callbackA_->AsObject(), AbilityConnectManager::UIExtWindowMapValType(uiExtension1, sessionInfo1));
3315 bool isFocused1 = connectManager->IsUIExtensionFocused(
3316 uiExtension1->GetApplicationInfo().accessTokenId, uiExtensionUser->GetToken());
3317 EXPECT_EQ(isFocused1, true);
3318 std::string abilityName2 = "uiExtensionAbility2";
3319 std::string appName2 = "uiExtensionProvider2";
3320 std::string bundleName2 = "com.ix.uiExtensionProvider2";
3321 std::string moduleName2 = "entry";
3322 auto request2 = GenerateAbilityRequest(device, abilityName2, appName2, bundleName2, moduleName2);
3323 auto uiExtension2 = AbilityRecord::CreateAbilityRecord(request2);
3324 EXPECT_NE(uiExtension2, nullptr);
3325 uiExtension2->abilityInfo_.extensionAbilityType = ExtensionAbilityType::SYS_COMMON_UI;
3326 sptr<SessionInfo> sessionInfo2 = new (std::nothrow) SessionInfo();
3327 sessionInfo2->callerToken = uiExtension1->GetToken();
3328 uiExtension2->sessionInfo_ = sessionInfo2;
3329 connectManager->uiExtensionMap_.emplace(
3330 callbackA_->AsObject(), AbilityConnectManager::UIExtWindowMapValType(uiExtension2, sessionInfo2));
3331 bool isFocused2 = connectManager->IsUIExtensionFocused(
3332 uiExtension2->GetApplicationInfo().accessTokenId, uiExtensionUser->GetToken());
3333 EXPECT_EQ(isFocused2, true);
3334 connectManager.reset();
3335 }
3336
3337 /*
3338 * Feature: AbilityConnectManager
3339 * Function: GetUIExtensionSourceToken
3340 * SubFunction: GetUIExtensionSourceToken
3341 * FunctionPoints: NA
3342 * EnvConditions: NA
3343 * CaseDescription: Verify AbilityConnectManager GetUIExtensionSourceToken
3344 */
3345 HWTEST_F(AbilityConnectManagerTest, GetUIExtensionSourceToken_001, TestSize.Level1)
3346 {
3347 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(3);
3348 ASSERT_NE(connectManager, nullptr);
3349 connectManager->uiExtensionMap_.clear();
3350 auto sourceToken = connectManager->GetUIExtensionSourceToken(nullptr);
3351 EXPECT_EQ(sourceToken, nullptr);
3352 connectManager.reset();
3353 }
3354
3355 /*
3356 * Feature: AbilityConnectManager
3357 * Function: PauseExtensions
3358 * SubFunction: PauseExtensions
3359 * FunctionPoints: NA
3360 * EnvConditions: NA
3361 * CaseDescription: Verify AbilityConnectManager PauseExtensions
3362 */
3363 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_PauseExtensions_001, TestSize.Level1)
3364 {
3365 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3366 ASSERT_NE(connectManager, nullptr);
3367 std::shared_ptr<AbilityRecord> abilityRecord1 = serviceRecord_;
3368 abilityRecord1->abilityInfo_.type = AbilityType::PAGE;
3369 connectManager->serviceMap_.emplace("first", abilityRecord1);
3370 std::shared_ptr<AbilityRecord> abilityRecord2 = AbilityRecord::CreateAbilityRecord(abilityRequest_);
3371 abilityRecord2->abilityInfo_.type = AbilityType::EXTENSION;
3372 abilityRecord2->abilityInfo_.name = AbilityConfig::LAUNCHER_ABILITY_NAME;
3373 abilityRecord2->abilityInfo_.bundleName = AbilityConfig::LAUNCHER_BUNDLE_NAME;
3374 connectManager->serviceMap_.emplace("second", abilityRecord2);
3375 connectManager->PauseExtensions();
3376 }
3377
3378 /*
3379 * Feature: AbilityConnectManager
3380 * Function: SignRestartAppFlag
3381 * CaseDescription: Verify AbilityConnectManager SignRestartAppFlag
3382 */
3383 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_SignRestartAppFlag_001, TestSize.Level1)
3384 {
3385 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3386 ASSERT_NE(connectManager, nullptr);
3387
3388 std::string bundleName = "testBundleName";
3389 std::shared_ptr<AbilityRecord> abilityRecord1 = serviceRecord_;
3390 abilityRecord1->abilityInfo_.bundleName = bundleName;
3391 connectManager->serviceMap_.emplace("first", abilityRecord1);
3392 std::shared_ptr<AbilityRecord> abilityRecord2 = AbilityRecord::CreateAbilityRecord(abilityRequest_);
3393 abilityRecord2->abilityInfo_.bundleName = "errTestBundleName";
3394 connectManager->serviceMap_.emplace("second", abilityRecord2);
3395 int32_t uid = 100;
3396 connectManager->SignRestartAppFlag(uid, "");
3397 }
3398
3399 /*
3400 * Feature: AbilityConnectManager
3401 * Function: BuildEventInfo
3402 * CaseDescription: Verify AbilityConnectManager BuildEventInfo
3403 */
3404 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_BuildEventInfo_001, TestSize.Level1)
3405 {
3406 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3407 ASSERT_NE(connectManager, nullptr);
3408
3409 connectManager->BuildEventInfo(nullptr);
3410 std::shared_ptr<AbilityRecord> abilityRecord = InitAbilityRecord();
3411 connectManager->BuildEventInfo(abilityRecord);
3412 abilityRecord->SetCreateByConnectMode(true);
3413 connectManager->BuildEventInfo(abilityRecord);
3414 }
3415
3416 /**
3417 * @tc.name: UpdateUIExtensionInfo_0100
3418 * @tc.desc: Update want params of ui extension.
3419 * @tc.type: FUNC
3420 */
3421 HWTEST_F(AbilityConnectManagerTest, UpdateUIExtensionInfo_0100, TestSize.Level1)
3422 {
3423 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3424 ASSERT_NE(connectManager, nullptr);
3425
3426 Want want;
3427 AppExecFwk::AbilityInfo abilityInfo;
3428 abilityInfo.extensionAbilityType = ExtensionAbilityType::SYS_COMMON_UI;
3429 AppExecFwk::ApplicationInfo applicationInfo;
3430 auto abilityRecord = std::make_shared<AbilityRecord>(want, abilityInfo, applicationInfo);
3431 abilityRecord->SetUIExtensionAbilityId(1000);
3432 connectManager->UpdateUIExtensionInfo(abilityRecord);
3433 EXPECT_EQ(abilityRecord->GetWant().HasParameter("ability.want.params.uiExtensionAbilityId"), true);
3434 EXPECT_EQ(abilityRecord->GetWant().GetIntParam("ability.want.params.uiExtensionAbilityId", -1), 1000);
3435 }
3436
3437 /**
3438 * @tc.name: PreloadUIExtensionAbilityLocked_0100
3439 * @tc.desc: preload uiextension ability
3440 * @tc.type: FUNC
3441 */
3442 HWTEST_F(AbilityConnectManagerTest, PreloadUIExtensionAbilityLocked_0100, TestSize.Level1)
3443 {
3444 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3445 ASSERT_NE(connectManager, nullptr);
3446
3447 AbilityRequest abilityRequest;
3448 AppExecFwk::ElementName providerElement("0", "com.ohos.uiextensionprovider", "UIExtensionProvider", "entry");
3449 abilityRequest.want.SetElement(providerElement);
3450 abilityRequest.abilityInfo.type = AbilityType::EXTENSION;
3451 std::string hostBundleName = "com.ohos.uiextensionuser";
3452 auto ret = connectManager->PreloadUIExtensionAbilityLocked(abilityRequest, hostBundleName);
3453 EXPECT_NE(ret, ERR_OK);
3454 }
3455
3456 /**
3457 * @tc.name: UnloadUIExtensionAbility_0100
3458 * @tc.desc: UnloadUIExtensionAbility
3459 * @tc.type: FUNC
3460 */
3461 HWTEST_F(AbilityConnectManagerTest, UnloadUIExtensionAbility_0100, TestSize.Level1)
3462 {
3463 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3464 ASSERT_NE(connectManager, nullptr);
3465
3466 AbilityRequest abilityRequest;
3467 AppExecFwk::ElementName providerElement("0", "com.ohos.uiextensionprovider", "UIExtensionProvider", "entry");
3468 abilityRequest.want.SetElement(providerElement);
3469 std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
3470 std::string hostBundleName = "com.ohos.uiextensionuser";
3471 auto ret = connectManager->UnloadUIExtensionAbility(abilityRecord, hostBundleName);
3472 EXPECT_EQ(ret, ERR_CONNECT_MANAGER_NULL_ABILITY_RECORD);
3473 }
3474
3475 /**
3476 * @tc.name: AbilityWindowConfigTransactionDone_0100
3477 * @tc.desc: AbilityWindowConfigTransactionDone
3478 * @tc.type: FUNC
3479 */
3480 HWTEST_F(AbilityConnectManagerTest, AbilityWindowConfigTransactionDone_0100, TestSize.Level1)
3481 {
3482 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3483 ASSERT_NE(connectManager, nullptr);
3484
3485 WindowConfig windowConfig;
3486 auto ret = connectManager->AbilityWindowConfigTransactionDone(serviceToken_, windowConfig);
3487 EXPECT_EQ(ret, ERR_OK);
3488 }
3489
3490 /**
3491 * @tc.name: UpdateKeepAliveEnableState_0100
3492 * @tc.desc: UpdateKeepAliveEnableState
3493 * @tc.type: FUNC
3494 */
3495 HWTEST_F(AbilityConnectManagerTest, UpdateKeepAliveEnableState_0100, TestSize.Level1)
3496 {
3497 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3498 ASSERT_NE(connectManager, nullptr);
3499
3500 auto ret = connectManager->UpdateKeepAliveEnableState("bundle", "entry", "mainAbility", true);
3501 EXPECT_EQ(ret, ERR_OK);
3502 }
3503
3504 /*
3505 * Feature: AbilityConnectManager
3506 * Function: ScheduleConnectAbilityDoneLocked
3507 * SubFunction: ScheduleConnectAbilityDoneLocked
3508 * FunctionPoints: NA
3509 * EnvConditions: NA
3510 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3511 */
3512 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_002, TestSize.Level1)
3513 {
3514 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3515 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3516 sptr<IRemoteObject> token = abilityRecord->GetToken();
3517 sptr<IRemoteObject> remoteObject = nullptr;
3518 abilityRecord->abilityInfo_.type = AbilityType::EXTENSION;
3519 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3520 connectManager->serviceMap_.emplace("first", abilityRecord);
3521 int res = connectManager->ScheduleConnectAbilityDoneLocked(token, remoteObject);
3522 EXPECT_EQ(res, ERR_OK);
3523 }
3524
3525 /*
3526 * Feature: AbilityConnectManager
3527 * Function: ScheduleConnectAbilityDoneLocked
3528 * SubFunction: ScheduleConnectAbilityDoneLocked
3529 * FunctionPoints: NA
3530 * EnvConditions: NA
3531 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3532 */
3533 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_003, TestSize.Level1)
3534 {
3535 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3536 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3537 sptr<IRemoteObject> token = abilityRecord->GetToken();
3538 sptr<IRemoteObject> remoteObject = nullptr;
3539 abilityRecord->abilityInfo_.type = AbilityType::SERVICE;
3540 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3541 connectManager->serviceMap_.emplace("first", abilityRecord);
3542 int res = connectManager->ScheduleConnectAbilityDoneLocked(token, remoteObject);
3543 EXPECT_EQ(res, ERR_OK);
3544 }
3545
3546 /*
3547 * Feature: AbilityConnectManager
3548 * Function: ScheduleConnectAbilityDoneLocked
3549 * SubFunction: ScheduleConnectAbilityDoneLocked
3550 * FunctionPoints: NA
3551 * EnvConditions: NA
3552 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3553 */
3554 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_004, TestSize.Level1)
3555 {
3556 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3557 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3558 sptr<IRemoteObject> token = abilityRecord->GetToken();
3559 sptr<IRemoteObject> remoteObject = nullptr;
3560 abilityRecord->abilityInfo_.type = AbilityType::DATA;
3561 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3562 connectManager->serviceMap_.emplace("first", abilityRecord);
3563 int res = connectManager->ScheduleConnectAbilityDoneLocked(token, remoteObject);
3564 EXPECT_EQ(res, ERR_OK);
3565 }
3566
3567 /*
3568 * Feature: AbilityConnectManager
3569 * Function: ScheduleConnectAbilityDoneLocked
3570 * SubFunction: ScheduleConnectAbilityDoneLocked
3571 * FunctionPoints: NA
3572 * EnvConditions: NA
3573 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3574 */
3575 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_005, TestSize.Level1)
3576 {
3577 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3578 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3579 sptr<IRemoteObject> token = abilityRecord->GetToken();
3580 sptr<IRemoteObject> remoteObject = nullptr;
3581 abilityRecord->abilityInfo_.type = AbilityType::FORM;
3582 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3583 connectManager->serviceMap_.emplace("first", abilityRecord);
3584 int res = connectManager->ScheduleConnectAbilityDoneLocked(token, remoteObject);
3585 EXPECT_EQ(res, ERR_OK);
3586 }
3587
3588 /*
3589 * Feature: AbilityConnectManager
3590 * Function: ScheduleConnectAbilityDoneLocked
3591 * SubFunction: ScheduleConnectAbilityDoneLocked
3592 * FunctionPoints: NA
3593 * EnvConditions: NA
3594 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3595 */
3596 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_006, TestSize.Level1)
3597 {
3598 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3599 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3600 sptr<IRemoteObject> token = abilityRecord->GetToken();
3601 sptr<IRemoteObject> remoteObject = nullptr;
3602 abilityRecord->abilityInfo_.type = AbilityType::UNKNOWN;
3603 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3604 connectManager->serviceMap_.emplace("first", abilityRecord);
3605 int res = connectManager->ScheduleConnectAbilityDoneLocked(token, remoteObject);
3606 EXPECT_EQ(res, ERR_OK);
3607 }
3608
3609 /*
3610 * Feature: AbilityConnectManager
3611 * Function: ScheduleConnectAbilityDoneLocked
3612 * SubFunction: ScheduleConnectAbilityDoneLocked
3613 * FunctionPoints: NA
3614 * EnvConditions: NA
3615 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3616 */
3617 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_007, TestSize.Level1)
3618 {
3619 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3620 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3621 sptr<IRemoteObject> token = abilityRecord->GetToken();
3622 sptr<IRemoteObject> remoteObject = nullptr;
3623 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
3624 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3625 connectManager->serviceMap_.emplace("first", abilityRecord);
3626 int res = connectManager->ScheduleConnectAbilityDoneLocked(nullptr, remoteObject);
3627 EXPECT_EQ(res, ERR_INVALID_VALUE);
3628 }
3629
3630 /*
3631 * Feature: AbilityConnectManager
3632 * Function: ScheduleConnectAbilityDoneLocked
3633 * SubFunction: ScheduleConnectAbilityDoneLocked
3634 * FunctionPoints: NA
3635 * EnvConditions: NA
3636 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3637 */
3638 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_008, TestSize.Level1)
3639 {
3640 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3641 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3642 sptr<IRemoteObject> token = abilityRecord->GetToken();
3643 sptr<IRemoteObject> remoteObject = nullptr;
3644 abilityRecord->abilityInfo_.type = AbilityType::EXTENSION;
3645 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3646 connectManager->serviceMap_.emplace("first", abilityRecord);
3647 int res = connectManager->ScheduleConnectAbilityDoneLocked(nullptr, remoteObject);
3648 EXPECT_EQ(res, ERR_INVALID_VALUE);
3649 }
3650
3651 /*
3652 * Feature: AbilityConnectManager
3653 * Function: ScheduleConnectAbilityDoneLocked
3654 * SubFunction: ScheduleConnectAbilityDoneLocked
3655 * FunctionPoints: NA
3656 * EnvConditions: NA
3657 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3658 */
3659 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_009, TestSize.Level1)
3660 {
3661 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3662 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3663 sptr<IRemoteObject> token = abilityRecord->GetToken();
3664 sptr<IRemoteObject> remoteObject = nullptr;
3665 abilityRecord->abilityInfo_.type = AbilityType::SERVICE;
3666 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3667 connectManager->serviceMap_.emplace("first", abilityRecord);
3668 int res = connectManager->ScheduleConnectAbilityDoneLocked(nullptr, remoteObject);
3669 EXPECT_EQ(res, ERR_INVALID_VALUE);
3670 }
3671
3672 /*
3673 * Feature: AbilityConnectManager
3674 * Function: ScheduleConnectAbilityDoneLocked
3675 * SubFunction: ScheduleConnectAbilityDoneLocked
3676 * FunctionPoints: NA
3677 * EnvConditions: NA
3678 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3679 */
3680 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_010, TestSize.Level1)
3681 {
3682 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3683 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3684 sptr<IRemoteObject> token = abilityRecord->GetToken();
3685 sptr<IRemoteObject> remoteObject = nullptr;
3686 abilityRecord->abilityInfo_.type = AbilityType::DATA;
3687 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3688 connectManager->serviceMap_.emplace("first", abilityRecord);
3689 int res = connectManager->ScheduleConnectAbilityDoneLocked(nullptr, remoteObject);
3690 EXPECT_EQ(res, ERR_INVALID_VALUE);
3691 }
3692
3693 /*
3694 * Feature: AbilityConnectManager
3695 * Function: ScheduleConnectAbilityDoneLocked
3696 * SubFunction: ScheduleConnectAbilityDoneLocked
3697 * FunctionPoints: NA
3698 * EnvConditions: NA
3699 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3700 */
3701 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_011, TestSize.Level1)
3702 {
3703 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3704 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3705 sptr<IRemoteObject> token = abilityRecord->GetToken();
3706 sptr<IRemoteObject> remoteObject = nullptr;
3707 abilityRecord->abilityInfo_.type = AbilityType::FORM;
3708 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3709 connectManager->serviceMap_.emplace("first", abilityRecord);
3710 int res = connectManager->ScheduleConnectAbilityDoneLocked(nullptr, remoteObject);
3711 EXPECT_EQ(res, ERR_INVALID_VALUE);
3712 }
3713
3714 /*
3715 * Feature: AbilityConnectManager
3716 * Function: ScheduleConnectAbilityDoneLocked
3717 * SubFunction: ScheduleConnectAbilityDoneLocked
3718 * FunctionPoints: NA
3719 * EnvConditions: NA
3720 * CaseDescription: Verify AbilityConnectManager ScheduleConnectAbilityDoneLocked
3721 */
3722 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleConnectAbilityDoneLocked_012, TestSize.Level1)
3723 {
3724 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3725 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3726 sptr<IRemoteObject> token = abilityRecord->GetToken();
3727 sptr<IRemoteObject> remoteObject = nullptr;
3728 abilityRecord->abilityInfo_.type = AbilityType::UNKNOWN;
3729 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3730 connectManager->serviceMap_.emplace("first", abilityRecord);
3731 int res = connectManager->ScheduleConnectAbilityDoneLocked(nullptr, remoteObject);
3732 EXPECT_EQ(res, ERR_INVALID_VALUE);
3733 }
3734
3735 /*
3736 * Feature: AbilityConnectManager
3737 * Function: ScheduleDisconnectAbilityDoneLocked
3738 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3739 * FunctionPoints: NA
3740 * EnvConditions: NA
3741 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3742 */
3743 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_002, TestSize.Level1)
3744 {
3745 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3746 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3747 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3748 std::shared_ptr<ConnectionRecord> connection =
3749 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3750 sptr<IRemoteObject> token = abilityRecord->GetToken();
3751 connection->SetConnectState(ConnectionState::DISCONNECTING);
3752 abilityRecord->abilityInfo_.type = AbilityType::EXTENSION;
3753 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3754 abilityRecord->connRecordList_.push_back(connection);
3755 connectManager->serviceMap_.emplace("first", abilityRecord);
3756 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3757 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3758 abilityRecord->AddStartId();
3759 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3760 connectManager->serviceMap_.emplace("first", abilityRecord);
3761 res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3762 EXPECT_EQ(res, ERR_OK);
3763 }
3764
3765 /*
3766 * Feature: AbilityConnectManager
3767 * Function: ScheduleDisconnectAbilityDoneLocked
3768 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3769 * FunctionPoints: NA
3770 * EnvConditions: NA
3771 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3772 */
3773 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_003, TestSize.Level1)
3774 {
3775 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3776 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3777 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3778 std::shared_ptr<ConnectionRecord> connection =
3779 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3780 sptr<IRemoteObject> token = abilityRecord->GetToken();
3781 connection->SetConnectState(ConnectionState::DISCONNECTING);
3782 abilityRecord->abilityInfo_.type = AbilityType::SERVICE;
3783 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3784 abilityRecord->connRecordList_.push_back(connection);
3785 connectManager->serviceMap_.emplace("first", abilityRecord);
3786 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3787 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3788 abilityRecord->AddStartId();
3789 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3790 connectManager->serviceMap_.emplace("first", abilityRecord);
3791 res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3792 EXPECT_EQ(res, ERR_OK);
3793 }
3794
3795 /*
3796 * Feature: AbilityConnectManager
3797 * Function: ScheduleDisconnectAbilityDoneLocked
3798 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3799 * FunctionPoints: NA
3800 * EnvConditions: NA
3801 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3802 */
3803 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_004, TestSize.Level1)
3804 {
3805 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3806 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3807 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3808 std::shared_ptr<ConnectionRecord> connection =
3809 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3810 sptr<IRemoteObject> token = abilityRecord->GetToken();
3811 connection->SetConnectState(ConnectionState::DISCONNECTING);
3812 abilityRecord->abilityInfo_.type = AbilityType::DATA;
3813 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3814 abilityRecord->connRecordList_.push_back(connection);
3815 connectManager->serviceMap_.emplace("first", abilityRecord);
3816 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3817 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3818 abilityRecord->AddStartId();
3819 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3820 connectManager->serviceMap_.emplace("first", abilityRecord);
3821 res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3822 EXPECT_EQ(res, ERR_OK);
3823 }
3824
3825 /*
3826 * Feature: AbilityConnectManager
3827 * Function: ScheduleDisconnectAbilityDoneLocked
3828 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3829 * FunctionPoints: NA
3830 * EnvConditions: NA
3831 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3832 */
3833 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_005, TestSize.Level1)
3834 {
3835 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3836 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3837 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3838 std::shared_ptr<ConnectionRecord> connection =
3839 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3840 sptr<IRemoteObject> token = abilityRecord->GetToken();
3841 connection->SetConnectState(ConnectionState::DISCONNECTING);
3842 abilityRecord->abilityInfo_.type = AbilityType::FORM;
3843 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3844 abilityRecord->connRecordList_.push_back(connection);
3845 connectManager->serviceMap_.emplace("first", abilityRecord);
3846 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3847 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3848 abilityRecord->AddStartId();
3849 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3850 connectManager->serviceMap_.emplace("first", abilityRecord);
3851 res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3852 EXPECT_EQ(res, ERR_OK);
3853 }
3854
3855 /*
3856 * Feature: AbilityConnectManager
3857 * Function: ScheduleDisconnectAbilityDoneLocked
3858 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3859 * FunctionPoints: NA
3860 * EnvConditions: NA
3861 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3862 */
3863 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_006, TestSize.Level1)
3864 {
3865 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3866 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3867 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3868 std::shared_ptr<ConnectionRecord> connection =
3869 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3870 sptr<IRemoteObject> token = abilityRecord->GetToken();
3871 connection->SetConnectState(ConnectionState::DISCONNECTING);
3872 abilityRecord->abilityInfo_.type = AbilityType::UNKNOWN;
3873 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3874 abilityRecord->connRecordList_.push_back(connection);
3875 connectManager->serviceMap_.emplace("first", abilityRecord);
3876 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3877 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3878 abilityRecord->AddStartId();
3879 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3880 connectManager->serviceMap_.emplace("first", abilityRecord);
3881 res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3882 EXPECT_EQ(res, ERR_OK);
3883 }
3884
3885 /*
3886 * Feature: AbilityConnectManager
3887 * Function: ScheduleDisconnectAbilityDoneLocked
3888 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3889 * FunctionPoints: NA
3890 * EnvConditions: NA
3891 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3892 */
3893 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_007, TestSize.Level1)
3894 {
3895 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3896 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3897 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3898 std::shared_ptr<ConnectionRecord> connection =
3899 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3900 sptr<IRemoteObject> token = abilityRecord->GetToken();
3901 connection->SetConnectState(ConnectionState::DISCONNECTING);
3902 abilityRecord->abilityInfo_.type = AbilityType::PAGE;
3903 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3904 abilityRecord->connRecordList_.push_back(connection);
3905 connectManager->serviceMap_.emplace("first", abilityRecord);
3906 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3907 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3908 abilityRecord->AddStartId();
3909 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3910 connectManager->serviceMap_.emplace("first", abilityRecord);
3911 res = connectManager->ScheduleDisconnectAbilityDoneLocked(nullptr);
3912 EXPECT_EQ(res, CONNECTION_NOT_EXIST);
3913 }
3914
3915 /*
3916 * Feature: AbilityConnectManager
3917 * Function: ScheduleDisconnectAbilityDoneLocked
3918 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3919 * FunctionPoints: NA
3920 * EnvConditions: NA
3921 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3922 */
3923 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_008, TestSize.Level1)
3924 {
3925 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3926 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3927 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3928 std::shared_ptr<ConnectionRecord> connection =
3929 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3930 sptr<IRemoteObject> token = abilityRecord->GetToken();
3931 connection->SetConnectState(ConnectionState::DISCONNECTING);
3932 abilityRecord->abilityInfo_.type = AbilityType::EXTENSION;
3933 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3934 abilityRecord->connRecordList_.push_back(connection);
3935 connectManager->serviceMap_.emplace("first", abilityRecord);
3936 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3937 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3938 abilityRecord->AddStartId();
3939 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3940 connectManager->serviceMap_.emplace("first", abilityRecord);
3941 res = connectManager->ScheduleDisconnectAbilityDoneLocked(nullptr);
3942 EXPECT_EQ(res, CONNECTION_NOT_EXIST);
3943 }
3944
3945 /*
3946 * Feature: AbilityConnectManager
3947 * Function: ScheduleDisconnectAbilityDoneLocked
3948 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3949 * FunctionPoints: NA
3950 * EnvConditions: NA
3951 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3952 */
3953 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_009, TestSize.Level1)
3954 {
3955 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3956 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3957 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3958 std::shared_ptr<ConnectionRecord> connection =
3959 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3960 sptr<IRemoteObject> token = abilityRecord->GetToken();
3961 connection->SetConnectState(ConnectionState::DISCONNECTING);
3962 abilityRecord->abilityInfo_.type = AbilityType::SERVICE;
3963 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3964 abilityRecord->connRecordList_.push_back(connection);
3965 connectManager->serviceMap_.emplace("first", abilityRecord);
3966 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3967 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3968 abilityRecord->AddStartId();
3969 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
3970 connectManager->serviceMap_.emplace("first", abilityRecord);
3971 res = connectManager->ScheduleDisconnectAbilityDoneLocked(nullptr);
3972 EXPECT_EQ(res, CONNECTION_NOT_EXIST);
3973 }
3974
3975 /*
3976 * Feature: AbilityConnectManager
3977 * Function: ScheduleDisconnectAbilityDoneLocked
3978 * SubFunction: ScheduleDisconnectAbilityDoneLocked
3979 * FunctionPoints: NA
3980 * EnvConditions: NA
3981 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
3982 */
3983 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_010, TestSize.Level1)
3984 {
3985 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
3986 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
3987 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
3988 std::shared_ptr<ConnectionRecord> connection =
3989 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
3990 sptr<IRemoteObject> token = abilityRecord->GetToken();
3991 connection->SetConnectState(ConnectionState::DISCONNECTING);
3992 abilityRecord->abilityInfo_.type = AbilityType::DATA;
3993 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
3994 abilityRecord->connRecordList_.push_back(connection);
3995 connectManager->serviceMap_.emplace("first", abilityRecord);
3996 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
3997 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
3998 abilityRecord->AddStartId();
3999 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
4000 connectManager->serviceMap_.emplace("first", abilityRecord);
4001 res = connectManager->ScheduleDisconnectAbilityDoneLocked(nullptr);
4002 EXPECT_EQ(res, CONNECTION_NOT_EXIST);
4003 }
4004
4005 /*
4006 * Feature: AbilityConnectManager
4007 * Function: ScheduleDisconnectAbilityDoneLocked
4008 * SubFunction: ScheduleDisconnectAbilityDoneLocked
4009 * FunctionPoints: NA
4010 * EnvConditions: NA
4011 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
4012 */
4013 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_011, TestSize.Level1)
4014 {
4015 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
4016 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
4017 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
4018 std::shared_ptr<ConnectionRecord> connection =
4019 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
4020 sptr<IRemoteObject> token = abilityRecord->GetToken();
4021 connection->SetConnectState(ConnectionState::DISCONNECTING);
4022 abilityRecord->abilityInfo_.type = AbilityType::FORM;
4023 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
4024 abilityRecord->connRecordList_.push_back(connection);
4025 connectManager->serviceMap_.emplace("first", abilityRecord);
4026 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
4027 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
4028 abilityRecord->AddStartId();
4029 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
4030 connectManager->serviceMap_.emplace("first", abilityRecord);
4031 res = connectManager->ScheduleDisconnectAbilityDoneLocked(nullptr);
4032 EXPECT_EQ(res, CONNECTION_NOT_EXIST);
4033 }
4034
4035 /*
4036 * Feature: AbilityConnectManager
4037 * Function: ScheduleDisconnectAbilityDoneLocked
4038 * SubFunction: ScheduleDisconnectAbilityDoneLocked
4039 * FunctionPoints: NA
4040 * EnvConditions: NA
4041 * CaseDescription: Verify AbilityConnectManager ScheduleDisconnectAbilityDoneLocked
4042 */
4043 HWTEST_F(AbilityConnectManagerTest, AAFwk_AbilityMS_ScheduleDisconnectAbilityDoneLocked_012, TestSize.Level1)
4044 {
4045 std::shared_ptr<AbilityConnectManager> connectManager = std::make_shared<AbilityConnectManager>(0);
4046 std::shared_ptr<AbilityRecord> abilityRecord = serviceRecord_;
4047 OHOS::sptr<IAbilityConnection> callback = new AbilityConnectCallback();
4048 std::shared_ptr<ConnectionRecord> connection =
4049 std::make_shared<ConnectionRecord>(abilityRecord->GetToken(), abilityRecord, callback, nullptr);
4050 sptr<IRemoteObject> token = abilityRecord->GetToken();
4051 connection->SetConnectState(ConnectionState::DISCONNECTING);
4052 abilityRecord->abilityInfo_.type = AbilityType::UNKNOWN;
4053 abilityRecord->SetAbilityState(AbilityState::INACTIVE);
4054 abilityRecord->connRecordList_.push_back(connection);
4055 connectManager->serviceMap_.emplace("first", abilityRecord);
4056 int res = connectManager->ScheduleDisconnectAbilityDoneLocked(token);
4057 EXPECT_EQ(res, INVALID_CONNECTION_STATE);
4058 abilityRecord->AddStartId();
4059 abilityRecord->SetAbilityState(AbilityState::ACTIVE);
4060 connectManager->serviceMap_.emplace("first", abilityRecord);
4061 res = connectManager->ScheduleDisconnectAbilityDoneLocked(nullptr);
4062 EXPECT_EQ(res, CONNECTION_NOT_EXIST);
4063 }
4064 } // namespace AAFwk
4065 } // namespace OHOS
4066