!9031 输入法:修改自动填充类型

Merge pull request !9031 from xinking129/master
This commit is contained in:
openharmony_ci
2024-06-18 06:59:32 +00:00
committed by Gitee
3 changed files with 44 additions and 11 deletions
@@ -110,9 +110,10 @@ private:
const std::shared_ptr<AutoFillExtensionCallback> &extensionCallback, Ace::ModalUIExtensionCallbacks &callback);
void SetTimeOutEvent(uint32_t eventId);
AutoFill::AutoFillWindowType ConvertAutoFillWindowType(const AutoFill::AutoFillRequest &request,
bool &isSmartAutoFill);
bool ConvertAutoFillWindowType(const AutoFill::AutoFillRequest &request,
bool &isSmartAutoFill, AutoFill::AutoFillWindowType &autoFillWindowType);
bool IsPreviousRequestFinished(Ace::UIContent *uiContent);
bool IsNeed2SaveRequest(const AbilityBase::ViewData &viewData, bool &isSmartAutoFill);
std::mutex extensionCallbacksMutex_;
std::mutex modalProxyMapMutex_;
@@ -118,7 +118,13 @@ int32_t AutoFillManager::HandleRequestExecuteInner(
BindModalUIExtensionCallback(extensionCallback, callback);
bool isSmartAutoFill = false;
auto autoFillWindowType = ConvertAutoFillWindowType(request, isSmartAutoFill);
AutoFill::AutoFillWindowType autoFillWindowType = AutoFill::AutoFillWindowType::MODAL_WINDOW;
if (!ConvertAutoFillWindowType(request, isSmartAutoFill, autoFillWindowType)) {
TAG_LOGE(AAFwkTag::AUTOFILLMGR, "Convert auto fill type failed.");
RemoveEvent(eventId_);
return AutoFill::AUTO_FILL_CREATE_MODULE_UI_EXTENSION_FAILED;
}
isPopup = autoFillWindowType == AutoFill::AutoFillWindowType::POPUP_WINDOW ? true : false;
auto sessionId = CreateAutoFillExtension(uiContent, request, callback, autoFillWindowType, isSmartAutoFill);
if (sessionId == AUTO_FILL_UI_EXTENSION_SESSION_ID_INVALID) {
@@ -307,10 +313,32 @@ int32_t AutoFillManager::CreateAutoFillExtension(Ace::UIContent *uiContent,
return sessionId;
}
AutoFill::AutoFillWindowType AutoFillManager::ConvertAutoFillWindowType(const AutoFill::AutoFillRequest &request,
bool &isSmartAutoFill)
bool AutoFillManager::IsNeed2SaveRequest(const AbilityBase::ViewData& viewData, bool& isSmartAutoFill)
{
AutoFill::AutoFillWindowType autoFillWindowType = AutoFill::AutoFillWindowType::MODAL_WINDOW;
bool ret = false;
for (auto it = viewData.nodes.begin(); it != viewData.nodes.end(); ++it) {
if ((it->autoFillType == AbilityBase::AutoFillType::PASSWORD ||
it->autoFillType == AbilityBase::AutoFillType::USER_NAME ||
it->autoFillType == AbilityBase::AutoFillType::NEW_PASSWORD) &&
it->enableAutoFill && !it->value.empty()) {
isSmartAutoFill = false;
return true;
}
if (AbilityBase::AutoFillType::FULL_STREET_ADDRESS <= it->autoFillType &&
it->autoFillType <= AbilityBase::AutoFillType::FORMAT_ADDRESS &&
it->enableAutoFill && !it->value.empty()) {
isSmartAutoFill = true;
ret = true;
}
}
return ret;
}
bool AutoFillManager::ConvertAutoFillWindowType(const AutoFill::AutoFillRequest &request,
bool &isSmartAutoFill, AutoFill::AutoFillWindowType &autoFillWindowType)
{
bool ret = true;
autoFillWindowType = AutoFill::AutoFillWindowType::MODAL_WINDOW;
AbilityBase::AutoFillType autoFillType = request.autoFillType;
if (autoFillType >= AbilityBase::AutoFillType::FULL_STREET_ADDRESS &&
autoFillType <= AbilityBase::AutoFillType::FORMAT_ADDRESS) {
@@ -327,9 +355,11 @@ AutoFill::AutoFillWindowType AutoFillManager::ConvertAutoFillWindowType(const Au
isSmartAutoFill = false;
}
autoFillWindowType = request.autoFillCommand == AutoFill::AutoFillCommand::SAVE ?
AutoFill::AutoFillWindowType::MODAL_WINDOW : autoFillWindowType;
return autoFillWindowType;
if (request.autoFillCommand == AutoFill::AutoFillCommand::SAVE) {
ret = IsNeed2SaveRequest(request.viewData, isSmartAutoFill);
autoFillWindowType = AutoFill::AutoFillWindowType::MODAL_WINDOW;
}
return ret;
}
void AutoFillManager::SetTimeOutEvent(uint32_t eventId)
@@ -317,12 +317,14 @@ HWTEST_F(AutoFillManagerTest, ConvertAutoFillWindowType_0100, TestSize.Level1)
autoFillRequest.autoFillType = AbilityBase::AutoFillType::PASSWORD;
auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
bool isSmartAutoFill = false;
auto autoFillWindowType = manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill);
AbilityRuntime::AutoFill::AutoFillWindowType autoFillWindowType
= AbilityRuntime::AutoFill::AutoFillWindowType::MODAL_WINDOW;
manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill, autoFillWindowType);
EXPECT_EQ(isSmartAutoFill, false);
autoFillRequest.autoFillCommand = AbilityRuntime::AutoFill::AutoFillCommand::SAVE;
autoFillRequest.autoFillType = AbilityBase::AutoFillType::PERSON_FULL_NAME;
autoFillWindowType = manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill);
manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill, autoFillWindowType);
EXPECT_EQ(isSmartAutoFill, true);
EXPECT_EQ(autoFillWindowType, AbilityRuntime::AutoFill::AutoFillWindowType::MODAL_WINDOW);
}