1 /*
2 * Copyright (c) 2023-2025 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
18 #define private public
19 #include "auto_fill_manager.h"
20 #include "auto_fill_error.h"
21 #include "auto_fill_extension_callback.h"
22 #include "extension_ability_info.h"
23 #include "hilog_tag_wrapper.h"
24 #include "mock_ui_content.h"
25 #undef private
26
27 using namespace testing;
28 using namespace testing::ext;
29
30 namespace OHOS {
31 namespace AAFwk {
32 namespace {
33 const int32_t EVENT_ID = 1;
34 } // namespace
35 class AutoFillManagerTest : public testing::Test {
36 public:
37 static void SetUpTestCase();
38 static void TearDownTestCase();
39 void SetUp() override;
40 void TearDown() override;
GetUIContent()41 virtual Ace::UIContent* GetUIContent()
42 {
43 return nullptr;
44 }
45 };
46
47 class MockModalUIExtensionProxy : public Ace::ModalUIExtensionProxy {
48 public:
49 MOCK_METHOD1(SendData, void(const AAFwk::WantParams ¶ms));
50 };
51
SetUpTestCase(void)52 void AutoFillManagerTest::SetUpTestCase(void)
53 {}
54
TearDownTestCase(void)55 void AutoFillManagerTest::TearDownTestCase(void)
56 {}
57
SetUp()58 void AutoFillManagerTest::SetUp()
59 {}
60
TearDown()61 void AutoFillManagerTest::TearDown()
62 {}
63
64 /*
65 * Feature: AutoFillManager
66 * Function: RequestAutoFill
67 * SubFunction: NA
68 * FunctionPoints:Calling to the RequestAutoFill function parameter is invalid.
69 * EnvConditions: NA
70 * CaseDescription: Verify the parameter UIContent or fillCallback is nullptr.
71 */
72 HWTEST_F(AutoFillManagerTest, RequestAutoFill_0100, TestSize.Level1)
73 {
74 GTEST_LOG_(INFO) << "AutoFillManagerTest, RequestAutoFill_0100, TestSize.Level1";
75 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
76 const AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
77 const std::shared_ptr<AbilityRuntime::IFillRequestCallback> fillCallback = nullptr;
78 AbilityRuntime::AutoFill::AutoFillResult result;
79 int32_t ret = manager.RequestAutoFill(GetUIContent(), autoFillRequest, fillCallback, result);
80 EXPECT_EQ(ret, AbilityRuntime::AutoFill::AUTO_FILL_OBJECT_IS_NULL);
81 }
82
83 /*
84 * Feature: AutoFillManager
85 * Function: RequestAutoSave
86 * SubFunction: NA
87 * FunctionPoints:Calling to the RequestAutoSave function parameter is invalid.
88 * EnvConditions: NA
89 * CaseDescription: Verify the parameter UIContent or saveCallback is nullptr.
90 */
91 HWTEST_F(AutoFillManagerTest, RequestAutoSave_0100, TestSize.Level1)
92 {
93 GTEST_LOG_(INFO) << "AutoFillManagerTest, RequestAutoSave_0100, TestSize.Level1";
94 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
95 const AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
96 const std::shared_ptr<AbilityRuntime::ISaveRequestCallback> saveCallback = nullptr;
97 AbilityRuntime::AutoFill::AutoFillResult result;
98 int32_t ret = manager.RequestAutoSave(GetUIContent(), autoFillRequest, saveCallback, result);
99 EXPECT_EQ(ret, AbilityRuntime::AutoFill::AUTO_FILL_OBJECT_IS_NULL);
100 }
101
102 /*
103 * Feature: AutoFillManager
104 * Function: HandleRequestExecuteInner
105 * SubFunction: NA
106 * FunctionPoints:Calling to the HandleRequestExecuteInner function parameter is invalid.
107 * EnvConditions: NA
108 * CaseDescription: Verify the parameter UIContent or fillCallback or saveCallback is nullptr.
109 */
110 HWTEST_F(AutoFillManagerTest, HandleRequestExecuteInner_0100, TestSize.Level1)
111 {
112 GTEST_LOG_(INFO) << "AutoFillManagerTest, HandleRequestExecuteInner_0100, TestSize.Level1";
113 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
114 const AbilityBase::AutoFillType autoFillType = AbilityBase::AutoFillType::UNSPECIFIED;
115 const AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
116 const std::shared_ptr<AbilityRuntime::IFillRequestCallback> fillCallback = nullptr;
117 const std::shared_ptr<AbilityRuntime::ISaveRequestCallback> saveCallback = nullptr;
118 AbilityRuntime::AutoFill::AutoFillResult result;
119 int32_t ret =
120 manager.HandleRequestExecuteInner(GetUIContent(), autoFillRequest, fillCallback, saveCallback, result);
121 EXPECT_EQ(ret, AbilityRuntime::AutoFill::AUTO_FILL_OBJECT_IS_NULL);
122 }
123
124 /*
125 * Feature: AutoFillManager
126 * Function: UpdateCustomPopupUIExtension
127 * SubFunction: NA
128 * FunctionPoints: NA
129 * EnvConditions: NA
130 * CaseDescription: Verify if the UpdateCustomPopupUIExtension is valid.
131 */
132 HWTEST_F(AutoFillManagerTest, UpdateCustomPopupUIExtension_0100, TestSize.Level1)
133 {
134 GTEST_LOG_(INFO) << "AutoFillManagerTest, UpdateCustomPopupUIExtension_0100, TestSize.Level1";
135 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
136 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
137 const AbilityBase::ViewData viewdata;
138 manager.UpdateCustomPopupUIExtension(1, viewdata);
139 }
140
141 /*
142 * Feature: AutoFillManager
143 * Function: ConvertAutoFillWindowType
144 * SubFunction: NA
145 * FunctionPoints: NA
146 * EnvConditions: NA
147 * CaseDescription: Verify Based on whether the requestType value can correctly convert
148 * the windowType and extension types.
149 */
150 HWTEST_F(AutoFillManagerTest, ConvertAutoFillWindowType_0100, TestSize.Level1)
151 {
152 GTEST_LOG_(INFO) << "AutoFillManagerTest, ConvertAutoFillWindowType_0100, TestSize.Level1";
153 AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
154 autoFillRequest.autoFillCommand = AbilityRuntime::AutoFill::AutoFillCommand::FILL;
155 autoFillRequest.autoFillType = AbilityBase::AutoFillType::PASSWORD;
156 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
157 bool isSmartAutoFill = false;
158 AbilityRuntime::AutoFill::AutoFillWindowType autoFillWindowType
159 = AbilityRuntime::AutoFill::AutoFillWindowType::MODAL_WINDOW;
160 manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill, autoFillWindowType);
161 EXPECT_EQ(isSmartAutoFill, false);
162
163 autoFillRequest.autoFillCommand = AbilityRuntime::AutoFill::AutoFillCommand::SAVE;
164 autoFillRequest.autoFillType = AbilityBase::AutoFillType::PERSON_FULL_NAME;
165 manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill, autoFillWindowType);
166 EXPECT_EQ(isSmartAutoFill, true);
167 EXPECT_EQ(autoFillWindowType, AbilityRuntime::AutoFill::AutoFillWindowType::MODAL_WINDOW);
168 }
169
170 /*
171 * Feature: AutoFillManager
172 * Function: IsNeedToCreatePopupWindow
173 * SubFunction: NA
174 * FunctionPoints: NA
175 * EnvConditions: NA
176 * CaseDescription: pull up the windowType and extension types.
177 */
178 HWTEST_F(AutoFillManagerTest, IsNeedToCreatePopupWindow_0100, TestSize.Level1)
179 {
180 GTEST_LOG_(INFO) << "AutoFillManagerTest, IsNeedToCreatePopupWindow_0100, TestSize.Level1";
181 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
182 bool isPopupAutoFill = false;
183
184 isPopupAutoFill = manager.IsNeedToCreatePopupWindow(AbilityBase::AutoFillType::PERSON_FULL_NAME);
185 EXPECT_EQ(isPopupAutoFill, true);
186 }
187
188 /*
189 * Feature: AutoFillManager
190 * Function: CloseUIExtension
191 * SubFunction: NA
192 * FunctionPoints: NA
193 * EnvConditions: NA
194 * CaseDescription: test when extensionCallback is not nullptr.
195 */
196 HWTEST_F(AutoFillManagerTest, CloseUIExtension_0100, TestSize.Level1)
197 {
198 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
199 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
200 uint32_t autoFillSessionId = 0;
201 auto extensionCallback = std::make_shared<AbilityRuntime::AutoFillExtensionCallback>();
202 manager.extensionCallbacks_.emplace(autoFillSessionId, extensionCallback);
203 manager.CloseUIExtension(autoFillSessionId);
204 manager.extensionCallbacks_.clear();
205 }
206
207 /*
208 * Feature: AutoFillManager
209 * Function: CloseUIExtension
210 * SubFunction: NA
211 * FunctionPoints: NA
212 * EnvConditions: NA
213 * CaseDescription: test when extensionCallback is nullptr.
214 */
215 HWTEST_F(AutoFillManagerTest, CloseUIExtension_0200, TestSize.Level1)
216 {
217 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
218 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
219 uint32_t autoFillSessionId = 0;
220 manager.CloseUIExtension(autoFillSessionId);
221 }
222
223 /*
224 * Feature: AutoFillManager
225 * Function: BindModalUIExtensionCallback
226 * SubFunction: NA
227 * FunctionPoints: NA
228 * EnvConditions: NA
229 * CaseDescription: test BindModalUIExtensionCallback.
230 */
231 HWTEST_F(AutoFillManagerTest, BindModalUIExtensionCallback_0100, TestSize.Level1)
232 {
233 std::shared_ptr<AbilityRuntime::AutoFillExtensionCallback> extensionCallback;
234 Ace::ModalUIExtensionCallbacks callback;
235 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
236 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
237 manager.BindModalUIExtensionCallback(extensionCallback, callback);
238 }
239
240 /*
241 * Feature: AutoFillManager
242 * Function: RemoveTask、SetTimeOutEvent、RemoveEvent and RemoveAutoFillExtensionCallback
243 * SubFunction: NA
244 * FunctionPoints: NA
245 * EnvConditions: NA
246 * CaseDescription: test RemoveTask、SetTimeOutEvent、RemoveEvent and RemoveAutoFillExtensionCallback.
247 */
248 HWTEST_F(AutoFillManagerTest, AutoFillManager_RemoveTaskAndExtensionCallback_0100, TestSize.Level1)
249 {
250 TAG_LOGI(AAFwkTag::TEST, "RemoveTaskAndSetTimeOutEvent_0100 start");
251
252 auto& manager = AbilityRuntime::AutoFillManager::GetInstance();
253 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
254 uint32_t autoFillSessionId = 0;
255 auto extensionCallback = std::make_shared<AbilityRuntime::AutoFillExtensionCallback>();
256 ASSERT_NE(extensionCallback, nullptr);
257 manager.extensionCallbacks_.emplace(autoFillSessionId, extensionCallback);
258 uint32_t eventId = 0;
259 manager.SetTimeOutEvent(eventId);
260 EXPECT_EQ(manager.taskHandles_.size(), 1);
261 manager.RemoveEvent(eventId);
262 EXPECT_EQ(manager.taskHandles_.size(), 0);
263 EXPECT_EQ(manager.extensionCallbacks_.size(), 1);
264 manager.RemoveAutoFillExtensionCallback(eventId);
265 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
266 uint32_t taskId = 1;
267 manager.taskHandles_.emplace(taskId, nullptr);
268 EXPECT_EQ(manager.taskHandles_.size(), 1);
269 manager.RemoveTask(taskId);
270 EXPECT_EQ(manager.taskHandles_.size(), 0);
271
272 TAG_LOGI(AAFwkTag::TEST, "AutoFillManager_RemoveTaskAndExtensionCallback_Test end");
273 }
274 } // namespace AppExecFwk
275 } // namespace OHOS