diff --git a/services/devicemanagerservice/include/dependency/hichain/hichain_connector.h b/services/devicemanagerservice/include/dependency/hichain/hichain_connector.h index 99d534f6ef6ee9d3749494be63c4dde0d2d5c170..6c19fe3fd23f4a89671d3f865536ea078b3104f2 100644 --- a/services/devicemanagerservice/include/dependency/hichain/hichain_connector.h +++ b/services/devicemanagerservice/include/dependency/hichain/hichain_connector.h @@ -64,6 +64,7 @@ public: int32_t GetRelatedGroups(std::string DeviceId, std::vector &groupList); int32_t GetGroupInfo(std::string queryParams, std::vector &groupList); int32_t GetGroupInfo(const int32_t userId, std::string queryParams, std::vector &groupList); + int32_t DeleteTimeOutGroup(const char* deviceId); private: int64_t GenRequestId(); int32_t SyncGroups(std::string deviceId, std::vector &remoteGroupIdList); diff --git a/services/devicemanagerservice/include/devicestate/dm_device_state_manager.h b/services/devicemanagerservice/include/devicestate/dm_device_state_manager.h index a54ef47ef12102bd5a5d4838bd135757e0b7e488..d3d3e245ae73d5e4b11763d24eb94b20fb13eebe 100644 --- a/services/devicemanagerservice/include/devicestate/dm_device_state_manager.h +++ b/services/devicemanagerservice/include/devicestate/dm_device_state_manager.h @@ -19,14 +19,29 @@ #include "device_manager_service_listener.h" #include "dm_adapter_manager.h" #include "softbus_connector.h" - +#include "dm_timer.h" +#include "hichain_connector.h" namespace OHOS { namespace DistributedHardware { +class HmDevice { +public: + HmDevice(std::string deviceId, std::shared_ptr stateMgr); + ~HmDevice(); + +public: + std::string mDeviceId; + std::map mGroupMap; + std::shared_ptr mOfflineTimerPtr; + std::shared_ptr deviceStateMgr; +}; + +#define OFFLINE_TIMEOUT 300 class DmDeviceStateManager final : public ISoftbusStateCallback, public std::enable_shared_from_this { public: DmDeviceStateManager(std::shared_ptr softbusConnector, - std::shared_ptr listener); + std::shared_ptr listener, + std::shared_ptr hiChainConnector); ~DmDeviceStateManager(); void OnDeviceOnline(const std::string &pkgName, const DmDeviceInfo &info); void OnDeviceOffline(const std::string &pkgName, const DmDeviceInfo &info); @@ -34,6 +49,9 @@ public: void OnDeviceReady(const std::string &pkgName, const DmDeviceInfo &info); void OnProfileReady(const std::string &pkgName, const std::string deviceId); int32_t RegisterSoftbusStateCallback(); + void RegisterOffLineTimer(const DmDeviceInfo &deviceInfo); + void StartOffLineTimer(const DmDeviceInfo &deviceInfo); + void DeleteTimeOutGroup(HmDevice *hmDevice); private: std::shared_ptr softbusConnector_; @@ -41,7 +59,10 @@ private: std::shared_ptr listener_; std::map deviceStateMap_; std::map remoteDeviceInfos_; + std::map> timerMap_; + std::shared_ptr hiChainConnector_; std::string profileSoName_; + std::map mHmDeviceMap_ = {}; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/devicemanagerservice/src/dependency/hichain/hichain_connector.cpp b/services/devicemanagerservice/src/dependency/hichain/hichain_connector.cpp index 22a50c39d2031d6ae48e308e4d656ebe56fbfa3d..dd4afeb86adcd5c1bd8604daf978477f2b0bf78e 100644 --- a/services/devicemanagerservice/src/dependency/hichain/hichain_connector.cpp +++ b/services/devicemanagerservice/src/dependency/hichain/hichain_connector.cpp @@ -490,5 +490,26 @@ int32_t HiChainConnector::DeleteGroup(const int32_t userId, std::string &groupId } return DM_OK; } + +int32_t HiChainConnector::DeleteTimeOutGroup(const char* deviceId) +{ + LOGE("HiChainConnector::DeleteTimeOutGroup start"); + int32_t userId = MultipleUserConnector::GetCurrentAccountUserID(); + if (userId < 0) { + LOGE("get current process account user id failed"); + return DM_FAILED; + } + std::vector peerGroupInfoList; + GetRelatedGroups(deviceId, peerGroupInfoList); + char localDeviceId[DEVICE_UUID_LENGTH] = {0}; + GetDevUdid(localDeviceId, DEVICE_UUID_LENGTH); + for (auto &group : peerGroupInfoList) { + if (deviceGroupManager_->isDeviceInGroup(userId, DM_PKG_NAME.c_str(), group.groupId.c_str(), localDeviceId)) { + DeleteGroup(group.groupId); + return DM_OK; + } + } + return DM_FAILED; +} } // namespace DistributedHardware } // namespace OHOS diff --git a/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp b/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp index a33034f48a1ba692dd046fe310998c54a148f65d..8c9146f3460f51d88e84a55c11b5175d6262bde4 100644 --- a/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp +++ b/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp @@ -107,6 +107,10 @@ void DmTimer::WaitForTimeout() int32_t nfds = epoll_wait(mEpFd_, mEvents_, MAX_EVENTS, mTimeOutSec_ * MILL_SECONDS_PER_SECOND); if (nfds < 0) { LOGE("DmTimer %s epoll_wait returned n=%d, error: %d", mTimerName_.c_str(), nfds, errno); + if (errno == EINTR) { + LOGI("DmTimer is stop"); + return; + } } char event = 0; diff --git a/services/devicemanagerservice/src/device_manager_service.cpp b/services/devicemanagerservice/src/device_manager_service.cpp index 8a02d72652ff492a4d90a471db1de89b8175c9a4..88541338f4102005d69adf7b9ed465ce023482a4 100644 --- a/services/devicemanagerservice/src/device_manager_service.cpp +++ b/services/devicemanagerservice/src/device_manager_service.cpp @@ -77,7 +77,7 @@ int32_t DeviceManagerService::Init() } } if (deviceStateMgr_ == nullptr) { - deviceStateMgr_ = std::make_shared(softbusConnector_, listener_); + deviceStateMgr_ = std::make_shared(softbusConnector_, listener_, hiChainConnector_); if (deviceStateMgr_ == nullptr) { LOGE("Init failed, deviceStateMgr_ apply for failure"); return DM_MAKE_SHARED_FAIL; diff --git a/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp b/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp index 8fc7214ac674ccef47a525787d456057e7b471c0..97a41f5f43a259c7b3446dc2fe96f38e87db6ffc 100644 --- a/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp +++ b/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp @@ -20,9 +20,21 @@ #include "dm_log.h" namespace OHOS { namespace DistributedHardware { +static void TimeOut(void *data) +{ + LOGE("time out "); + std::shared_ptr deviceStateMgr = ((HmDevice *)data)->deviceStateMgr; + if (deviceStateMgr == nullptr) { + LOGE("OnDeviceOfflineTimeOut hmDevice owner = nullptr"); + return; + } + deviceStateMgr->DeleteTimeOutGroup((HmDevice *)data); +} + DmDeviceStateManager::DmDeviceStateManager(std::shared_ptr softbusConnector, - std::shared_ptr listener) - : softbusConnector_(softbusConnector), listener_(listener) + std::shared_ptr listener, + std::shared_ptr hiChainConnector) + : softbusConnector_(softbusConnector), listener_(listener), hiChainConnector_(hiChainConnector) { LOGI("DmDeviceStateManager constructor"); profileSoName_ = "libdevicemanagerext_profile.z.so"; @@ -37,6 +49,7 @@ DmDeviceStateManager::~DmDeviceStateManager() void DmDeviceStateManager::OnDeviceOnline(const std::string &pkgName, const DmDeviceInfo &info) { LOGI("DmDeviceStateManager::OnDeviceOnline in"); + RegisterOffLineTimer(info); DmAdapterManager &adapterMgrPtr = DmAdapterManager::GetInstance(); std::shared_ptr profileAdapter = adapterMgrPtr.GetProfileAdapter(profileSoName_); if (profileAdapter == nullptr) { @@ -66,6 +79,7 @@ void DmDeviceStateManager::OnDeviceOnline(const std::string &pkgName, const DmDe void DmDeviceStateManager::OnDeviceOffline(const std::string &pkgName, const DmDeviceInfo &info) { + StartOffLineTimer(info); DmAdapterManager &adapterMgrPtr = DmAdapterManager::GetInstance(); std::shared_ptr profileAdapter = adapterMgrPtr.GetProfileAdapter(profileSoName_); if (profileAdapter == nullptr) { @@ -113,5 +127,51 @@ int32_t DmDeviceStateManager::RegisterSoftbusStateCallback() std::shared_ptr(shared_from_this())); return DM_OK; } + +void DmDeviceStateManager::RegisterOffLineTimer(const DmDeviceInfo &deviceInfo) +{ + std::string deviceId; + softbusConnector_->GetUdidByNetworkId(deviceInfo.deviceId, deviceId); + LOGI("Device<%s>Online", deviceId.c_str()); + auto iter = mHmDeviceMap_.find(deviceId); + if (iter != mHmDeviceMap_.end()) { + iter->second->mOfflineTimerPtr->Stop(0); + return; + } + + HmDevice *hmDevice = new HmDevice(deviceId, shared_from_this()); + mHmDeviceMap_[hmDevice->mDeviceId] = hmDevice; +} + +void DmDeviceStateManager::StartOffLineTimer(const DmDeviceInfo &deviceInfo) +{ + std::string deviceId; + softbusConnector_->GetUdidByNetworkId(deviceInfo.deviceId, deviceId); + LOGI("Device<%s>Offline", deviceId.c_str()); + for (auto &iter : mHmDeviceMap_) { + if (iter.second->mDeviceId.compare(deviceId) == 0) { + iter.second->mOfflineTimerPtr->Start(OFFLINE_TIMEOUT, TimeOut, iter.second); + } + } +} + +void DmDeviceStateManager::DeleteTimeOutGroup(HmDevice *hmDevice) +{ + LOGI("Remove DmDevice<%s> Hichain Group", hmDevice->mDeviceId.c_str()); + hiChainConnector_->DeleteTimeOutGroup(hmDevice->mDeviceId.c_str()); +} + +HmDevice::HmDevice(std::string deviceId, std::shared_ptr stateMgr) +{ + mDeviceId = deviceId; + std::string timerName = "HmDeviceTimer"; + mOfflineTimerPtr = std::make_shared(timerName); + deviceStateMgr = stateMgr; +} + +HmDevice::~HmDevice() +{ + mOfflineTimerPtr = nullptr; +} } // namespace DistributedHardware } // namespace OHOS diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index fd0d387c720c81215493e802c43a7c7fea2765dc..8e3dbd99a44ad7edcb27a92eb8dc1ffdf8791940 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -105,14 +105,16 @@ ohos_unittest("UTTest_dm_device_state_manager") { module_out_path = module_out_path sources = [ - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/adapter/standard/dm_adapter_manager.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/config/dm_config_manager.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/dependency/softbus/softbus_session.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/device_manager_service_listener.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/discovery/dm_discovery_manager.cpp", + "${services_path}/src/adapter/standard/dm_adapter_manager.cpp", + "${services_path}/src/config/dm_config_manager.cpp", + "${services_path}/src/dependency/hichain/hichain_connector.cpp", + "${services_path}/src/dependency/multipleuser/multiple_user_connector.cpp", + "${services_path}/src/dependency/softbus/softbus_connector.cpp", + "${services_path}/src/dependency/softbus/softbus_session.cpp", + "${services_path}/src/dependency/timer/dm_timer.cpp", + "${services_path}/src/device_manager_service_listener.cpp", + "${services_path}/src/devicestate/dm_device_state_manager.cpp", + "${services_path}/src/discovery/dm_discovery_manager.cpp", "//foundation/distributedhardware/devicemanager/test/unittest/mock/ipc_server_listener.cpp", "//foundation/distributedhardware/devicemanager/test/unittest/mock/parameter.cpp", "UTTest_dm_device_state_manager.cpp", @@ -128,7 +130,7 @@ ohos_unittest("UTTest_device_manager_service_listener") { module_out_path = module_out_path sources = [ - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/device_manager_service_listener.cpp", + "${services_path}/src/device_manager_service_listener.cpp", "//foundation/distributedhardware/devicemanager/test/unittest/mock/ipc_server_listener.cpp", "UTTest_device_manager_service_listener.cpp", ] @@ -186,11 +188,11 @@ ohos_unittest("UTTest_dm_discovery_manager") { module_out_path = module_out_path sources = [ - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/dependency/softbus/softbus_session.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/device_manager_service_listener.cpp", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/src/discovery/dm_discovery_manager.cpp", + "${services_path}/src/dependency/softbus/softbus_connector.cpp", + "${services_path}/src/dependency/softbus/softbus_session.cpp", + "${services_path}/src/dependency/timer/dm_timer.cpp", + "${services_path}/src/device_manager_service_listener.cpp", + "${services_path}/src/discovery/dm_discovery_manager.cpp", "//foundation/distributedhardware/devicemanager/test/unittest/mock/ipc_server_listener.cpp", "//foundation/distributedhardware/devicemanager/test/unittest/mock/parameter.cpp", "UTTest_dm_discovery_manager.cpp", @@ -205,10 +207,10 @@ config("device_manager_test_common_public_config") { include_dirs = [ "//utils/native/base/include", "//utils/system/safwk/native/include", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include/ipc/standard", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include/ipc", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include/notify", + "${innerkits_path}/native_cpp/include", + "${innerkits_path}/native_cpp/include/ipc/standard", + "${innerkits_path}/native_cpp/include/ipc", + "${innerkits_path}/native_cpp/include/notify", "//third_party/json/include", "${common_path}/include", "${common_path}/include/ipc", @@ -219,25 +221,25 @@ config("device_manager_test_common_public_config") { "${services_path}/include/dependency/timer", "${services_path}/include/discovery", "${services_path}/include/dependency/softbus", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/dependency/softbus", + "${services_path}/include/dependency/softbus", + "${services_path}/include/authentication", + "${services_path}/include/adapter", + "${services_path}/include", + "${services_path}/include/ipc/standard", + "${services_path}/include/discovery", + "${services_path}/include/dependency/hichain", + "${services_path}/include/deviceinfo/", + "${services_path}/include/devicestate", "//foundation/communication/dsoftbus/interfaces/kits/bus_center", "//foundation/communication/softbus_lite/interfaces/kits/transport", "//foundation/communication/ipc_lite/interfaces/kits", "//foundation/communication/dsoftbus/interfaces/kits/common", "//foundation/communication/dsoftbus/interfaces/kits/discovery", "//foundation/communication/dsoftbus/interfaces/inner_kits/transport", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/authentication", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/adapter", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/ipc/standard", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/discovery", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/dependency/hichain", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/deviceinfo/", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/devicestate", "//foundation/distributedhardware/devicemanager/test/unittest/mock", "//base/security/deviceauth/interfaces/innerkits", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/ability", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/config", + "${services_path}/include/ability", + "${services_path}/include/config", ] cflags = [ @@ -263,16 +265,15 @@ ohos_static_library("device_manager_test_common") { public_configs = [ ":device_manager_test_common_public_config" ] public_deps = [ + "${innerkits_path}/native_cpp:devicemanagersdk", + "${services_path}:devicemanagerservice", "${utils_path}:devicemanagerutils", "//foundation/communication/ipc/interfaces/innerkits/ipc_core:ipc_core", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp:devicemanagersdk", "//foundation/distributedhardware/devicemanager/interfaces/kits/js:devicemanager", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice:devicemanagerservice", "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", "//third_party/googletest:gmock", "//third_party/googletest:gtest", "//utils/native/base:utils", - "//utils/native/base:utils", ] } @@ -283,9 +284,9 @@ config("device_manager_test_common_public") { include_dirs = [ "//utils/native/base/include", "//utils/system/safwk/native/include", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include/ipc", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include/notify", + "${innerkits_path}/native_cpp/include", + "${innerkits_path}/native_cpp/include/ipc", + "${innerkits_path}/native_cpp/include/notify", "//third_party/json/include", "${common_path}/include", "${common_path}/include/ipc", @@ -296,23 +297,27 @@ config("device_manager_test_common_public") { "${services_path}/include/dependency/timer", "${services_path}/include/discovery", "${services_path}/include/dependency/softbus", + "${services_path}/include/dependency/hichain", + "${services_path}/include/dependency/multipleuser", + "${services_path}/include/dependency/softbus", + "${services_path}/include/authentication", + "${services_path}/include/adapter", + "${services_path}/include", + "${services_path}/include/discovery", + "${services_path}/include/deviceinfo/", + "${services_path}/include/devicestate", + "//foundation/distributedhardware/devicemanager/test/unittest/mock/", + "${services_path}/include/ability", + "${services_path}/include/config", "//foundation/communication/dsoftbus/interfaces/kits/bus_center", "//foundation/communication/ipc_lite/interfaces/kits", "//foundation/communication/dsoftbus/interfaces/kits/common", "//foundation/communication/dsoftbus/interfaces/kits/discovery", "//foundation/communication/dsoftbus/interfaces/inner_kits/transport", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/dependency/softbus", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/authentication", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/adapter", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/discovery", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/dependency/hichain", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/deviceinfo/", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/devicestate", - "//foundation/distributedhardware/devicemanager/test/unittest/mock/", "//base/security/deviceauth/interfaces/innerkits", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/ability", - "//foundation/distributedhardware/devicemanager/services/devicemanagerservice/include/config", + "//base/account/os_account/interfaces/innerkits/osaccount/native/include", + "//base/account/os_account/frameworks/common/database/include", + "//base/account/os_account/frameworks/common/account_error/include", ] cflags = [ @@ -338,9 +343,9 @@ ohos_static_library("device_manager_test") { public_configs = [ ":device_manager_test_common_public" ] public_deps = [ + "${innerkits_path}/native_cpp:devicemanagersdk", "${utils_path}:devicemanagerutils", "//foundation/communication/ipc/interfaces/innerkits/ipc_core:ipc_core", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp:devicemanagersdk", "//foundation/distributedhardware/devicemanager/interfaces/kits/js:devicemanager", "//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy", "//third_party/googletest:gmock", @@ -351,6 +356,7 @@ ohos_static_library("device_manager_test") { deps = [ "${innerkits_path}/native_cpp:devicemanagersdk", "${utils_path}:devicemanagerutils", + "//base/account/os_account/frameworks/osaccount/native:os_account_innerkits", "//base/security/deviceauth/services:deviceauth_sdk", "//foundation/aafwk/standard/interfaces/innerkits/ability_manager:ability_manager", "//foundation/aafwk/standard/interfaces/innerkits/want:want", diff --git a/test/unittest/UTTest_dm_device_state_manager.cpp b/test/unittest/UTTest_dm_device_state_manager.cpp index 83b6eb9c05613561ebf6eb7ec1f3bff9859780b1..507cdca5d066332d489fb0997d800cd881ce6b0e 100644 --- a/test/unittest/UTTest_dm_device_state_manager.cpp +++ b/test/unittest/UTTest_dm_device_state_manager.cpp @@ -23,6 +23,7 @@ #include "dm_device_state_manager.h" #include "ipc_notify_device_found_req.h" #include "ipc_notify_discover_result_req.h" +#include "hichain_connector.h" #include "UTTest_dm_device_state_manager.h" namespace OHOS { @@ -43,10 +44,11 @@ void DmDeviceStateManagerTest::TearDownTestCase() { } namespace { + std::shared_ptr hiChainConnector_ = std::make_shared(); std::shared_ptr softbusConnector = std::make_shared(); std::shared_ptr listener_ = std::make_shared(); std::shared_ptr dmDeviceStateManager = - std::make_shared(softbusConnector, listener_); + std::make_shared(softbusConnector, listener_, hiChainConnector_); /** * @tc.name: DmDeviceStateManager_001 @@ -56,7 +58,8 @@ std::shared_ptr dmDeviceStateManager = */ HWTEST_F(DmDeviceStateManagerTest, DmDeviceStateManager_001, testing::ext::TestSize.Level0) { - std::shared_ptr p = std::make_shared(softbusConnector, listener_); + std::shared_ptr p = std::make_shared(softbusConnector, listener_, + hiChainConnector_); ASSERT_NE(p, nullptr); } @@ -68,7 +71,8 @@ HWTEST_F(DmDeviceStateManagerTest, DmDeviceStateManager_001, testing::ext::TestS */ HWTEST_F(DmDeviceStateManagerTest, DmDeviceStateManager_002, testing::ext::TestSize.Level0) { - std::shared_ptr p = std::make_shared(softbusConnector, listener_); + std::shared_ptr p = std::make_shared(softbusConnector, listener_, + hiChainConnector_); p.reset(); EXPECT_EQ(p, nullptr); } diff --git a/test/unittest/mock/device_auth.h b/test/unittest/mock/device_auth.h index 39b701f894cc4f7c38a9b204873b120c8a83570c..68e7cba41e08f83cc745f6d9c1812ae402f76999 100644 --- a/test/unittest/mock/device_auth.h +++ b/test/unittest/mock/device_auth.h @@ -4,7 +4,7 @@ * 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 + * 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, @@ -16,10 +16,11 @@ #ifndef DEVICE_AUTH_H #define DEVICE_AUTH_H -#include +#include +#include #if defined(__LINUX__) || defined(_UNIX) -#define DEVICE_AUTH_API_PUBLIC __attribute__((visibility("default"))) +#define DEVICE_AUTH_API_PUBLIC __attribute__ ((visibility("default"))) #else #define DEVICE_AUTH_API_PUBLIC #endif @@ -65,51 +66,68 @@ #define FIELD_GROUP_VISIBILITY "groupVisibility" #define FIELD_EXPIRE_TIME "expireTime" #define FIELD_IS_DELETE_ALL "isDeleteAll" +#define FIELD_BLE_CHALLENGE "bleChallenge" +#define FIELD_OS_ACCOUNT_ID "osAccountId" -enum GroupType { +typedef enum { + DEFAULT_OS_ACCOUNT = 0, + INVALID_OS_ACCOUNT = -1, + ANY_OS_ACCOUNT = -2, +} OsAccountEnum; + +typedef enum { ALL_GROUP = 0, IDENTICAL_ACCOUNT_GROUP = 1, PEER_TO_PEER_GROUP = 256, COMPATIBLE_GROUP = 512, ACROSS_ACCOUNT_AUTHORIZE_GROUP = 1282 -}; +} GroupType; -enum GroupOperationCode { +typedef enum { GROUP_CREATE = 0, GROUP_DISBAND = 1, MEMBER_INVITE = 2, MEMBER_JOIN = 3, MEMBER_DELETE = 4, ACCOUNT_BIND = 5 -}; +} GroupOperationCode; -enum GroupAuthForm { +typedef enum { AUTH_FORM_INVALID_TYPE = -1, AUTH_FORM_ACCOUNT_UNRELATED = 0, AUTH_FORM_IDENTICAL_ACCOUNT = 1, AUTH_FORM_ACROSS_ACCOUNT = 2, -}; +} GroupAuthForm; -enum CredentialCode { - CREDENTIAL_SAVE = 0, - CREDENTIAL_CLEAR = 1, - CREDENTIAL_UPDATE = 2, - CREDENTIAL_QUERY = 3, -}; +typedef enum { + IMPORT_SELF_CREDENTIAL = 0, + DELETE_SELF_CREDENTIAL = 1, + QUERY_SELF_CREDENTIAL_INFO = 2, + IMPORT_TRUSTED_CREDENTIALS = 3, + DELETE_TRUSTED_CREDENTIALS = 4, + QUERY_TRUSTED_CREDENTIALS = 5, + REQUEST_SIGNATURE = 6, +} CredentialCode; -enum UserType { +typedef enum { DEVICE_TYPE_ACCESSORY = 0, DEVICE_TYPE_CONTROLLER = 1, DEVICE_TYPE_PROXY = 2 -}; +} UserType; + +typedef enum { + EXPIRE_TIME_INDEFINITE = -1, + EXPIRE_TIME_MIN = 1, + EXPIRE_TIME_MAX = 90, +} ExpireTime; -enum RequestResponse { +typedef enum { REQUEST_REJECTED = 0x80000005, REQUEST_ACCEPTED = 0x80000006, REQUEST_WAITING = 0x80000007 -}; +} RequestResponse; -struct DataChangeListener { +typedef struct { void (*onGroupCreated)(const char *groupInfo); void (*onGroupDeleted)(const char *groupInfo); void (*onDeviceBound)(const char *peerUdid, const char *groupInfo); @@ -117,38 +135,40 @@ struct DataChangeListener { void (*onDeviceNotTrusted)(const char *peerUdid); void (*onLastGroupDeleted)(const char *peerUdid, int groupType); void (*onTrustedDeviceNumChanged)(int curTrustedDeviceNum); -}; +} DataChangeListener; -struct DeviceAuthCallback { +typedef struct { bool (*onTransmit)(int64_t requestId, const uint8_t *data, uint32_t dataLen); void (*onSessionKeyReturned)(int64_t requestId, const uint8_t *sessionKey, uint32_t sessionKeyLen); void (*onFinish)(int64_t requestId, int operationCode, const char *returnData); void (*onError)(int64_t requestId, int operationCode, int errorCode, const char *errorReturn); char *(*onRequest)(int64_t requestId, int operationCode, const char *reqParams); -}; +} DeviceAuthCallback; -struct GroupAuthManager { +typedef struct { int32_t (*processData)(int64_t authReqId, const uint8_t *data, uint32_t dataLen, - const DeviceAuthCallback *gaCallback); + const DeviceAuthCallback *gaCallback); int32_t (*queryTrustedDeviceNum)(void); bool (*isTrustedDevice)(const char *udid); - int32_t (*getAuthState)(int64_t authReqId, const char *groupId, const char *peerUdid, uint8_t *out, - uint32_t *outLen); - int32_t (*authDevice)(int64_t authReqId, const char *authParams, const DeviceAuthCallback *gaCallback); + int32_t (*getAuthState)(int64_t authReqId, const char *groupId, const char *peerUdid, + uint8_t *out, uint32_t *outLen); + int32_t (*authDevice)(int32_t osAccountId, int64_t authReqId, const char *authParams, + const DeviceAuthCallback *gaCallback); void (*informDeviceDisconnection)(const char *udid); -}; +} GroupAuthManager; -struct DeviceGroupManager { +typedef struct { int32_t (*regCallback)(const char *appId, const DeviceAuthCallback *callback); int32_t (*unRegCallback)(const char *appId); int32_t (*regDataChangeListener)(const char *appId, const DataChangeListener *listener); int32_t (*unRegDataChangeListener)(const char *appId); - int32_t (*createGroup)(int64_t requestId, const char *appId, const char *createParams); - int32_t (*deleteGroup)(int64_t requestId, const char *appId, const char *disbandParams); - int32_t (*addMemberToGroup)(int64_t requestId, const char *appId, const char *addParams); - int32_t (*deleteMemberFromGroup)(int64_t requestId, const char *appId, const char *deleteParams); + int32_t (*createGroup)(int32_t osAccountId, int64_t requestId, const char *appId, const char *createParams); + int32_t (*deleteGroup)(int32_t osAccountId, int64_t requestId, const char *appId, const char *disbandParams); + int32_t (*addMemberToGroup)(int32_t osAccountId, int64_t requestId, const char *appId, const char *addParams); + int32_t (*deleteMemberFromGroup)(int32_t osAccountId, int64_t requestId, const char *appId, + const char *deleteParams); int32_t (*processData)(int64_t requestId, const uint8_t *data, uint32_t dataLen); - int32_t (*confirmRequest)(int64_t requestId, const char *appId, const char *confirmParams); + int32_t (*confirmRequest)(int32_t osAccountId, int64_t requestId, const char *appId, const char *confirmParams); int32_t (*bindPeer)(int64_t requestId, const char *appId, const char *bindParams); int32_t (*unbindPeer)(int64_t requestId, const char *appId, const char *unbindParams); int32_t (*processLiteData)(int64_t requestId, const char *appId, const uint8_t *data, uint32_t dataLen); @@ -157,24 +177,32 @@ struct DeviceGroupManager { int32_t (*processCredential)(int operationCode, const char *reqJsonStr, char **returnJsonStr); int32_t (*getRegisterInfo)(char **returnRegisterInfo); int32_t (*getLocalConnectInfo)(char *returnInfo, int32_t bufLen); - int32_t (*checkAccessToGroup)(const char *appId, const char *groupId); - int32_t (*getPkInfoList)(const char *appId, const char *queryParams, char **returnInfoList, - uint32_t *returnInfoNum); - int32_t (*addGroupManager)(const char *appId, const char *groupId, const char *managerAppId); - int32_t (*addGroupFriend)(const char *appId, const char *groupId, const char *friendAppId); - int32_t (*deleteGroupManager)(const char *appId, const char *groupId, const char *managerAppId); - int32_t (*deleteGroupFriend)(const char *appId, const char *groupId, const char *friendAppId); - int32_t (*getGroupManagers)(const char *appId, const char *groupId, char **returnManagers, uint32_t *returnSize); - int32_t (*getGroupFriends)(const char *appId, const char *groupId, char **returnFriends, uint32_t *returnSize); - int32_t (*getGroupInfoById)(const char *appId, const char *groupId, char **returnGroupInfo); - int32_t (*getGroupInfo)(const char *appId, const char *queryParams, char **returnGroupVec, uint32_t *groupNum); - int32_t (*getJoinedGroups)(const char *appId, int groupType, char **returnGroupVec, uint32_t *groupNum); - int32_t (*getRelatedGroups)(const char *appId, const char *peerDeviceId, char **returnGroupVec, uint32_t *groupNum); - int32_t (*getDeviceInfoById)(const char *appId, const char *deviceId, const char *groupId, char **returnDeviceInfo); - int32_t (*getTrustedDevices)(const char *appId, const char *groupId, char **returnDevInfoVec, uint32_t *deviceNum); - bool (*isDeviceInGroup)(const char *appId, const char *groupId, const char *deviceId); + int32_t (*checkAccessToGroup)(int32_t osAccountId, const char *appId, const char *groupId); + int32_t (*getPkInfoList)(int32_t osAccountId, const char *appId, const char *queryParams, char **returnInfoList, + uint32_t *returnInfoNum); + int32_t (*addGroupManager)(int32_t osAccountId, const char *appId, const char *groupId, const char *managerAppId); + int32_t (*addGroupFriend)(int32_t osAccountId, const char *appId, const char *groupId, const char *friendAppId); + int32_t (*deleteGroupManager)(int32_t osAccountId, const char *appId, const char *groupId, + const char *managerAppId); + int32_t (*deleteGroupFriend)(int32_t osAccountId, const char *appId, const char *groupId, const char *friendAppId); + int32_t (*getGroupManagers)(int32_t osAccountId, const char *appId, const char *groupId, char **returnManagers, + uint32_t *returnSize); + int32_t (*getGroupFriends)(int32_t osAccountId, const char *appId, const char *groupId, + char **returnFriends, uint32_t *returnSize); + int32_t (*getGroupInfoById)(int32_t osAccountId, const char *appId, const char *groupId, char **returnGroupInfo); + int32_t (*getGroupInfo)(int32_t osAccountId, const char *appId, const char *queryParams, + char **returnGroupVec, uint32_t *groupNum); + int32_t (*getJoinedGroups)(int32_t osAccountId, const char *appId, int groupType, + char **returnGroupVec, uint32_t *groupNum); + int32_t (*getRelatedGroups)(int32_t osAccountId, const char *appId, const char *peerDeviceId, + char **returnGroupVec, uint32_t *groupNum); + int32_t (*getDeviceInfoById)(int32_t osAccountId, const char *appId, const char *deviceId, const char *groupId, + char **returnDeviceInfo); + int32_t (*getTrustedDevices)(int32_t osAccountId, const char *appId, const char *groupId, + char **returnDevInfoVec, uint32_t *deviceNum); + bool (*isDeviceInGroup)(int32_t osAccountId, const char *appId, const char *groupId, const char *deviceId); void (*destroyInfo)(char **returnInfo); -}; +} DeviceGroupManager; #ifdef __cplusplus extern "C" { diff --git a/test/unittest/mock/parameter.cpp b/test/unittest/mock/parameter.cpp index a51d9ed9371769c4abf055d1e37e95aa6524e528..99fa1c54e68aef636a0716033158640d33abdb97 100644 --- a/test/unittest/mock/parameter.cpp +++ b/test/unittest/mock/parameter.cpp @@ -29,3 +29,8 @@ int WatchParameter(const char *keyprefix, ParameterChgPtr callback, void *contex { return 0; } + +int GetDevUdid(char *udid, int size) +{ + return 0; +} \ No newline at end of file diff --git a/test/unittest/mock/parameter.h b/test/unittest/mock/parameter.h index 23da1b6a60ebf597bb6dc6fddbab8e58b4da85ec..77b456430108bc778dbb64ada18c40cb9fe43014 100644 --- a/test/unittest/mock/parameter.h +++ b/test/unittest/mock/parameter.h @@ -29,6 +29,7 @@ int SetParameter(const char *key, const char *value); typedef void (*ParameterChgPtr)(const char *key, const char *value, void *context); int WatchParameter(const char *keyprefix, ParameterChgPtr callback, void *context); +int GetDevUdid(char *udid, int size); #ifdef __cplusplus #if __cplusplus }