DFX: add app version for radar

Signed-off-by: z00838083 <zhuhuixuan@huawei.com>
This commit is contained in:
z00838083 2024-10-14 15:42:15 +08:00
parent ad126ee669
commit 9872bf56af
10 changed files with 53 additions and 33 deletions

View File

@ -142,7 +142,7 @@ private:
int32_t PostStartTask(const OHOS::AAFwk::WantParams& wantParams);
int32_t PostReplyTask(std::shared_ptr<DSchedContinueReplyCmd> cmd);
int32_t PostCotinueAbilityTask(int32_t appVersion);
int32_t PostCotinueAbilityTask(uint32_t appVersion);
int32_t PostContinueSendTask(const OHOS::AAFwk::Want& want, int32_t callerUid, int32_t status,
uint32_t accessToken);
int32_t PostContinueDataTask(std::shared_ptr<DSchedContinueDataCmd> cmd);
@ -150,7 +150,7 @@ private:
int32_t PostContinueEndTask(int32_t result);
int32_t ExecuteContinueReq(std::shared_ptr<DistributedWantParams> wantParams);
int32_t ExecuteContinueAbility(int32_t appVersion);
int32_t ExecuteContinueAbility(uint32_t appVersion);
int32_t ExecuteContinueReply();
int32_t ExecuteContinueSend(std::shared_ptr<ContinueAbilityData> data);
int32_t ExecuteContinueData(std::shared_ptr<DSchedContinueDataCmd> cmd);
@ -159,7 +159,7 @@ private:
int32_t ExecuteContinueError(int32_t result);
int32_t OnContinueMission(const OHOS::AAFwk::WantParams& wantParams);
int32_t OnStartCmd(int32_t appVersion);
int32_t OnStartCmd(uint32_t appVersion);
int32_t OnReplyCmd(std::shared_ptr<DSchedContinueReplyCmd> cmd);
int32_t OnStartContinuation(const OHOS::AAFwk::Want& want, int32_t callerUid, int32_t status,
uint32_t accessToken);
@ -182,7 +182,7 @@ private:
const AccountInfo& accountInfo);
int32_t CheckStartPermission(std::shared_ptr<DSchedContinueDataCmd> cmd);
int32_t PackEndCmd(std::shared_ptr<DSchedContinueEndCmd> cmd, int32_t result);
int32_t PackReplyCmd(std::shared_ptr<DSchedContinueReplyCmd> cmd, int32_t replyCmd, int32_t appVersion,
int32_t PackReplyCmd(std::shared_ptr<DSchedContinueReplyCmd> cmd, int32_t replyCmd, uint32_t appVersion,
int32_t result, const std::string reason);
int32_t SendCommand(std::shared_ptr<DSchedContinueCmdBase> cmd);

View File

@ -78,7 +78,7 @@ public:
public:
int32_t direction_ = 0;
int32_t appVersion_ = 0;
uint32_t appVersion_ = 0;
DistributedWantParams wantParams_;
};
@ -112,7 +112,7 @@ public:
public:
int32_t replyCmd_ = 0;
int32_t appVersion_ = 0;
uint32_t appVersion_ = 0;
int32_t result_ = 0;
std::string reason_;
};

View File

@ -32,7 +32,7 @@ namespace DistributedSchedule {
namespace {
constexpr int32_t MAX_CONCURRENT_SINK = 1;
constexpr int32_t MAX_CONCURRENT_SOURCE = 1;
constexpr int32_t CONTINUE_TIMEOUT = 7000;
constexpr int32_t CONTINUE_TIMEOUT = 10000;
}
class DSchedContinueManager {
DECLARE_SINGLE_INSTANCE_BASE(DSchedContinueManager);

View File

@ -50,6 +50,8 @@ const std::string ERROR_CODE = "ERROR_CODE";
const std::string PEER_UDID = "PEER_UDID";
const std::string APP_CALLEE = "APP_CALLEE";
const std::string APP_CALLER = "APP_CALLER";
const std::string LOCAL_APP_VERSION = "LOCAL_APP_VERSION";
const std::string PEER_APP_VERSION = "PEER_APP_VERSION";
constexpr char APP_CONTINUE_DOMAIN[] = "APP_CONTINUE";
constexpr int32_t ANONYM_MIN_LENGTH = 10;
constexpr int32_t SUBSTR_UDID_LENGTH = 5;
@ -168,7 +170,7 @@ public:
bool RecvUnfocused(const std::string& func);
bool UnfocusedGetBundleName(const std::string& func, int32_t errCode);
bool NotifyDockUnfocused(const std::string& func, int32_t errCode);
bool ClickIconDmsContinue(const std::string& func, int32_t errCode, std::string peerUdid,
bool ClickIconDmsContinue(const std::string& func, int32_t errCode, std::string peerDeviceId,
const std::string& srcBundleName, const std::string& dstBundleName);
bool ClickIconDmsStartAbility(const std::string& func, int32_t errCode);
bool ClickIconDmsRecvOver(const std::string& func, int32_t errCode);

View File

@ -264,13 +264,13 @@ int32_t DSchedContinue::PostStartTask(const OHOS::AAFwk::WantParams& wantParams)
return ERR_OK;
}
int32_t DSchedContinue::OnStartCmd(int32_t appVersion)
int32_t DSchedContinue::OnStartCmd(uint32_t appVersion)
{
HILOGI("called");
return PostCotinueAbilityTask(appVersion);
}
int32_t DSchedContinue::PostCotinueAbilityTask(int32_t appVersion)
int32_t DSchedContinue::PostCotinueAbilityTask(uint32_t appVersion)
{
DSchedContinueEventType eventType = DSHCED_CONTINUE_ABILITY_EVENT;
HILOGI("PostCotinueAbilityTask %{public}d, continueInfo %{public}s", eventType,
@ -279,7 +279,7 @@ int32_t DSchedContinue::PostCotinueAbilityTask(int32_t appVersion)
HILOGE("PostCotinueAbilityTask eventHandler is nullptr");
return INVALID_PARAMETERS_ERR;
}
auto data = std::make_shared<int32_t>(appVersion);
auto data = std::make_shared<uint32_t>(appVersion);
auto msgEvent = AppExecFwk::InnerEvent::Get(eventType, data, 0);
if (!eventHandler_->SendEvent(msgEvent, 0, AppExecFwk::EventQueue::Priority::IMMEDIATE)) {
HILOGE("PostCotinueAbilityTask eventHandler send event type %{public}d fail", eventType);
@ -498,8 +498,7 @@ int32_t DSchedContinue::ExecuteContinueReq(std::shared_ptr<DistributedWantParams
std::string peerDeviceId = (direction_ == CONTINUE_SOURCE) ?
continueInfo_.sinkDeviceId_ : continueInfo_.sourceDeviceId_;
std::string peerUdid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUdidByNetworkId(peerDeviceId);
DmsRadar::GetInstance().ClickIconDmsContinue("ContinueMission", ERR_OK, peerUdid,
DmsRadar::GetInstance().ClickIconDmsContinue("ContinueMission", ERR_OK, peerDeviceId,
continueInfo_.sourceBundleName_, continueInfo_.sinkBundleName_);
DmsUE::GetInstance().TriggerDmsContinue(continueInfo_.sinkBundleName_, continueInfo_.sinkAbilityName_,
@ -653,15 +652,15 @@ int32_t DSchedContinue::PackStartCmd(std::shared_ptr<DSchedContinueStartCmd>& cm
HILOGE("pack start cmd failed, the bundle is not installed on local device.");
return ret;
}
cmd->appVersion_ = static_cast<int32_t>(localBundleInfo.versionCode);
cmd->appVersion_ = localBundleInfo.versionCode;
}
cmd->wantParams_ = *wantParams;
return ERR_OK;
}
int32_t DSchedContinue::ExecuteContinueAbility(int32_t appVersion)
int32_t DSchedContinue::ExecuteContinueAbility(uint32_t appVersion)
{
HILOGI("ExecuteContinueAbility start, appVersion: %{public}d", appVersion);
HILOGI("ExecuteContinueAbility start, appVersion: %{public}u", appVersion);
DmsRadar::GetInstance().SaveDataDmsContinue("ContinueAbility", ERR_OK);
int32_t result = GetMissionIdByBundleName();
@ -1072,7 +1071,7 @@ int32_t DSchedContinue::ExecuteNotifyComplete(int32_t result)
return ERR_OK;
}
int32_t DSchedContinue::PackReplyCmd(std::shared_ptr<DSchedContinueReplyCmd> cmd, int32_t replyCmd, int32_t appVersion,
int32_t DSchedContinue::PackReplyCmd(std::shared_ptr<DSchedContinueReplyCmd> cmd, int32_t replyCmd, uint32_t appVersion,
int32_t result, const std::string reason)
{
if (cmd == nullptr) {

View File

@ -177,11 +177,12 @@ int32_t DSchedContinueStartCmd::Unmarshal(const std::string &jsonStr)
direction_ = direction->valueint;
cJSON *appVersion = cJSON_GetObjectItemCaseSensitive(rootValue, "AppVersion");
if (appVersion == nullptr || !cJSON_IsNumber(appVersion)) {
if (appVersion == nullptr || !cJSON_IsNumber(appVersion) || appVersion->valueint < 0 ||
appVersion->valueint > UINT32_MAX) {
cJSON_Delete(rootValue);
return INVALID_PARAMETERS_ERR;
}
appVersion_ = appVersion->valueint;
appVersion_ = static_cast<uint32_t>(appVersion->valueint);
cJSON *wantParams = cJSON_GetObjectItemCaseSensitive(rootValue, "WantParams");
if (wantParams == nullptr || !cJSON_IsString(wantParams) || (wantParams->valuestring == nullptr)) {
@ -653,10 +654,10 @@ int32_t DSchedContinueReplyCmd::Unmarshal(const std::string &jsonStr)
}
const char *numKeys[] = {
"ReplyCmd", "AppVersion", "Result"
"ReplyCmd", "Result"
};
int32_t *numValues[] = {
&replyCmd_, &appVersion_, &result_
&replyCmd_, &result_
};
int32_t numLength = sizeof(numKeys) / sizeof(numKeys[0]);
for (int32_t i = 0; i < numLength; i++) {
@ -668,6 +669,14 @@ int32_t DSchedContinueReplyCmd::Unmarshal(const std::string &jsonStr)
*numValues[i] = item->valueint;
}
cJSON *appVersion = cJSON_GetObjectItemCaseSensitive(rootValue, "AppVersion");
if (appVersion == nullptr || !cJSON_IsNumber(appVersion) || appVersion->valueint < 0 ||
appVersion->valueint > UINT32_MAX) {
cJSON_Delete(rootValue);
return INVALID_PARAMETERS_ERR;
}
appVersion_ = static_cast<uint32_t>(appVersion->valueint);
cJSON *reason = cJSON_GetObjectItemCaseSensitive(rootValue, "Reason");
if (reason == nullptr || !cJSON_IsString(reason) || (reason->valuestring == nullptr)) {
cJSON_Delete(rootValue);

View File

@ -86,7 +86,7 @@ int32_t DSchedContinueSourceStartState::DoContinueAbilityTask(std::shared_ptr<DS
HILOGE("dContinue or event is null");
return INVALID_PARAMETERS_ERR;
}
auto syncContinueData = event->GetSharedObject<int32_t>();
auto syncContinueData = event->GetSharedObject<uint32_t>();
int32_t ret = dContinue->ExecuteContinueAbility(*syncContinueData);
if (ret != ERR_OK) {
HILOGE("DSchedContinueSourceStartState ExecuteContinueAbility failed, ret: %{public}d", ret);

View File

@ -15,6 +15,8 @@
#include "dfx/distributed_radar.h"
#include "bundle/bundle_manager_internal.h"
#include "dtbschedmgr_device_info_storage.h"
#include "hisysevent.h"
namespace OHOS {
@ -728,13 +730,17 @@ bool DmsRadar::NotifyDockUnfocused(const std::string& func, int32_t errCode)
return true;
}
bool DmsRadar::ClickIconDmsContinue(const std::string& func, int32_t errCode, std::string peerUdid,
bool DmsRadar::ClickIconDmsContinue(const std::string& func, int32_t errCode, std::string peerDeviceId,
const std::string& srcBundleName, const std::string& dstBundleName)
{
if (peerUdid.empty()) {
HILOGE("peerUdid is empty.");
return false;
}
std::string peerUdid = DtbschedmgrDeviceInfoStorage::GetInstance().GetUdidByNetworkId(peerDeviceId);
DmsBundleInfo srcBundleInfo;
DmsBmStorage::GetInstance()->GetStorageDistributeInfo(peerDeviceId, srcBundleName, srcBundleInfo);
AppExecFwk::BundleInfo dstBundleInfo;
BundleManagerInternal::GetLocalBundleInfoV9(dstBundleName, dstBundleInfo);
int32_t res = ERR_OK;
StageRes stageRes = (errCode == ERR_OK) ? StageRes::STAGE_SUCC : StageRes::STAGE_FAIL;
if (stageRes == StageRes::STAGE_SUCC) {
@ -749,7 +755,9 @@ bool DmsRadar::ClickIconDmsContinue(const std::string& func, int32_t errCode, st
STAGE_RES, static_cast<int32_t>(StageRes::STAGE_SUCC),
PEER_UDID, GetAnonyUdid(peerUdid),
APP_CALLEE, srcBundleName,
APP_CALLER, dstBundleName);
APP_CALLER, dstBundleName,
LOCAL_APP_VERSION, srcBundleInfo.versionName,
PEER_APP_VERSION, dstBundleInfo.versionName);
} else {
res = HiSysEventWrite(
APP_CONTINUE_DOMAIN,
@ -763,6 +771,8 @@ bool DmsRadar::ClickIconDmsContinue(const std::string& func, int32_t errCode, st
PEER_UDID, GetAnonyUdid(peerUdid),
APP_CALLEE, srcBundleName,
APP_CALLER, dstBundleName,
LOCAL_APP_VERSION, srcBundleInfo.versionName,
PEER_APP_VERSION, dstBundleInfo.versionName,
ERROR_CODE, errCode);
}
if (res != ERR_OK) {

View File

@ -103,7 +103,7 @@ HWTEST_F(DSchedContinueTest, DSchedContinueTest_002_1, TestSize.Level0)
int32_t subType = CONTINUE_PULL;
int32_t direction = CONTINUE_SINK;
sptr<IRemoteObject> callback = nullptr;
int32_t appVersion = 0;
uint32_t appVersion = 0;
auto info = DSchedContinueInfo(deviceId, bundleName, deviceId, bundleName, "");
auto conti = std::make_shared<DSchedContinue>(subType, direction, callback, info);
@ -407,7 +407,7 @@ HWTEST_F(DSchedContinueTest, DSchedContinueTest_0010_1, TestSize.Level0)
auto conti = std::make_shared<DSchedContinue>(subType, direction, callback, info);
conti->Init();
int32_t appVersion = 0;
uint32_t appVersion = 0;
int32_t ret = conti->ExecuteContinueAbility(appVersion);
EXPECT_NE(ret, ERR_OK);
DTEST_LOG << "DSchedContinueTest DSchedContinueTest_0010_1 end ret:" << ret << std::endl;
@ -644,7 +644,7 @@ HWTEST_F(DSchedContinueTest, DSchedContinueTest_0019_1, TestSize.Level0)
auto cmd = std::make_shared<DSchedContinueReplyCmd>();
int32_t replyCmd = 0;
int32_t appVersion = 0;
uint32_t appVersion = 0;
int32_t result = 0;
int32_t ret = conti->PackReplyCmd(cmd, replyCmd, appVersion, result, "");