1 /*
2 * Copyright (C) 2022 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 "accessibility_common_helper.h"
18 #include "accessibility_mt_helper.h"
19 #include "accessible_ability_channel.h"
20 #include "accessible_ability_connection.h"
21 #include "accessible_ability_manager_service.h"
22 #include "common_event_manager.h"
23 #include "iservice_registry.h"
24
25 using namespace testing;
26 using namespace testing::ext;
27 using namespace OHOS::EventFwk;
28
29 namespace OHOS {
30 namespace Accessibility {
31 class AccessibilityCommonEventRegistryTest : public ::testing::Test {
32 public:
AccessibilityCommonEventRegistryTest()33 AccessibilityCommonEventRegistryTest()
34 {}
~AccessibilityCommonEventRegistryTest()35 ~AccessibilityCommonEventRegistryTest()
36 {}
37
38 static void SetUpTestCase();
39 static void TearDownTestCase();
40 void SetUp() override;
41 void TearDown() override;
42 void AddAccessibleAbilityConnection();
43
44 sptr<AccessibilityAccountData> accountData_ = nullptr;
45 sptr<AccessibleAbilityChannel> aastub_ = nullptr;
46 sptr<AppExecFwk::ElementName> elementName_ = nullptr;
47 sptr<AccessibleAbilityConnection> AAConnection_ = nullptr;
48 };
49
SetUpTestCase()50 void AccessibilityCommonEventRegistryTest::SetUpTestCase()
51 {
52 GTEST_LOG_(INFO) << "AccessibilityCommonEventRegistryTest SetUpTestCase";
53 // Start AAMS
54 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStart();
55 AccessibilityCommonHelper::GetInstance().WaitForServicePublish();
56 Singleton<AccessibleAbilityManagerService>::GetInstance().SwitchedUser(AccessibilityHelper::accountId_);
57 GTEST_LOG_(INFO) << "AccessibleAbilityManagerService is published";
58 }
59
TearDownTestCase()60 void AccessibilityCommonEventRegistryTest::TearDownTestCase()
61 {
62 GTEST_LOG_(INFO) << "AccessibilityCommonEventRegistryTest TearDownTestCase";
63 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStop();
64 }
65
SetUp()66 void AccessibilityCommonEventRegistryTest::SetUp()
67 {
68 GTEST_LOG_(INFO) << "SetUp";
69 }
70
TearDown()71 void AccessibilityCommonEventRegistryTest::TearDown()
72 {
73 GTEST_LOG_(INFO) << "TearDown";
74 accountData_ = nullptr;
75 aastub_ = nullptr;
76 elementName_ = nullptr;
77 AAConnection_ = nullptr;
78 }
79
AddAccessibleAbilityConnection()80 void AccessibilityCommonEventRegistryTest::AddAccessibleAbilityConnection()
81 {
82 GTEST_LOG_(INFO) << "AccessibilityCommonEventRegistryTest AddAccessibleAbilityConnection";
83 AAFwk::Want want;
84 AppExecFwk::ElementName name;
85 name.SetAbilityName("com.example.aalisttest.MainAbility");
86 name.SetBundleName("com.example.aalisttest");
87 want.SetElement(name);
88 AccessibilityAbilityInitParams initParams;
89 std::shared_ptr<AccessibilityAbilityInfo> abilityInfo = std::make_shared<AccessibilityAbilityInfo>(initParams);
90
91 accountData_ = Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
92 AAConnection_ = new AccessibleAbilityConnection(accountData_->GetAccountId(), 0, *abilityInfo);
93 elementName_ = new AppExecFwk::ElementName("name", "bundleName", "id");
94 aastub_ = new AccessibleAbilityChannel(accountData_->GetAccountId(), abilityInfo->GetId());
95 AAConnection_->OnAbilityConnectDoneSync(*elementName_, aastub_);
96 accountData_->AddInstalledAbility(*abilityInfo);
97 sleep(1);
98 }
99
100 /**
101 * @tc.number: AccessibilityCommonEventRegistry_ModuleTest_PackageChanged_001
102 * @tc.name: PackageChanged
103 * @tc.desc: There is a connected ability. The package has changed. Empty all install ability.
104 */
105 HWTEST_F(AccessibilityCommonEventRegistryTest, AccessibilityCommonEvent_ModuleTest_PackageChanged_001,
106 TestSize.Level1)
107 {
108 GTEST_LOG_(INFO) << "AccessibilityCommonEvent_ModuleTest_PackageChanged_001 start";
109 AddAccessibleAbilityConnection();
110 EXPECT_EQ(1, int(accountData_->GetInstalledAbilities().size()));
111 // PackageChanged
112 std::string bundleName = "bundleName";
113 Singleton<AccessibleAbilityManagerService>::GetInstance().PackageChanged(bundleName);
114 EXPECT_EQ(1, int(accountData_->GetInstalledAbilities().size()));
115
116 AAConnection_->OnAbilityDisconnectDoneSync(*elementName_);
117
118 GTEST_LOG_(INFO) << "AccessibilityCommonEvent_ModuleTest_PackageChanged_001 end";
119 }
120 } // namespace Accessibility
121 } // namespace OHOS