mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 22:21:36 -04:00
d5f0318b0a
Signed-off-by: sodanotgreen <limengzheng@huawei.com>
140 lines
5.3 KiB
C++
140 lines
5.3 KiB
C++
/*
|
|
* Copyright (c) 2023-2024 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.
|
|
*/
|
|
|
|
#include "insight_intent_execute_param.h"
|
|
#include "hilog_tag_wrapper.h"
|
|
#include "hitrace_meter.h"
|
|
#include "int_wrapper.h"
|
|
#include "string_wrapper.h"
|
|
|
|
namespace OHOS {
|
|
namespace AppExecFwk {
|
|
using WantParams = OHOS::AAFwk::WantParams;
|
|
bool InsightIntentExecuteParam::ReadFromParcel(Parcel &parcel)
|
|
{
|
|
bundleName_ = Str16ToStr8(parcel.ReadString16());
|
|
moduleName_ = Str16ToStr8(parcel.ReadString16());
|
|
abilityName_ = Str16ToStr8(parcel.ReadString16());
|
|
insightIntentName_ = Str16ToStr8(parcel.ReadString16());
|
|
std::shared_ptr<WantParams> wantParams(parcel.ReadParcelable<WantParams>());
|
|
if (wantParams == nullptr) {
|
|
return false;
|
|
}
|
|
insightIntentParam_ = wantParams;
|
|
executeMode_ = parcel.ReadInt32();
|
|
insightIntentId_ = parcel.ReadUint64();
|
|
displayId_ = parcel.ReadInt32();
|
|
return true;
|
|
}
|
|
|
|
InsightIntentExecuteParam *InsightIntentExecuteParam::Unmarshalling(Parcel &parcel)
|
|
{
|
|
InsightIntentExecuteParam *param = new (std::nothrow) InsightIntentExecuteParam();
|
|
if (param == nullptr) {
|
|
return nullptr;
|
|
}
|
|
|
|
if (!param->ReadFromParcel(parcel)) {
|
|
delete param;
|
|
param = nullptr;
|
|
}
|
|
return param;
|
|
}
|
|
|
|
bool InsightIntentExecuteParam::Marshalling(Parcel &parcel) const
|
|
{
|
|
parcel.WriteString16(Str8ToStr16(bundleName_));
|
|
parcel.WriteString16(Str8ToStr16(moduleName_));
|
|
parcel.WriteString16(Str8ToStr16(abilityName_));
|
|
parcel.WriteString16(Str8ToStr16(insightIntentName_));
|
|
parcel.WriteParcelable(insightIntentParam_.get());
|
|
parcel.WriteInt32(executeMode_);
|
|
parcel.WriteUint64(insightIntentId_);
|
|
parcel.WriteInt32(displayId_);
|
|
return true;
|
|
}
|
|
|
|
bool InsightIntentExecuteParam::IsInsightIntentExecute(const AAFwk::Want &want)
|
|
{
|
|
if (want.HasParameter(INSIGHT_INTENT_EXECUTE_PARAM_NAME)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool InsightIntentExecuteParam::GenerateFromWant(const AAFwk::Want &want,
|
|
InsightIntentExecuteParam &executeParam)
|
|
{
|
|
const WantParams &wantParams = want.GetParams();
|
|
if (!wantParams.HasParam(INSIGHT_INTENT_EXECUTE_PARAM_NAME)) {
|
|
TAG_LOGE(AAFwkTag::INTENT, "empty want");
|
|
return false;
|
|
}
|
|
|
|
AppExecFwk::ElementName elementName = want.GetElement();
|
|
executeParam.bundleName_ = elementName.GetBundleName();
|
|
executeParam.moduleName_ = elementName.GetModuleName();
|
|
executeParam.abilityName_ = elementName.GetAbilityName();
|
|
executeParam.insightIntentName_ = wantParams.GetStringParam(INSIGHT_INTENT_EXECUTE_PARAM_NAME);
|
|
executeParam.insightIntentId_ = std::stoull(wantParams.GetStringParam(INSIGHT_INTENT_EXECUTE_PARAM_ID));
|
|
executeParam.executeMode_ = wantParams.GetIntParam(INSIGHT_INTENT_EXECUTE_PARAM_MODE, 0);
|
|
|
|
auto insightIntentParam = wantParams.GetWantParams(INSIGHT_INTENT_EXECUTE_PARAM_PARAM);
|
|
UpdateInsightIntentCallerInfo(wantParams, insightIntentParam);
|
|
executeParam.insightIntentParam_ = std::make_shared<WantParams>(insightIntentParam);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool InsightIntentExecuteParam::RemoveInsightIntent(AAFwk::Want &want)
|
|
{
|
|
HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
|
|
if (want.HasParameter(INSIGHT_INTENT_EXECUTE_PARAM_NAME)) {
|
|
want.RemoveParam(INSIGHT_INTENT_EXECUTE_PARAM_NAME);
|
|
}
|
|
if (want.HasParameter(INSIGHT_INTENT_EXECUTE_PARAM_ID)) {
|
|
want.RemoveParam(INSIGHT_INTENT_EXECUTE_PARAM_ID);
|
|
}
|
|
if (want.HasParameter(INSIGHT_INTENT_EXECUTE_PARAM_MODE)) {
|
|
want.RemoveParam(INSIGHT_INTENT_EXECUTE_PARAM_MODE);
|
|
}
|
|
if (want.HasParameter(INSIGHT_INTENT_EXECUTE_PARAM_PARAM)) {
|
|
want.RemoveParam(INSIGHT_INTENT_EXECUTE_PARAM_PARAM);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void InsightIntentExecuteParam::UpdateInsightIntentCallerInfo(const WantParams &wantParams,
|
|
WantParams &insightIntentParam)
|
|
{
|
|
insightIntentParam.Remove(AAFwk::Want::PARAM_RESV_CALLER_TOKEN);
|
|
insightIntentParam.SetParam(AAFwk::Want::PARAM_RESV_CALLER_TOKEN,
|
|
AAFwk::Integer::Box(wantParams.GetIntParam(AAFwk::Want::PARAM_RESV_CALLER_TOKEN, 0)));
|
|
|
|
insightIntentParam.Remove(AAFwk::Want::PARAM_RESV_CALLER_UID);
|
|
insightIntentParam.SetParam(AAFwk::Want::PARAM_RESV_CALLER_UID,
|
|
AAFwk::Integer::Box(wantParams.GetIntParam(AAFwk::Want::PARAM_RESV_CALLER_UID, 0)));
|
|
|
|
insightIntentParam.Remove(AAFwk::Want::PARAM_RESV_CALLER_PID);
|
|
insightIntentParam.SetParam(AAFwk::Want::PARAM_RESV_CALLER_PID,
|
|
AAFwk::Integer::Box(wantParams.GetIntParam(AAFwk::Want::PARAM_RESV_CALLER_PID, 0)));
|
|
|
|
insightIntentParam.Remove(AAFwk::Want::PARAM_RESV_CALLER_BUNDLE_NAME);
|
|
insightIntentParam.SetParam(AAFwk::Want::PARAM_RESV_CALLER_BUNDLE_NAME,
|
|
AAFwk::String::Box(wantParams.GetStringParam(AAFwk::Want::PARAM_RESV_CALLER_BUNDLE_NAME)));
|
|
}
|
|
} // namespace AppExecFwk
|
|
} // namespace OHOS
|