From 0a864dc4a1ab869c718fec9bf7b796aebbaac77b Mon Sep 17 00:00:00 2001 From: ma-shaoyin Date: Wed, 26 Feb 2025 10:48:41 +0800 Subject: [PATCH 1/3] Signed-off-by: ma-shaoyin Changes to be committed: --- services/src/ime_info_inquirer.cpp | 13 ++++--------- services/src/input_method_system_ability.cpp | 4 ++-- services/src/peruser_session.cpp | 7 ++++++- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/services/src/ime_info_inquirer.cpp b/services/src/ime_info_inquirer.cpp index e2ba3a628..4f13780c7 100644 --- a/services/src/ime_info_inquirer.cpp +++ b/services/src/ime_info_inquirer.cpp @@ -50,6 +50,7 @@ constexpr uint32_t SUBTYPE_PROFILE_NUM = 1; constexpr const char *DEFAULT_IME_KEY = "persist.sys.default_ime"; constexpr int32_t CONFIG_LEN = 128; constexpr uint32_t DEFAULT_BMS_VALUE = 0; +constexpr const char *UNDEFINED = "undefined"; } // namespace ImeInfoInquirer &ImeInfoInquirer::GetInstance() { @@ -703,7 +704,6 @@ std::shared_ptr ImeInfoInquirer::GetCurrentSubtype(int32_t userId) return std::make_shared(*iter); } IMSA_HILOGW("subtype %{public}s not found.", currentIme->subName.c_str()); - ImeCfgManager::GetInstance().ModifyImeCfg({ userId, currentIme->imeId, it->subProps[0].id, false }); return std::make_shared(it->subProps[0]); } @@ -751,15 +751,10 @@ std::shared_ptr ImeInfoInquirer::GetImeToStart(int32_t userId) if (currentImeCfg->imeId.empty() || !IsImeInstalled(userId, currentImeCfg->bundleName, currentImeCfg->extName)) { auto newIme = GetDefaultIme(); auto info = GetDefaultImeInfo(userId); - if (info == nullptr) { - IMSA_HILOGW("failed to GetDefaultImeInfo"); - newIme.subName = ""; - } else { - newIme.subName = info->subProp.id; - } + newIme.subName = ""; currentImeCfg->imeId.empty() - ? ImeCfgManager::GetInstance().AddImeCfg({ userId, newIme.imeId, newIme.subName, false }) - : ImeCfgManager::GetInstance().ModifyImeCfg({ userId, newIme.imeId, newIme.subName, false}); + ? ImeCfgManager::GetInstance().AddImeCfg({ userId, newIme.imeId, "", false }) + : ImeCfgManager::GetInstance().ModifyImeCfg({ userId, newIme.imeId, "", false}); return std::make_shared(newIme); } return currentImeCfg; diff --git a/services/src/input_method_system_ability.cpp b/services/src/input_method_system_ability.cpp index f67d34ef8..1191d2c4f 100644 --- a/services/src/input_method_system_ability.cpp +++ b/services/src/input_method_system_ability.cpp @@ -1019,9 +1019,9 @@ int32_t InputMethodSystemAbility::OnSwitchInputMethod(int32_t userId, const Swit { InputMethodSyncTrace tracer("InputMethodSystemAbility_OnSwitchInputMethod"); std::string targetImeName = info->prop.name + "/" + info->prop.id; - ImeCfgManager::GetInstance().ModifyImeCfg({ userId, targetImeName, info->subProp.id, true }); + ImeCfgManager::GetInstance().ModifyImeCfg({ userId, targetImeName, switchInfo.subName, true }); auto targetIme = std::make_shared(ImeNativeCfg{ - targetImeName, info->prop.name, switchInfo.subName.empty() ? "" : info->subProp.id, info->prop.id }); + targetImeName, info->prop.name, switchInfo.subName, info->prop.id }); ret = session->StartIme(targetIme); if (ret != ErrorCode::NO_ERROR) { InputMethodSysEvent::GetInstance().InputmethodFaultReporter( diff --git a/services/src/peruser_session.cpp b/services/src/peruser_session.cpp index 0e01d5bfe..1d9795c1f 100644 --- a/services/src/peruser_session.cpp +++ b/services/src/peruser_session.cpp @@ -55,6 +55,7 @@ constexpr uint32_t CHECK_IME_RUNNING_RETRY_TIMES = 10; constexpr int32_t MAX_RESTART_NUM = 3; constexpr int32_t IME_RESET_TIME_OUT = 3; constexpr int32_t MAX_RESTART_TASKS = 2; +constexpr const char *UNDEFINED = "undefined"; PerUserSession::PerUserSession(int userId) : userId_(userId) { } PerUserSession::PerUserSession(int32_t userId, const std::shared_ptr &eventHandler) @@ -1103,7 +1104,11 @@ int32_t PerUserSession::StartCurrentIme(bool isStopCurrentIme) IMSA_HILOGD("currentImeInfo is nullptr!"); return ErrorCode::NO_ERROR; } - + if (imeToStart->subName.empty()) { + IMSA_HILOGW("undefined subtype"); + currentImeInfo->subProp.id = UNDEFINED; + currentImeInfo->subProp.name = UNDEFINED; + } NotifyImeChangeToClients(currentImeInfo->prop, currentImeInfo->subProp); ret = SwitchSubtypeWithoutStartIme(currentImeInfo->subProp); if (ret != ErrorCode::NO_ERROR) { -- Gitee From 9ffa70b962f4eb25069c3c041ae15a4bfa3e5a83 Mon Sep 17 00:00:00 2001 From: ma-shaoyin Date: Wed, 26 Feb 2025 15:26:49 +0800 Subject: [PATCH 2/3] Signed-off-by: ma-shaoyin Changes to be committed: --- services/src/ime_info_inquirer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/services/src/ime_info_inquirer.cpp b/services/src/ime_info_inquirer.cpp index 4f13780c7..e4198c1bc 100644 --- a/services/src/ime_info_inquirer.cpp +++ b/services/src/ime_info_inquirer.cpp @@ -50,7 +50,6 @@ constexpr uint32_t SUBTYPE_PROFILE_NUM = 1; constexpr const char *DEFAULT_IME_KEY = "persist.sys.default_ime"; constexpr int32_t CONFIG_LEN = 128; constexpr uint32_t DEFAULT_BMS_VALUE = 0; -constexpr const char *UNDEFINED = "undefined"; } // namespace ImeInfoInquirer &ImeInfoInquirer::GetInstance() { -- Gitee From 17824cc9cadc6bb93bee9b99c51d3fa7eb38bdfa Mon Sep 17 00:00:00 2001 From: ma-shaoyin Date: Thu, 27 Feb 2025 09:58:06 +0800 Subject: [PATCH 3/3] Signed-off-by: ma-shaoyin Changes to be committed: --- services/src/ime_info_inquirer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/services/src/ime_info_inquirer.cpp b/services/src/ime_info_inquirer.cpp index e4198c1bc..824816865 100644 --- a/services/src/ime_info_inquirer.cpp +++ b/services/src/ime_info_inquirer.cpp @@ -749,7 +749,6 @@ std::shared_ptr ImeInfoInquirer::GetImeToStart(int32_t userId) IMSA_HILOGD("userId: %{public}d, currentIme: %{public}s.", userId, currentImeCfg->imeId.c_str()); if (currentImeCfg->imeId.empty() || !IsImeInstalled(userId, currentImeCfg->bundleName, currentImeCfg->extName)) { auto newIme = GetDefaultIme(); - auto info = GetDefaultImeInfo(userId); newIme.subName = ""; currentImeCfg->imeId.empty() ? ImeCfgManager::GetInstance().AddImeCfg({ userId, newIme.imeId, "", false }) -- Gitee