From d2d59e4cc1bba79700dc4dd7f0e2bf5c77b51e9f Mon Sep 17 00:00:00 2001 From: wangbing Date: Wed, 11 Jun 2025 17:11:46 +0800 Subject: [PATCH] fix issue Signed-off-by: wangbing --- frameworks/js/napi/kiosk_manager/BUILD.gn | 1 + .../napi/kiosk_manager/js_kiosk_manager.cpp | 45 ++++++++++++------- services/abilitymgr/src/kiosk_manager.cpp | 16 ++++--- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/frameworks/js/napi/kiosk_manager/BUILD.gn b/frameworks/js/napi/kiosk_manager/BUILD.gn index e3d3091e395..f740b2596fc 100644 --- a/frameworks/js/napi/kiosk_manager/BUILD.gn +++ b/frameworks/js/napi/kiosk_manager/BUILD.gn @@ -37,6 +37,7 @@ template("kioskmanager") { deps = [ "${ability_runtime_innerkits_path}/ability_manager:ability_manager", + "${ability_runtime_native_path}/ability/native:ability_business_error", "${ability_runtime_innerkits_path}/napi_base_context:napi_base_context", "${ability_runtime_innerkits_path}/runtime:runtime", "${ability_runtime_napi_path}/inner/napi_common:napi_common", diff --git a/frameworks/js/napi/kiosk_manager/js_kiosk_manager.cpp b/frameworks/js/napi/kiosk_manager/js_kiosk_manager.cpp index 3cc9764d45d..781d7042e0c 100644 --- a/frameworks/js/napi/kiosk_manager/js_kiosk_manager.cpp +++ b/frameworks/js/napi/kiosk_manager/js_kiosk_manager.cpp @@ -115,12 +115,16 @@ napi_value JsKioskManager::OnUpdateKioskApplicationList(napi_env env, NapiCallba }; auto complete = [innerErrCode](napi_env env, NapiAsyncTask &task, int32_t status) { - if (*innerErrCode != ERR_OK) { + if (*innerErrCode == ERR_OK) { + task.ResolveWithNoError(env, CreateJsUndefined(env)); + } else if (*innerErrCode == AAFwk::ERR_CAPABILITY_NOT_SUPPORT || *innerErrCode == AAFwk::ERR_NOT_SYSTEM_APP || + *innerErrCode == AAFwk::CHECK_PERMISSION_FAILED) { TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); - task.Reject(env, CreateJsErrorByNativeErr(env, *innerErrCode)); - return; + task.Reject(env, CreateJsError(env, GetJsErrorCodeByNativeError(*innerErrCode))); + } else { + TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); + task.Reject(env, CreateJsError(env, static_cast(*innerErrCode))); } - task.ResolveWithNoError(env, CreateJsUndefined(env)); }; napi_value result = nullptr; NapiAsyncTask::Schedule("JsKioskManager::OnUpdateKioskApplicationList", env, @@ -170,12 +174,15 @@ napi_value JsKioskManager::OnEnterKioskMode(napi_env env, NapiCallbackInfo &info }; auto complete = [innerErrCode](napi_env env, NapiAsyncTask &task, int32_t status) { - if (*innerErrCode != ERR_OK) { + if (*innerErrCode == ERR_OK) { + task.ResolveWithNoError(env, CreateJsUndefined(env)); + } else if (*innerErrCode == AAFwk::ERR_CAPABILITY_NOT_SUPPORT) { TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); - task.Reject(env, CreateJsErrorByNativeErr(env, *innerErrCode)); - return; + task.Reject(env, CreateJsError(env, GetJsErrorCodeByNativeError(*innerErrCode))); + } else { + TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); + task.Reject(env, CreateJsError(env, static_cast(*innerErrCode))); } - task.ResolveWithNoError(env, CreateJsUndefined(env)); }; napi_value result = nullptr; @@ -225,12 +232,15 @@ napi_value JsKioskManager::OnExitKioskMode(napi_env env, NapiCallbackInfo &info) }; auto complete = [innerErrCode](napi_env env, NapiAsyncTask &task, int32_t status) { - if (*innerErrCode != ERR_OK) { + if (*innerErrCode == ERR_OK) { + task.ResolveWithNoError(env, CreateJsUndefined(env)); + } else if (*innerErrCode == AAFwk::ERR_CAPABILITY_NOT_SUPPORT) { TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); - task.Reject(env, CreateJsErrorByNativeErr(env, *innerErrCode)); - return; + task.Reject(env, CreateJsError(env, GetJsErrorCodeByNativeError(*innerErrCode))); + } else { + TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); + task.Reject(env, CreateJsError(env, static_cast(*innerErrCode))); } - task.ResolveWithNoError(env, CreateJsUndefined(env)); }; napi_value result = nullptr; NapiAsyncTask::Schedule("JsKioskManager::OnExitKioskMode", env, @@ -261,12 +271,15 @@ napi_value JsKioskManager::OnGetKioskStatus(napi_env env, NapiCallbackInfo &info }; auto complete = [innerErrCode, kioskStatus](napi_env env, NapiAsyncTask &task, int32_t status) { - if (*innerErrCode != ERR_OK) { + if (*innerErrCode == ERR_OK) { + task.ResolveWithNoError(env, JsKioskManager::CreateJsKioskStatus(env, kioskStatus)); + } else if (*innerErrCode == AAFwk::ERR_CAPABILITY_NOT_SUPPORT || *innerErrCode == AAFwk::ERR_NOT_SYSTEM_APP) { TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); - task.Reject(env, CreateJsErrorByNativeErr(env, *innerErrCode)); - return; + task.Reject(env, CreateJsError(env, GetJsErrorCodeByNativeError(*innerErrCode))); + } else { + TAG_LOGE(AAFwkTag::APPKIT, "innerErrCode=%{public}d", *innerErrCode); + task.Reject(env, CreateJsError(env, static_cast(*innerErrCode))); } - task.ResolveWithNoError(env, JsKioskManager::CreateJsKioskStatus(env, kioskStatus)); }; napi_value result = nullptr; NapiAsyncTask::Schedule("JsKioskManager::OnGetKioskStatus", env, diff --git a/services/abilitymgr/src/kiosk_manager.cpp b/services/abilitymgr/src/kiosk_manager.cpp index 9a5377e1dbf..0bd7ca1fb06 100644 --- a/services/abilitymgr/src/kiosk_manager.cpp +++ b/services/abilitymgr/src/kiosk_manager.cpp @@ -47,8 +47,10 @@ void KioskManager::OnAppStop(const AppInfo &info) if (info.state != AppState::TERMINATED && info.state != AppState::END) { return; } + TAG_LOGD(AAFwkTag::ABILITYMGR, "App stop, bundleName: %{public}s, state: %{public}d", + info.bundleName.c_str(), static_cast(info.state)); std::lock_guard lock(kioskManagermutex_); - if (IsInKioskModeInner() && IsInWhiteListInner(info.bundleName)) { + if (IsInKioskModeInner() && (info.bundleName == kioskStatus_.kioskBundleName_)) { ExitKioskModeInner(info.bundleName, nullptr); } } @@ -57,7 +59,7 @@ int32_t KioskManager::UpdateKioskApplicationList(const std::vector { if (!system::GetBoolParameter(PRODUCT_APPBOOT_SETTING_ENABLED, false)) { TAG_LOGE(AAFwkTag::ABILITYMGR, "Disabled config"); - return ERR_NOT_SUPPORTED_PRODUCT_TYPE; + return ERR_CAPABILITY_NOT_SUPPORT; } if (!PermissionVerification::GetInstance()->IsSystemAppCall() && @@ -94,7 +96,7 @@ int32_t KioskManager::EnterKioskMode(sptr callerToken) { if (!system::GetBoolParameter(PRODUCT_APPBOOT_SETTING_ENABLED, false)) { TAG_LOGE(AAFwkTag::ABILITYMGR, "Disabled config"); - return ERR_NOT_SUPPORTED_PRODUCT_TYPE; + return ERR_CAPABILITY_NOT_SUPPORT; } auto record = Token::GetAbilityRecordByToken(callerToken); if (!record) { @@ -130,7 +132,7 @@ int32_t KioskManager::ExitKioskMode(sptr callerToken) { if (!system::GetBoolParameter(PRODUCT_APPBOOT_SETTING_ENABLED, false)) { TAG_LOGE(AAFwkTag::ABILITYMGR, "Disabled config"); - return ERR_NOT_SUPPORTED_PRODUCT_TYPE; + return ERR_CAPABILITY_NOT_SUPPORT; } auto record = Token::GetAbilityRecordByToken(callerToken); if (!record) { @@ -163,7 +165,7 @@ int32_t KioskManager::GetKioskStatus(KioskStatus &kioskStatus) { if (!system::GetBoolParameter(PRODUCT_APPBOOT_SETTING_ENABLED, false)) { TAG_LOGE(AAFwkTag::ABILITYMGR, "Disabled config"); - return ERR_NOT_SUPPORTED_PRODUCT_TYPE; + return ERR_CAPABILITY_NOT_SUPPORT; } if (!PermissionVerification::GetInstance()->IsSystemAppCall()) { TAG_LOGE(AAFwkTag::ABILITYMGR, "not system app"); @@ -202,7 +204,9 @@ void KioskManager::NotifyKioskModeChanged(bool isInKioskMode) want.SetParam("uid", kioskStatus_.kioskBundleUid_); want.SetParam("userId", kioskStatus_.kioskBundleUid_ / BASE_USER_RANGE); EventFwk::CommonEventData commonData {want}; - EventFwk::CommonEventManager::PublishCommonEvent(commonData); + if (!IN_PROCESS_CALL(EventFwk::CommonEventManager::PublishCommonEvent(commonData))) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "PublishCommonEvent failed, eventData: %{public}s", eventData.c_str()); + } } bool KioskManager::IsInWhiteListInner(const std::string &bundleName) -- Gitee