From 39e153e358c2e998d2015190abf6503ea569a535 Mon Sep 17 00:00:00 2001 From: LY Date: Sat, 10 May 2025 17:31:53 +0800 Subject: [PATCH] =?UTF-8?q?IDL=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: LY --- services/II18nServiceAbility.idl | 2 + services/include/i18n_service_ability.h | 3 ++ services/src/i18n_service_ability.cpp | 59 +++++++------------------ 3 files changed, 22 insertions(+), 42 deletions(-) diff --git a/services/II18nServiceAbility.idl b/services/II18nServiceAbility.idl index 23d33229..673884dd 100644 --- a/services/II18nServiceAbility.idl +++ b/services/II18nServiceAbility.idl @@ -13,6 +13,8 @@ * limitations under the License. */ +option_stub_hooks on; + interface OHOS.Global.I18n.II18nServiceAbility { void SetSystemLanguage([in] String language, [out] int code); void SetSystemRegion([in] String region, [out] int code); diff --git a/services/include/i18n_service_ability.h b/services/include/i18n_service_ability.h index a2b5e157..6a9902bd 100644 --- a/services/include/i18n_service_ability.h +++ b/services/include/i18n_service_ability.h @@ -59,6 +59,9 @@ protected: */ int32_t OnIdle(const SystemAbilityOnDemandReason& idleReason) override; + int32_t CallbackEnter(uint32_t code) override; + int32_t CallbackExit(uint32_t code, int32_t ret) override; + private: enum class ModifyTaskNumber { DECREASE = -1, diff --git a/services/src/i18n_service_ability.cpp b/services/src/i18n_service_ability.cpp index 5a9bc837..e5e9e8ee 100644 --- a/services/src/i18n_service_ability.cpp +++ b/services/src/i18n_service_ability.cpp @@ -50,13 +50,10 @@ I18nServiceAbility::~I18nServiceAbility() ErrCode I18nServiceAbility::SetSystemLanguage(const std::string& language, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::SetSystemLanguage: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } #ifdef SUPPORT_MULTI_USER @@ -66,19 +63,15 @@ ErrCode I18nServiceAbility::SetSystemLanguage(const std::string& language, int32 errCode = LocaleConfig::SetSystemLanguage(language); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::SetSystemRegion(const std::string& region, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::SetSystemRegion: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } #ifdef SUPPORT_MULTI_USER @@ -88,19 +81,15 @@ ErrCode I18nServiceAbility::SetSystemRegion(const std::string& region, int32_t& errCode = LocaleConfig::SetSystemRegion(region); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::SetSystemLocale(const std::string& locale, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::SetSystemLocale: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } #ifdef SUPPORT_MULTI_USER @@ -110,19 +99,15 @@ ErrCode I18nServiceAbility::SetSystemLocale(const std::string& locale, int32_t& errCode = LocaleConfig::SetSystemLocale(locale); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::Set24HourClock(const std::string& flag, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::Set24HourClock: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } #ifdef SUPPORT_MULTI_USER @@ -132,19 +117,15 @@ ErrCode I18nServiceAbility::Set24HourClock(const std::string& flag, int32_t& cod errCode = LocaleConfig::Set24HourClock(flag); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::SetUsingLocalDigit(bool flag, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::SetUsingLocalDigit: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } #ifdef SUPPORT_MULTI_USER @@ -154,53 +135,41 @@ ErrCode I18nServiceAbility::SetUsingLocalDigit(bool flag, int32_t& code) errCode = LocaleConfig::SetUsingLocalDigit(flag); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::AddPreferredLanguage(const std::string& language, int32_t index, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::AddPreferredLanguage: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } errCode = PreferredLanguage::AddPreferredLanguage(language, index); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::RemovePreferredLanguage(int32_t index, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::RemovePreferredLanguage: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } errCode = PreferredLanguage::RemovePreferredLanguage(index); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::SetTemperatureType(int32_t type, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::SetTemperatureType: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } TemperatureType temperatureType = static_cast(type); @@ -211,19 +180,15 @@ ErrCode I18nServiceAbility::SetTemperatureType(int32_t type, int32_t& code) errCode = LocaleConfig::SetTemperatureType(temperatureType); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::SetFirstDayOfWeek(int32_t type, int32_t& code) { - int pid = getpid(); - StartTask(pid); I18nErrorCode errCode = CheckPermission(); if (errCode != I18nErrorCode::SUCCESS) { HILOG_ERROR_I18N("I18nServiceAbility::SetFirstDayOfWeek: Check permission failed."); code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } WeekDay weekDay = static_cast(type); @@ -234,20 +199,16 @@ ErrCode I18nServiceAbility::SetFirstDayOfWeek(int32_t type, int32_t& code) errCode = LocaleConfig::SetFirstDayOfWeek(weekDay); #endif code = static_cast(errCode); - FinishTask(pid); return ERR_OK; } ErrCode I18nServiceAbility::GetLanguageFromUserId(int32_t userId, std::string& language) { - int pid = getpid(); - StartTask(pid); #ifdef SUPPORT_MULTI_USER language = MultiUsers::GetLanguageFromUserId(userId); #else language = LocaleConfig::GetEffectiveLanguage(); #endif - FinishTask(pid); return ERR_OK; } @@ -283,7 +244,7 @@ void I18nServiceAbility::OnStart(const SystemAbilityOnDemandReason& startReason) if (status) { HILOG_INFO_I18N("I18nServiceAbility Publish success."); } else { - HILOG_INFO_I18N("I18nServiceAbility Publish failed."); + HILOG_ERROR_I18N("I18nServiceAbility Publish failed."); } handler = std::make_shared(AppExecFwk::EventRunner::Create(true)); DelayUnloadI18nServiceAbility(); @@ -298,7 +259,7 @@ void I18nServiceAbility::OnStop() HILOG_INFO_I18N("I18nServiceAbility Stop."); } -int32_t I18nServiceAbility::OnIdle(const SystemAbilityOnDemandReason& idleReason) +int32_t I18nServiceAbility::OnIdle(const SystemAbilityOnDemandReason& /* idleReason */) { if (UpdateTaskNumber(ModifyTaskNumber::QUERY) == 0) { HILOG_INFO_I18N("I18nServiceAbility::OnIdle: Immediately unload."); @@ -308,6 +269,20 @@ int32_t I18nServiceAbility::OnIdle(const SystemAbilityOnDemandReason& idleReason return DELAY_MILLISECONDS_FOR_UNLOAD_SA; } +int32_t I18nServiceAbility::CallbackEnter(uint32_t /* code */) +{ + int pid = getpid(); + StartTask(pid); + return ERR_NONE; +} + +int32_t I18nServiceAbility::CallbackExit(uint32_t /* code */, int32_t /* ret */) +{ + int pid = getpid(); + FinishTask(pid); + return ERR_NONE; +} + int32_t I18nServiceAbility::UpdateTaskNumber(ModifyTaskNumber action) { std::lock_guard taskLock(taskNumberMutex); @@ -327,7 +302,7 @@ void I18nServiceAbility::StartTask(int32_t pid) void I18nServiceAbility::FinishTask(int32_t pid) { if (Memory::MemMgrClient::GetInstance().SetCritical(pid, false, I18N_SA_ID) != 0) { - HILOG_ERROR_I18N("I18nServiceAbility::StartTask: Set critical true failed."); + HILOG_ERROR_I18N("I18nServiceAbility::FinishTask: Set critical false failed."); } UpdateTaskNumber(ModifyTaskNumber::DECREASE); } -- Gitee