diff --git a/kits/appkit/native/test/mock/include/mock_ability_manager_client_interface1.cpp b/kits/appkit/native/test/mock/include/mock_ability_manager_client_interface1.cpp index ea958bce03a7942f1fc4942dd6d0d89f6d898261..f2f708edeca3b3fb98bb151b7c89d5b9295e89ae 100644 --- a/kits/appkit/native/test/mock/include/mock_ability_manager_client_interface1.cpp +++ b/kits/appkit/native/test/mock/include/mock_ability_manager_client_interface1.cpp @@ -156,7 +156,7 @@ ErrCode AbilityManagerClient::GetRecentMissions( return ERR_OK; } -ErrCode AbilityManagerClient::GetMissionSnapshot(const int32_t missionId, MissionSnapshotInfo &snapshot) +ErrCode AbilityManagerClient::GetMissionSnapshot(const int32_t missionId, MissionSnapshot &snapshot) { return ERR_OK; } diff --git a/kits/appkit/test/Mock/include/mock_ability_mgr_service.h b/kits/appkit/test/Mock/include/mock_ability_mgr_service.h index 87160023642a4314d91fa4e35142550fb8f595b1..f320c191c03491be94570cc7fa679e814fd912bb 100644 --- a/kits/appkit/test/Mock/include/mock_ability_mgr_service.h +++ b/kits/appkit/test/Mock/include/mock_ability_mgr_service.h @@ -51,7 +51,7 @@ public: MOCK_METHOD1(StopServiceAbility, int(const Want &)); MOCK_METHOD1(GetAllStackInfo, int(StackInfo &stackInfo)); MOCK_METHOD3(GetRecentMissions, int(const int32_t, const int32_t, std::vector &)); - MOCK_METHOD2(GetMissionSnapshot, int(const int32_t, MissionSnapshotInfo &)); + MOCK_METHOD2(GetMissionSnapshot, int(const int32_t, MissionPixelMap &)); MOCK_METHOD1(RemoveMission, int(int)); MOCK_METHOD1(RemoveStack, int(int)); MOCK_METHOD4(OnRemoteRequest, int(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)); diff --git a/services/appmgr/include/app_mgr_service_inner.h b/services/appmgr/include/app_mgr_service_inner.h index 9cdce9a6e211501a43ced70dbb9a71a21938f4aa..debdf644e34986b29a87f372cc838b3977f9641f 100644 --- a/services/appmgr/include/app_mgr_service_inner.h +++ b/services/appmgr/include/app_mgr_service_inner.h @@ -181,12 +181,12 @@ public: * ClearUpApplicationData, clear the application data. * * @param bundleName, bundle name in Application record. - * @param uid, app uid in Application record. - * @param pid, app pid in Application record. + * @param callerUid, app uid in Application record. + * @param callerPid, app pid in Application record. * * @return */ - virtual void ClearUpApplicationData(const std::string &bundleName, const int32_t uid, const pid_t pid); + virtual void ClearUpApplicationData(const std::string &bundleName, const int32_t callerUid, const pid_t callerPid); /** * IsBackgroundRunningRestricted, Checks whether the process of this application is forbidden diff --git a/services/appmgr/src/app_mgr_service_inner.cpp b/services/appmgr/src/app_mgr_service_inner.cpp index 573b8ecba3ea4413fcce8ff763096371c262fb32..de39ab0fe65dac8331be4cddd07f3815edda989a 100644 --- a/services/appmgr/src/app_mgr_service_inner.cpp +++ b/services/appmgr/src/app_mgr_service_inner.cpp @@ -248,14 +248,14 @@ int32_t AppMgrServiceInner::KillApplication(const std::string &bundleName) return result; } -void AppMgrServiceInner::ClearUpApplicationData(const std::string &bundleName, int32_t uid, pid_t pid) +void AppMgrServiceInner::ClearUpApplicationData(const std::string &bundleName, int32_t callerUid, pid_t callerPid) { - if (pid <= 0) { - APP_LOGE("invalid pid:%{public}d", pid); + if (callerPid <= 0) { + APP_LOGE("invalid callerPid:%{public}d", callerPid); return; } - if (uid <= 0) { - APP_LOGE("invalid uid:%{public}d", uid); + if (callerUid <= 0) { + APP_LOGE("invalid callerUid:%{public}d", callerUid); return; } auto bundleMgr_ = remoteClientManager_->GetBundleManager(); @@ -264,41 +264,33 @@ void AppMgrServiceInner::ClearUpApplicationData(const std::string &bundleName, i return; } int32_t result = 0; - int32_t bmsUid = bundleMgr_->GetUidByBundleName(bundleName, 0); - if (bmsUid != uid) { - result = bundleMgr_->CheckPermission(bundleName, REQ_PERMISSION); + int32_t clearUid = bundleMgr_->GetUidByBundleName(bundleName, 0); + // 1.check permission + result = bundleMgr_->CheckPermission(bundleName, REQ_PERMISSION); + if (result) { + APP_LOGE("No permission to clear application data"); + return; + } + if(bundleMgr_->CheckIsSystemAppByUid(callerUid) || callerUid == clearUid) { + // request to clear user information permission. + result = Permission::PermissionKit::RemoveUserGrantedReqPermissions(bundleName, Constants::DEFAULT_USERID); if (result) { - APP_LOGE("No permission to clear application data"); + APP_LOGE("RemoveUserGrantedReqPermissions failed"); return; } - } else { - result = bundleMgr_->CheckPermission(bundleName, REQ_PERMISSION); - if (result) { - APP_LOGE("No permission to clear application data"); + // 2.delete bundle side user data + if (!bundleMgr_->CleanBundleDataFiles(bundleName)) { + APP_LOGE("Delete bundle side user data is fail"); return; } - // request to clear user information permission. - result = Permission::PermissionKit::RemoveUserGrantedReqPermissions(bundleName, Constants::DEFAULT_USERID); - if (result) { - APP_LOGE("RemoveUserGrantedReqPermissions failed"); + // 3.kill application + // 4.revoke user rights + result = KillApplication(bundleName); + if (result < 0) { + APP_LOGE("Kill Application by bundle name is fail"); return; } } - if (result) { - APP_LOGE("clear user information permission failed"); - } - // 2.delete bundle side user data - if (!bundleMgr_->CleanBundleDataFiles(bundleName)) { - APP_LOGE("Delete bundle side user data is fail"); - return; - } - // 3.kill application - // 4.revoke user rights - result = KillApplication(bundleName); - if (result < 0) { - APP_LOGE("Kill Application by bundle name is fail"); - return; - } } int32_t AppMgrServiceInner::IsBackgroundRunningRestricted(const std::string &bundleName) diff --git a/services/bundlemgr/test/mock/include/mock_ability_mgr_host.h b/services/bundlemgr/test/mock/include/mock_ability_mgr_host.h index 55f3f3255edeecf701966828d869104e8f354295..d7438f91605a40471c7626539fe874704c371f4f 100644 --- a/services/bundlemgr/test/mock/include/mock_ability_mgr_host.h +++ b/services/bundlemgr/test/mock/include/mock_ability_mgr_host.h @@ -117,7 +117,7 @@ public: { return 0; } - virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionSnapshotInfo &snapshot) override + virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionPixelMap &missionPixelMap) override { return 0; } diff --git a/services/formmgr/test/mock/include/mock_ability_manager.h b/services/formmgr/test/mock/include/mock_ability_manager.h index 60e5c0973f22513de49b9ca68411dae3acf94b2e..858f602b36c11978040cd6e711c6e17a5ef238ed 100644 --- a/services/formmgr/test/mock/include/mock_ability_manager.h +++ b/services/formmgr/test/mock/include/mock_ability_manager.h @@ -184,7 +184,7 @@ public: { return 0; } - virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionSnapshotInfo &snapshot) + virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionPixelMap &missionPixelMap) { return 0; } @@ -445,7 +445,7 @@ public: { return 0; } - virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionSnapshotInfo &snapshot) + virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionPixelMap &missionPixelMap) { return 0; } diff --git a/services/test/mock/include/mock_ability_mgr_host.h b/services/test/mock/include/mock_ability_mgr_host.h index c182e0d0ad54e8e3b003f0148262ab771f0055b9..dc944ecdd6ccb051ddb520a53212168146e4f380 100644 --- a/services/test/mock/include/mock_ability_mgr_host.h +++ b/services/test/mock/include/mock_ability_mgr_host.h @@ -116,7 +116,7 @@ public: { return 0; } - virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionSnapshotInfo &snapshot) override + virtual int GetMissionSnapshot(const int32_t missionId, AAFwk::MissionPixelMap &missionPixelMap) override { return 0; }