mirror of
https://gitee.com/openharmony/ability_dmsfwk
synced 2024-11-22 22:09:58 +00:00
fix same account old device start ability
Signed-off-by: t00605578 <tongyuejiao@huawei.com>
This commit is contained in:
parent
5aee5b8d03
commit
5b37589206
@ -19,7 +19,7 @@
|
|||||||
],
|
],
|
||||||
"adapted_system_type": [ "standard" ],
|
"adapted_system_type": [ "standard" ],
|
||||||
"features" : [
|
"features" : [
|
||||||
"dmsfwk_feature_coverage = false",
|
"dmsfwk_feature_coverage",
|
||||||
"dmsfwk_standard_form_share",
|
"dmsfwk_standard_form_share",
|
||||||
"dmsfwk_mission_manager",
|
"dmsfwk_mission_manager",
|
||||||
"dmsfwk_report_memmgr",
|
"dmsfwk_report_memmgr",
|
||||||
|
@ -46,7 +46,7 @@ public:
|
|||||||
int32_t accountType = DIFF_ACCOUNT_TYPE;
|
int32_t accountType = DIFF_ACCOUNT_TYPE;
|
||||||
std::vector<std::string> groupIdList;
|
std::vector<std::string> groupIdList;
|
||||||
std::string activeAccountId = "";
|
std::string activeAccountId = "";
|
||||||
int32_t userId = 0;
|
int32_t userId = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -66,6 +66,7 @@ int32_t DSchedContinueCmdBase::Unmarshal(const std::string &jsonStr)
|
|||||||
{
|
{
|
||||||
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
||||||
if (rootValue == nullptr) {
|
if (rootValue == nullptr) {
|
||||||
|
HILOGE("Dms continue cmd base json string parse to cjson fail.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +79,7 @@ int32_t DSchedContinueCmdBase::Unmarshal(const std::string &jsonStr)
|
|||||||
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, numKeys[i]);
|
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, numKeys[i]);
|
||||||
if (item == nullptr || !cJSON_IsNumber(item)) {
|
if (item == nullptr || !cJSON_IsNumber(item)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Dms continue cmd base %{public}s term is null or not number.", numKeys[i]);
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
*numValues[i] = item->valueint;
|
*numValues[i] = item->valueint;
|
||||||
@ -90,6 +92,7 @@ int32_t DSchedContinueCmdBase::Unmarshal(const std::string &jsonStr)
|
|||||||
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, strKeys[i]);
|
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, strKeys[i]);
|
||||||
if (item == nullptr || !cJSON_IsString(item) || (item->valuestring == nullptr)) {
|
if (item == nullptr || !cJSON_IsString(item) || (item->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Dms continue cmd base %{public}s term is null or not string.", strKeys[i]);
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
*strValues[i] = item->valuestring;
|
*strValues[i] = item->valuestring;
|
||||||
@ -392,23 +395,27 @@ int32_t DSchedContinueDataCmd::UnmarshalParcel(const std::string &jsonStr)
|
|||||||
{
|
{
|
||||||
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
||||||
if (rootValue == nullptr) {
|
if (rootValue == nullptr) {
|
||||||
|
HILOGE("Want and AbilityInfo json string parse to cjson fail.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON *wantStr = cJSON_GetObjectItemCaseSensitive(rootValue, "Want");
|
cJSON *wantStr = cJSON_GetObjectItemCaseSensitive(rootValue, "Want");
|
||||||
if (wantStr == nullptr || !cJSON_IsString(wantStr) || (wantStr->valuestring == nullptr)) {
|
if (wantStr == nullptr || !cJSON_IsString(wantStr) || (wantStr->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Want term is null or not string.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
Parcel wantParcel;
|
Parcel wantParcel;
|
||||||
int32_t ret = Base64StrToParcel(wantStr->valuestring, wantParcel);
|
int32_t ret = Base64StrToParcel(wantStr->valuestring, wantParcel);
|
||||||
if (ret != ERR_OK) {
|
if (ret != ERR_OK) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Want parcel Base64Str unmarshal fail, ret %{public}d.", ret);
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
auto wantPtr = AAFwk::Want::Unmarshalling(wantParcel);
|
auto wantPtr = AAFwk::Want::Unmarshalling(wantParcel);
|
||||||
if (wantPtr == nullptr) {
|
if (wantPtr == nullptr) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("AAFwk Want unmarshalling fail, check return null.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
want_ = *wantPtr;
|
want_ = *wantPtr;
|
||||||
@ -416,17 +423,20 @@ int32_t DSchedContinueDataCmd::UnmarshalParcel(const std::string &jsonStr)
|
|||||||
cJSON *abilityInfoStr = cJSON_GetObjectItemCaseSensitive(rootValue, "AbilityInfo");
|
cJSON *abilityInfoStr = cJSON_GetObjectItemCaseSensitive(rootValue, "AbilityInfo");
|
||||||
if (abilityInfoStr == nullptr || !cJSON_IsString(abilityInfoStr) || (abilityInfoStr->valuestring == nullptr)) {
|
if (abilityInfoStr == nullptr || !cJSON_IsString(abilityInfoStr) || (abilityInfoStr->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("AbilityInfo term is null or not string.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
Parcel abilityParcel;
|
Parcel abilityParcel;
|
||||||
ret = Base64StrToParcel(abilityInfoStr->valuestring, abilityParcel);
|
ret = Base64StrToParcel(abilityInfoStr->valuestring, abilityParcel);
|
||||||
if (ret != ERR_OK) {
|
if (ret != ERR_OK) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("AbilityInfo parcel Base64Str unmarshal fail, ret %{public}d.", ret);
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
auto abilityInfoPtr = AppExecFwk::CompatibleAbilityInfo::Unmarshalling(abilityParcel);
|
auto abilityInfoPtr = AppExecFwk::CompatibleAbilityInfo::Unmarshalling(abilityParcel);
|
||||||
if (abilityInfoPtr == nullptr) {
|
if (abilityInfoPtr == nullptr) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("AppExecFwk CompatibleAbilityInfo unmarshalling fail, check return null.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
abilityInfo_ = *abilityInfoPtr;
|
abilityInfo_ = *abilityInfoPtr;
|
||||||
@ -439,6 +449,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr)
|
|||||||
{
|
{
|
||||||
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
||||||
if (rootValue == nullptr) {
|
if (rootValue == nullptr) {
|
||||||
|
HILOGE("Caller info json string parse to cjson fail.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,6 +464,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr)
|
|||||||
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, strKeys[i]);
|
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, strKeys[i]);
|
||||||
if (item == nullptr || !cJSON_IsString(item) || (item->valuestring == nullptr)) {
|
if (item == nullptr || !cJSON_IsString(item) || (item->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Caller info json %{public}s term is null or not string.", strKeys[i]);
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
*strValues[i] = item->valuestring;
|
*strValues[i] = item->valuestring;
|
||||||
@ -469,6 +481,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr)
|
|||||||
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, numKeys[i]);
|
cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, numKeys[i]);
|
||||||
if (item == nullptr || !cJSON_IsNumber(item)) {
|
if (item == nullptr || !cJSON_IsNumber(item)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Caller info json %{public}s term is null or not number.", numKeys[i]);
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
*numValues[i] = item->valueint;
|
*numValues[i] = item->valueint;
|
||||||
@ -476,6 +489,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr)
|
|||||||
|
|
||||||
if (UnmarshalCallerInfoExtra(jsonStr) != ERR_OK) {
|
if (UnmarshalCallerInfoExtra(jsonStr) != ERR_OK) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("Unmarshal CallerInfoExtra term from caller info json string fail.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,6 +501,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfoExtra(std::string &jsonStr)
|
|||||||
{
|
{
|
||||||
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
||||||
if (rootValue == nullptr) {
|
if (rootValue == nullptr) {
|
||||||
|
HILOGE("Caller info extra json string parse to cjson fail.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -496,6 +511,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfoExtra(std::string &jsonStr)
|
|||||||
cJSON_ArrayForEach(bundleName, bundleNames) {
|
cJSON_ArrayForEach(bundleName, bundleNames) {
|
||||||
if (bundleName == nullptr || !cJSON_IsString(bundleName) || (bundleName->valuestring == nullptr)) {
|
if (bundleName == nullptr || !cJSON_IsString(bundleName) || (bundleName->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("BundleNames term in CallerInfoExtra json is null or not string.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
bundleNameList.push_back(bundleName->valuestring);
|
bundleNameList.push_back(bundleName->valuestring);
|
||||||
@ -505,11 +521,13 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfoExtra(std::string &jsonStr)
|
|||||||
cJSON *extraInfo = cJSON_GetObjectItemCaseSensitive(rootValue, "ExtraInfo");
|
cJSON *extraInfo = cJSON_GetObjectItemCaseSensitive(rootValue, "ExtraInfo");
|
||||||
if (extraInfo == nullptr || !cJSON_IsString(extraInfo) || (extraInfo->valuestring == nullptr)) {
|
if (extraInfo == nullptr || !cJSON_IsString(extraInfo) || (extraInfo->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("ExtraInfo term in CallerInfoExtra json is null or not string.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
cJSON *extraInfoValue = cJSON_Parse(extraInfo->valuestring);
|
cJSON *extraInfoValue = cJSON_Parse(extraInfo->valuestring);
|
||||||
if (extraInfoValue == nullptr) {
|
if (extraInfoValue == nullptr) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("ExtraInfo term json string parse to cjson fail in CallerInfoExtra json.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -531,12 +549,14 @@ int32_t DSchedContinueDataCmd::UnmarshalAccountInfo(std::string &jsonStr)
|
|||||||
{
|
{
|
||||||
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
cJSON *rootValue = cJSON_Parse(jsonStr.c_str());
|
||||||
if (rootValue == nullptr) {
|
if (rootValue == nullptr) {
|
||||||
|
HILOGE("Account info json string parse to cjson fail.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON *accountType = cJSON_GetObjectItemCaseSensitive(rootValue, "AccountType");
|
cJSON *accountType = cJSON_GetObjectItemCaseSensitive(rootValue, "AccountType");
|
||||||
if (accountType == nullptr || !cJSON_IsNumber(accountType)) {
|
if (accountType == nullptr || !cJSON_IsNumber(accountType)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("AccountType term in account info json is null or not number.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
accountInfo_.accountType = accountType->valueint;
|
accountInfo_.accountType = accountType->valueint;
|
||||||
@ -547,6 +567,7 @@ int32_t DSchedContinueDataCmd::UnmarshalAccountInfo(std::string &jsonStr)
|
|||||||
cJSON_ArrayForEach(groupId, groupIdListStr) {
|
cJSON_ArrayForEach(groupId, groupIdListStr) {
|
||||||
if (groupId == nullptr || !cJSON_IsString(groupId) || (groupId->valuestring == nullptr)) {
|
if (groupId == nullptr || !cJSON_IsString(groupId) || (groupId->valuestring == nullptr)) {
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
|
HILOGE("groupId term in account info json is null or not string.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
groupIdList.push_back(groupId->valuestring);
|
groupIdList.push_back(groupId->valuestring);
|
||||||
@ -555,16 +576,16 @@ int32_t DSchedContinueDataCmd::UnmarshalAccountInfo(std::string &jsonStr)
|
|||||||
|
|
||||||
cJSON *accountId = cJSON_GetObjectItemCaseSensitive(rootValue, Constants::EXTRO_INFO_JSON_KEY_ACCOUNT_ID.c_str());
|
cJSON *accountId = cJSON_GetObjectItemCaseSensitive(rootValue, Constants::EXTRO_INFO_JSON_KEY_ACCOUNT_ID.c_str());
|
||||||
if (accountId == nullptr || !cJSON_IsString(accountId)) {
|
if (accountId == nullptr || !cJSON_IsString(accountId)) {
|
||||||
cJSON_Delete(rootValue);
|
HILOGE("accountId term in account info json is null or not string.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
} else {
|
||||||
|
accountInfo_.activeAccountId = accountId->valuestring;
|
||||||
}
|
}
|
||||||
accountInfo_.activeAccountId = accountId->valuestring;
|
|
||||||
cJSON *userId = cJSON_GetObjectItemCaseSensitive(rootValue, Constants::EXTRO_INFO_JSON_KEY_USERID_ID.c_str());
|
cJSON *userId = cJSON_GetObjectItemCaseSensitive(rootValue, Constants::EXTRO_INFO_JSON_KEY_USERID_ID.c_str());
|
||||||
if (userId == nullptr || !cJSON_IsNumber(userId)) {
|
if (userId == nullptr || !cJSON_IsNumber(userId)) {
|
||||||
cJSON_Delete(rootValue);
|
HILOGE("userId term in account info json is null or not number.");
|
||||||
return INVALID_PARAMETERS_ERR;
|
} else {
|
||||||
|
accountInfo_.userId = userId->valueint;
|
||||||
}
|
}
|
||||||
accountInfo_.userId = userId->valueint;
|
|
||||||
|
|
||||||
cJSON_Delete(rootValue);
|
cJSON_Delete(rootValue);
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
|
@ -93,7 +93,7 @@ int32_t DSchedAllConnectManager::GetServiceCollaborationManagerProxy()
|
|||||||
std::string resolvedPath = "/system/lib/libcfwk_allconnect_client.z.so";
|
std::string resolvedPath = "/system/lib/libcfwk_allconnect_client.z.so";
|
||||||
#endif
|
#endif
|
||||||
char path[PATH_MAX + 1] = {0};
|
char path[PATH_MAX + 1] = {0};
|
||||||
if (resolvedPath.empty() || resolvedPath.length() > PATH_MAX || realpath(resolvedPath.c_str(), path) == nullptr) {
|
if (resolvedPath.length() > PATH_MAX || realpath(resolvedPath.c_str(), path) == nullptr) {
|
||||||
HILOGE("Check all connect so real path failed, resolvedPath [%{public}s].", resolvedPath.c_str());
|
HILOGE("Check all connect so real path failed, resolvedPath [%{public}s].", resolvedPath.c_str());
|
||||||
return INVALID_PARAMETERS_ERR;
|
return INVALID_PARAMETERS_ERR;
|
||||||
}
|
}
|
||||||
@ -116,14 +116,12 @@ int32_t DSchedAllConnectManager::GetServiceCollaborationManagerProxy()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t ret = ServiceCollaborationManagerExport(&allConnectMgrApi_);
|
ret = ServiceCollaborationManagerExport(&allConnectMgrApi_);
|
||||||
if (ret != ERR_OK) {
|
if (ret != ERR_OK) {
|
||||||
HILOGE("Init remote dms interactive adapter proxy fail, ret %{public}d.", ret);
|
HILOGE("Init remote dms interactive adapter proxy fail, ret %{public}d.", ret);
|
||||||
ret = INVALID_PARAMETERS_ERR;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
HILOGI("Init remote dms interactive adapter proxy success.");
|
HILOGI("Init remote dms interactive adapter proxy success.");
|
||||||
ret = ERR_OK;
|
|
||||||
} while (false);
|
} while (false);
|
||||||
|
|
||||||
if (ret != ERR_OK) {
|
if (ret != ERR_OK) {
|
||||||
|
@ -295,14 +295,13 @@ void DSchedTransportSoftbusAdapter::OnBind(int32_t sessionId, const std::string
|
|||||||
|
|
||||||
void DSchedTransportSoftbusAdapter::OnShutdown(int32_t sessionId, bool isSelfcalled)
|
void DSchedTransportSoftbusAdapter::OnShutdown(int32_t sessionId, bool isSelfcalled)
|
||||||
{
|
{
|
||||||
std::string peerDeviceId;
|
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> sessionLock(sessionMutex_);
|
std::lock_guard<std::mutex> sessionLock(sessionMutex_);
|
||||||
if (sessions_.empty() || sessions_.count(sessionId) == 0 || sessions_[sessionId] == nullptr) {
|
if (sessions_.empty() || sessions_.count(sessionId) == 0 || sessions_[sessionId] == nullptr) {
|
||||||
HILOGE("error, invalid sessionId %{public}d", sessionId);
|
HILOGE("error, invalid sessionId %{public}d", sessionId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
peerDeviceId = sessions_[sessionId]->GetPeerDeviceId();
|
std::string peerDeviceId = sessions_[sessionId]->GetPeerDeviceId();
|
||||||
HILOGI("peerDeviceId: %{public}s shutdown, socket sessionId: %{public}d.",
|
HILOGI("peerDeviceId: %{public}s shutdown, socket sessionId: %{public}d.",
|
||||||
GetAnonymStr(peerDeviceId).c_str(), sessionId);
|
GetAnonymStr(peerDeviceId).c_str(), sessionId);
|
||||||
ShutdownSession(peerDeviceId, sessionId);
|
ShutdownSession(peerDeviceId, sessionId);
|
||||||
|
Loading…
Reference in New Issue
Block a user