diff --git a/services/abilitymgr/include/kiosk_manager.h b/services/abilitymgr/include/kiosk_manager.h index 5e9c99915b91ca78231572159b204940b6b6582d..25b947af56de0b6ea90033a0ead0f24d7a05708e 100644 --- a/services/abilitymgr/include/kiosk_manager.h +++ b/services/abilitymgr/include/kiosk_manager.h @@ -42,7 +42,7 @@ public: private: KioskManager() = default; DISALLOW_COPY_AND_MOVE(KioskManager); - int32_t ExitKioskModeInner(const std::string &bundleName); + int32_t ExitKioskModeInner(const std::string &bundleName, sptr callerToken = nullptr); bool IsInKioskModeInner(); void NotifyKioskModeChanged(bool isInKioskMode); bool IsInWhiteListInner(const std::string &bundleName); diff --git a/services/abilitymgr/src/kiosk_manager.cpp b/services/abilitymgr/src/kiosk_manager.cpp index 6b86e04fe71b1085a910d50a2917316ec1266142..24cf35ac5a88983d3d4e5a260eb914501a3a4216 100644 --- a/services/abilitymgr/src/kiosk_manager.cpp +++ b/services/abilitymgr/src/kiosk_manager.cpp @@ -16,9 +16,10 @@ #include +#include "ability_manager_errors.h" #include "ability_manager_service.h" #include "ability_record.h" -#include "ability_manager_errors.h" +#include "ability_util.h" #include "common_event.h" #include "common_event_manager.h" #include "common_event_support.h" @@ -27,6 +28,7 @@ #include "ipc_skeleton.h" #include "kiosk_manager.h" #include "permission_constants.h" +#include "session_manager_lite.h" #include "singleton.h" #include "utils/want_utils.h" @@ -75,7 +77,9 @@ int32_t KioskManager::UpdateKioskApplicationList(const std::vector for (const auto &app : appList) { whitelist_.insert(app); } - + auto sceneSessionManager = Rosen::SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy(); + CHECK_POINTER_AND_RETURN_LOG(sceneSessionManager, ERR_INVALID_VALUE, "sceneSessionManager is nullptr"); + sceneSessionManager->UpdateKioskAppList(appList); return ERR_OK; } @@ -105,7 +109,9 @@ int32_t KioskManager::EnterKioskMode(sptr callerToken) kioskStatus_.kioskBundleUid_ = IPCSkeleton::GetCallingUid(); GetEnterKioskModeCallback()(); NotifyKioskModeChanged(true); - + auto sceneSessionManager = Rosen::SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy(); + CHECK_POINTER_AND_RETURN_LOG(sceneSessionManager, ERR_INVALID_VALUE, "sceneSessionManager is nullptr"); + sceneSessionManager->EnterKioskMode(callerToken); return ERR_OK; } @@ -117,10 +123,10 @@ int32_t KioskManager::ExitKioskMode(sptr callerToken) return INVALID_PARAMETERS_ERR; } std::lock_guard lock(kioskManagermutex_); - return ExitKioskModeInner(record->GetAbilityInfo().bundleName); + return ExitKioskModeInner(record->GetAbilityInfo().bundleName, callerToken); } -int32_t KioskManager::ExitKioskModeInner(const std::string & bundleName) +int32_t KioskManager::ExitKioskModeInner(const std::string &bundleName, sptr callerToken) { if (!IsInWhiteListInner(bundleName)) { return ERR_KIOSK_MODE_NOT_IN_WHITELIST; @@ -132,6 +138,9 @@ int32_t KioskManager::ExitKioskModeInner(const std::string & bundleName) GetExitKioskModeCallback()(); NotifyKioskModeChanged(false); kioskStatus_.Clear(); + auto sceneSessionManager = Rosen::SessionManagerLite::GetInstance().GetSceneSessionManagerLiteProxy(); + CHECK_POINTER_AND_RETURN_LOG(sceneSessionManager, ERR_INVALID_VALUE, "sceneSessionManager is nullptr"); + sceneSessionManager->ExitKioskMode(callerToken); return ERR_OK; } diff --git a/test/unittest/ability_manager_proxy_fourth_test/BUILD.gn b/test/unittest/ability_manager_proxy_fourth_test/BUILD.gn index cb04b82cd9dc43fec40ae67967e41457c75b0f42..660c33c3f5105af111b3b3ff446ec6a508964798 100644 --- a/test/unittest/ability_manager_proxy_fourth_test/BUILD.gn +++ b/test/unittest/ability_manager_proxy_fourth_test/BUILD.gn @@ -77,6 +77,7 @@ ohos_unittest("ability_manager_proxy_fourth_test") { "napi:ace_napi", "samgr:samgr_proxy", "hisysevent:libhisysevent", + "window_manager:session_manager_lite", ] if (background_task_mgr_continuous_task_enable) { diff --git a/test/unittest/ability_manager_service_twelfth_test/BUILD.gn b/test/unittest/ability_manager_service_twelfth_test/BUILD.gn index 3494633e378b8e39d24bbb3151afbc7df7078ccb..2eecc986dcdf73224b489605eaf44d56f3be6405 100644 --- a/test/unittest/ability_manager_service_twelfth_test/BUILD.gn +++ b/test/unittest/ability_manager_service_twelfth_test/BUILD.gn @@ -114,6 +114,7 @@ ohos_unittest("ability_manager_service_twelfth_test") { "relational_store:native_dataability", "safwk:api_cache_manager", "samgr:samgr_proxy", + "window_manager:session_manager_lite", ] if (ability_runtime_graphics) {