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