From 1737233e50318d7c8096cdb77f937c0d2e99bb79 Mon Sep 17 00:00:00 2001 From: jerry Date: Fri, 7 Jan 2022 12:16:34 +0000 Subject: [PATCH 1/3] sijunjie@huawei.com Signed-off-by: jerry Change-Id: I8e24f3b1b73e947490ea1924142265fa27a45b40 --- .../include/ability_manager_interface.h | 11 +++++ .../include/user_stop_callback.h | 35 ++++++++++++++ .../include/ability_manager_proxy.h | 4 ++ .../include/ability_manager_service.h | 4 ++ .../abilitymgr/include/ability_manager_stub.h | 2 + .../abilitymgr/src/ability_manager_proxy.cpp | 48 +++++++++++++++++++ .../src/ability_manager_service.cpp | 12 +++++ .../abilitymgr/src/ability_manager_stub.cpp | 25 ++++++++++ 8 files changed, 141 insertions(+) create mode 100644 interfaces/innerkits/ability_manager/include/user_stop_callback.h diff --git a/interfaces/innerkits/ability_manager/include/ability_manager_interface.h b/interfaces/innerkits/ability_manager/include/ability_manager_interface.h index d0da341ebaa..54a915e4985 100644 --- a/interfaces/innerkits/ability_manager/include/ability_manager_interface.h +++ b/interfaces/innerkits/ability_manager/include/ability_manager_interface.h @@ -41,6 +41,7 @@ #include "mission_listener_interface.h" #include "mission_info.h" #include "start_options.h" +#include "user_stop_callback.h" namespace OHOS { namespace AAFwk { @@ -517,6 +518,10 @@ public: virtual int MoveMissionToFront(int32_t missionId) = 0; + virtual int StartUser(int userId) = 0; + + virtual int StopUser(int userId, const sptr &callback) = 0; + enum { // ipc id 1-1000 for kit // ipc id for terminating ability (1) @@ -663,6 +668,12 @@ public: // ipc id for get mission snap shot (48) GET_MISSION_SNAPSHOT_BY_ID, + // ipc id for move mission to front (49) + START_USER, + + // ipc id for move mission to front (49) + STOP_USER, + // ipc id 1001-2000 for DMS // ipc id for starting ability (1001) START_ABILITY = 1001, diff --git a/interfaces/innerkits/ability_manager/include/user_stop_callback.h b/interfaces/innerkits/ability_manager/include/user_stop_callback.h new file mode 100644 index 00000000000..4a808a15283 --- /dev/null +++ b/interfaces/innerkits/ability_manager/include/user_stop_callback.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OHOS_AAFWK_USER_STOP_CALLBACK_H +#define OHOS_AAFWK_USER_STOP_CALLBACK_H + +#include "iremote_broker.h" + +namespace OHOS { +namespace AAFwk { +/** + * @class IUserStopCallback + * user stop callback. + */ +class IUserStopCallback : public OHOS::IRemoteBroker { +public: + DECLARE_INTERFACE_DESCRIPTOR(u"ohos.aafwk.UserStopCallback"); + + virtual void OnStopUserDone(int userId, int errcode) = 0; +}; +} // namespace AAFwk +} // namespace OHOS +#endif // OHOS_AAFWK_USER_STOP_CALLBACK_H \ No newline at end of file diff --git a/services/abilitymgr/include/ability_manager_proxy.h b/services/abilitymgr/include/ability_manager_proxy.h index 5df78951f79..a0ae7b663a7 100644 --- a/services/abilitymgr/include/ability_manager_proxy.h +++ b/services/abilitymgr/include/ability_manager_proxy.h @@ -500,6 +500,10 @@ public: virtual int MoveMissionToFront(int32_t missionId) override; + virtual int StartUser(int userId) override; + + virtual int StopUser(int userId, const sptr &callback) override; + private: template int GetParcelableInfos(MessageParcel &reply, std::vector &parcelableInfos); diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 1e885a9a276..4591b5bc0cf 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -635,6 +635,10 @@ public: */ sptr GetAbilityTokenByMissionId(int32_t missionId); + virtual int StartUser(int userId) override; + + virtual int StopUser(int userId, const sptr &callback) override; + // MSG 0 - 20 represents timeout message static constexpr uint32_t LOAD_TIMEOUT_MSG = 0; static constexpr uint32_t ACTIVE_TIMEOUT_MSG = 1; diff --git a/services/abilitymgr/include/ability_manager_stub.h b/services/abilitymgr/include/ability_manager_stub.h index 2c2c6691499..6309561f38a 100644 --- a/services/abilitymgr/include/ability_manager_stub.h +++ b/services/abilitymgr/include/ability_manager_stub.h @@ -116,6 +116,8 @@ private: int CleanMissionInner(MessageParcel &data, MessageParcel &reply); int CleanAllMissionsInner(MessageParcel &data, MessageParcel &reply); int MoveMissionToFrontInner(MessageParcel &data, MessageParcel &reply); + int StartUserInner(MessageParcel &data, MessageParcel &reply); + int StopUserInner(MessageParcel &data, MessageParcel &reply); using RequestFuncType = int (AbilityManagerStub::*)(MessageParcel &data, MessageParcel &reply); std::map requestFuncMap_; diff --git a/services/abilitymgr/src/ability_manager_proxy.cpp b/services/abilitymgr/src/ability_manager_proxy.cpp index dd5b1ef94c7..274cec7a601 100644 --- a/services/abilitymgr/src/ability_manager_proxy.cpp +++ b/services/abilitymgr/src/ability_manager_proxy.cpp @@ -1720,5 +1720,53 @@ int AbilityManagerProxy::MoveMissionToFront(int32_t missionId) } return reply.ReadInt32(); } + +int AbilityManagerProxy::StartUser(int userId) +{ + int error; + MessageParcel data; + MessageParcel reply; + MessageOption option; + + if (!WriteInterfaceToken(data)) { + return INNER_ERR; + } + if (!data.WriteInt32(userId)) { + HILOG_ERROR("StartUser:WriteInt32 fail."); + return ERR_INVALID_VALUE; + } + error = Remote()->SendRequest(IAbilityManager::START_USER, data, reply, option); + if (error != NO_ERROR) { + HILOG_ERROR("StartUser:SendRequest error: %d", error); + return error; + } + return reply.ReadInt32(); +} + +int AbilityManagerProxy::StopUser(int userId, const sptr &callback) +{ + int error; + MessageParcel data; + MessageParcel reply; + MessageOption option; + + if (!WriteInterfaceToken(data)) { + return INNER_ERR; + } + if (!data.WriteInt32(userId)) { + HILOG_ERROR("StopUser:WriteInt32 fail."); + return ERR_INVALID_VALUE; + } + if (!data.WriteParcelable(callback->AsObject())) { + HILOG_ERROR("StopUser:write IUserStopCallback fail."); + return ERR_INVALID_VALUE; + } + error = Remote()->SendRequest(IAbilityManager::STOP_USER, data, reply, option); + if (error != NO_ERROR) { + HILOG_ERROR("StopUser:SendRequest error: %d", error); + return error; + } + return reply.ReadInt32(); +} } // namespace AAFwk } // namespace OHOS diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index d049452a422..37d76f0ae1d 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -2358,5 +2358,17 @@ void AbilityManagerService::StartingSettingsDataAbility() want.SetElementName(AbilityConfig::SETTINGS_DATA_BUNDLE_NAME, AbilityConfig::SETTINGS_DATA_ABILITY_NAME); (void)StartAbility(want, DEFAULT_INVAL_VALUE); } + +int AbilityManagerService::StartUser(int userId) +{ + HILOG_DEBUG("%{public}s", __func__); + return 0; +} + +int AbilityManagerService::StopUser(int userId, const sptr &callback) +{ + HILOG_DEBUG("%{public}s", __func__); + return 0; +} } // namespace AAFwk } // namespace OHOS diff --git a/services/abilitymgr/src/ability_manager_stub.cpp b/services/abilitymgr/src/ability_manager_stub.cpp index 63866b0cf11..5cf8ec54b5d 100644 --- a/services/abilitymgr/src/ability_manager_stub.cpp +++ b/services/abilitymgr/src/ability_manager_stub.cpp @@ -114,6 +114,8 @@ void AbilityManagerStub::SecondStepInit() requestFuncMap_[CLEAN_MISSION] = &AbilityManagerStub::CleanMissionInner; requestFuncMap_[CLEAN_ALL_MISSIONS] = &AbilityManagerStub::CleanAllMissionsInner; requestFuncMap_[MOVE_MISSION_TO_FRONT] = &AbilityManagerStub::MoveMissionToFrontInner; + requestFuncMap_[START_USER] = &AbilityManagerStub::StartUserInner; + requestFuncMap_[STOP_USER] = &AbilityManagerStub::StopUserInner; } int AbilityManagerStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) @@ -1018,5 +1020,28 @@ int AbilityManagerStub::MoveMissionToFrontInner(MessageParcel &data, MessageParc } return NO_ERROR; } + +int AbilityManagerStub::StartUserInner(MessageParcel &data, MessageParcel &reply) +{ + int32_t userId = data.ReadInt32(); + int result = StartUser(userId); + if (!reply.WriteInt32(result)) { + HILOG_ERROR("StartUser failed."); + return ERR_INVALID_VALUE; + } + return NO_ERROR; +} + +int AbilityManagerStub::StopUserInner(MessageParcel &data, MessageParcel &reply) +{ + int32_t userId = data.ReadInt32(); + auto callback = iface_cast(data.ReadParcelable()); + int result = StopUser(userId, callback); + if (!reply.WriteInt32(result)) { + HILOG_ERROR("StopUser failed."); + return ERR_INVALID_VALUE; + } + return NO_ERROR; +} } // namespace AAFwk } // namespace OHOS -- Gitee From c81ca0fef9991652697538bf6b09ba8f8f6aa968 Mon Sep 17 00:00:00 2001 From: jerry Date: Fri, 7 Jan 2022 12:47:56 +0000 Subject: [PATCH 2/3] sijunjie@huawei.com Signed-off-by: jerry Change-Id: I842f1bc5ad061a70636e1acbe072f7ec3a5f6211 --- .../include/ability_manager_interface.h | 4 ++-- .../{user_stop_callback.h => stop_user_callback.h} | 14 +++++++------- .../abilitymgr/include/ability_manager_proxy.h | 2 +- .../abilitymgr/include/ability_manager_service.h | 2 +- services/abilitymgr/src/ability_manager_proxy.cpp | 4 ++-- .../abilitymgr/src/ability_manager_service.cpp | 2 +- services/abilitymgr/src/ability_manager_stub.cpp | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) rename interfaces/innerkits/ability_manager/include/{user_stop_callback.h => stop_user_callback.h} (71%) diff --git a/interfaces/innerkits/ability_manager/include/ability_manager_interface.h b/interfaces/innerkits/ability_manager/include/ability_manager_interface.h index f3c438114e2..51da253e950 100644 --- a/interfaces/innerkits/ability_manager/include/ability_manager_interface.h +++ b/interfaces/innerkits/ability_manager/include/ability_manager_interface.h @@ -41,7 +41,7 @@ #include "mission_listener_interface.h" #include "mission_info.h" #include "start_options.h" -#include "user_stop_callback.h" +#include "stop_user_callback.h" namespace OHOS { namespace AAFwk { @@ -530,7 +530,7 @@ public: virtual int StartUser(int userId) = 0; - virtual int StopUser(int userId, const sptr &callback) = 0; + virtual int StopUser(int userId, const sptr &callback) = 0; enum { // ipc id 1-1000 for kit diff --git a/interfaces/innerkits/ability_manager/include/user_stop_callback.h b/interfaces/innerkits/ability_manager/include/stop_user_callback.h similarity index 71% rename from interfaces/innerkits/ability_manager/include/user_stop_callback.h rename to interfaces/innerkits/ability_manager/include/stop_user_callback.h index 4a808a15283..c9e62fae962 100644 --- a/interfaces/innerkits/ability_manager/include/user_stop_callback.h +++ b/interfaces/innerkits/ability_manager/include/stop_user_callback.h @@ -13,23 +13,23 @@ * limitations under the License. */ -#ifndef OHOS_AAFWK_USER_STOP_CALLBACK_H -#define OHOS_AAFWK_USER_STOP_CALLBACK_H +#ifndef OHOS_AAFWK_STOP_USER_CALLBACK_H +#define OHOS_AAFWK_STOP_USER_CALLBACK_H #include "iremote_broker.h" namespace OHOS { namespace AAFwk { /** - * @class IUserStopCallback - * user stop callback. + * @class IStopUserCallback + * stop user callback. */ -class IUserStopCallback : public OHOS::IRemoteBroker { +class IStopUserCallback : public OHOS::IRemoteBroker { public: - DECLARE_INTERFACE_DESCRIPTOR(u"ohos.aafwk.UserStopCallback"); + DECLARE_INTERFACE_DESCRIPTOR(u"ohos.aafwk.StopUserCallback"); virtual void OnStopUserDone(int userId, int errcode) = 0; }; } // namespace AAFwk } // namespace OHOS -#endif // OHOS_AAFWK_USER_STOP_CALLBACK_H \ No newline at end of file +#endif // OHOS_AAFWK_STOP_USER_CALLBACK_H \ No newline at end of file diff --git a/services/abilitymgr/include/ability_manager_proxy.h b/services/abilitymgr/include/ability_manager_proxy.h index 5011c9a84df..9e09a3088d0 100644 --- a/services/abilitymgr/include/ability_manager_proxy.h +++ b/services/abilitymgr/include/ability_manager_proxy.h @@ -512,7 +512,7 @@ public: virtual int StartUser(int userId) override; - virtual int StopUser(int userId, const sptr &callback) override; + virtual int StopUser(int userId, const sptr &callback) override; private: template diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 5ba57bfff20..28cc16439d5 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -648,7 +648,7 @@ public: virtual int StartUser(int userId) override; - virtual int StopUser(int userId, const sptr &callback) override; + virtual int StopUser(int userId, const sptr &callback) override; // MSG 0 - 20 represents timeout message static constexpr uint32_t LOAD_TIMEOUT_MSG = 0; diff --git a/services/abilitymgr/src/ability_manager_proxy.cpp b/services/abilitymgr/src/ability_manager_proxy.cpp index f8fc48ead8f..83c95acc546 100644 --- a/services/abilitymgr/src/ability_manager_proxy.cpp +++ b/services/abilitymgr/src/ability_manager_proxy.cpp @@ -1799,7 +1799,7 @@ int AbilityManagerProxy::StartUser(int userId) return reply.ReadInt32(); } -int AbilityManagerProxy::StopUser(int userId, const sptr &callback) +int AbilityManagerProxy::StopUser(int userId, const sptr &callback) { int error; MessageParcel data; @@ -1814,7 +1814,7 @@ int AbilityManagerProxy::StopUser(int userId, const sptr &cal return ERR_INVALID_VALUE; } if (!data.WriteParcelable(callback->AsObject())) { - HILOG_ERROR("StopUser:write IUserStopCallback fail."); + HILOG_ERROR("StopUser:write IStopUserCallback fail."); return ERR_INVALID_VALUE; } error = Remote()->SendRequest(IAbilityManager::STOP_USER, data, reply, option); diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 086d050dc47..d6afd8de738 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -2445,7 +2445,7 @@ int AbilityManagerService::StartUser(int userId) return 0; } -int AbilityManagerService::StopUser(int userId, const sptr &callback) +int AbilityManagerService::StopUser(int userId, const sptr &callback) { HILOG_DEBUG("%{public}s", __func__); return 0; diff --git a/services/abilitymgr/src/ability_manager_stub.cpp b/services/abilitymgr/src/ability_manager_stub.cpp index 62ed8266364..7e74892c8b0 100644 --- a/services/abilitymgr/src/ability_manager_stub.cpp +++ b/services/abilitymgr/src/ability_manager_stub.cpp @@ -1066,7 +1066,7 @@ int AbilityManagerStub::StartUserInner(MessageParcel &data, MessageParcel &reply int AbilityManagerStub::StopUserInner(MessageParcel &data, MessageParcel &reply) { int32_t userId = data.ReadInt32(); - auto callback = iface_cast(data.ReadParcelable()); + auto callback = iface_cast(data.ReadParcelable()); int result = StopUser(userId, callback); if (!reply.WriteInt32(result)) { HILOG_ERROR("StopUser failed."); -- Gitee From eb2740202a94a6bb2d1d84b6548815c78e88d5ae Mon Sep 17 00:00:00 2001 From: jerry Date: Fri, 7 Jan 2022 12:53:34 +0000 Subject: [PATCH 3/3] sijunjie@huawei.com Signed-off-by: jerry Change-Id: I8575a5c396ef5b14364079aa3728b2576ea1afb6 --- .../ability_manager/include/ability_manager_interface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/innerkits/ability_manager/include/ability_manager_interface.h b/interfaces/innerkits/ability_manager/include/ability_manager_interface.h index 51da253e950..447c1c6d571 100644 --- a/interfaces/innerkits/ability_manager/include/ability_manager_interface.h +++ b/interfaces/innerkits/ability_manager/include/ability_manager_interface.h @@ -681,7 +681,7 @@ public: // ipc id for move mission to front (49) START_USER, - // ipc id for move mission to front (49) + // ipc id for move mission to front (50) STOP_USER, // ipc id 1001-2000 for DMS -- Gitee