1f857971dSopenharmony_ci/*
2f857971dSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3f857971dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4f857971dSopenharmony_ci * you may not use this file except in compliance with the License.
5f857971dSopenharmony_ci * You may obtain a copy of the License at
6f857971dSopenharmony_ci *
7f857971dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8f857971dSopenharmony_ci *
9f857971dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10f857971dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11f857971dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f857971dSopenharmony_ci * See the License for the specific language governing permissions and
13f857971dSopenharmony_ci * limitations under the License.
14f857971dSopenharmony_ci */
15f857971dSopenharmony_ci
16f857971dSopenharmony_ci#include "drag_params.h"
17f857971dSopenharmony_ci
18f857971dSopenharmony_ci#include "devicestatus_define.h"
19f857971dSopenharmony_ci#include "drag_data_packer.h"
20f857971dSopenharmony_ci#include "preview_style_packer.h"
21f857971dSopenharmony_ci
22f857971dSopenharmony_ci#undef LOG_TAG
23f857971dSopenharmony_ci#define LOG_TAG "DragParams"
24f857971dSopenharmony_ci
25f857971dSopenharmony_cinamespace OHOS {
26f857971dSopenharmony_cinamespace Msdp {
27f857971dSopenharmony_cinamespace DeviceStatus {
28f857971dSopenharmony_ci
29f857971dSopenharmony_ciStartDragParam::StartDragParam(DragData &dragData)
30f857971dSopenharmony_ci{
31f857971dSopenharmony_ci    dragDataPtr_ = &dragData;
32f857971dSopenharmony_ci}
33f857971dSopenharmony_ci
34f857971dSopenharmony_ciStartDragParam::StartDragParam(const DragData &dragData)
35f857971dSopenharmony_ci{
36f857971dSopenharmony_ci    cDragDataPtr_ = &dragData;
37f857971dSopenharmony_ci}
38f857971dSopenharmony_ci
39f857971dSopenharmony_cibool StartDragParam::Marshalling(MessageParcel &parcel) const
40f857971dSopenharmony_ci{
41f857971dSopenharmony_ci    return (
42f857971dSopenharmony_ci        (cDragDataPtr_ != nullptr) &&
43f857971dSopenharmony_ci        (DragDataPacker::Marshalling(*cDragDataPtr_, parcel) == RET_OK)
44f857971dSopenharmony_ci    );
45f857971dSopenharmony_ci}
46f857971dSopenharmony_ci
47f857971dSopenharmony_cibool StartDragParam::Unmarshalling(MessageParcel &parcel)
48f857971dSopenharmony_ci{
49f857971dSopenharmony_ci    return (
50f857971dSopenharmony_ci        (dragDataPtr_ != nullptr) &&
51f857971dSopenharmony_ci        (DragDataPacker::UnMarshalling(parcel, *dragDataPtr_) == RET_OK)
52f857971dSopenharmony_ci    );
53f857971dSopenharmony_ci}
54f857971dSopenharmony_ci
55f857971dSopenharmony_ciStopDragParam::StopDragParam(const DragDropResult &dropResult)
56f857971dSopenharmony_ci    : dropResult_(dropResult)
57f857971dSopenharmony_ci{}
58f857971dSopenharmony_ci
59f857971dSopenharmony_cibool StopDragParam::Marshalling(MessageParcel &parcel) const
60f857971dSopenharmony_ci{
61f857971dSopenharmony_ci    return (
62f857971dSopenharmony_ci        parcel.WriteInt32(static_cast<int32_t>(dropResult_.result)) &&
63f857971dSopenharmony_ci        parcel.WriteInt32(dropResult_.mainWindow) &&
64f857971dSopenharmony_ci        parcel.WriteBool(dropResult_.hasCustomAnimation) &&
65f857971dSopenharmony_ci        parcel.WriteInt32(static_cast<int32_t>(dropResult_.dragBehavior))
66f857971dSopenharmony_ci    );
67f857971dSopenharmony_ci}
68f857971dSopenharmony_ci
69f857971dSopenharmony_cibool StopDragParam::Unmarshalling(MessageParcel &parcel)
70f857971dSopenharmony_ci{
71f857971dSopenharmony_ci    int32_t result { -1 };
72f857971dSopenharmony_ci    if (!parcel.ReadInt32(result) ||
73f857971dSopenharmony_ci        (result < static_cast<int32_t>(DragResult::DRAG_SUCCESS)) ||
74f857971dSopenharmony_ci        (result > static_cast<int32_t>(DragResult::DRAG_EXCEPTION))) {
75f857971dSopenharmony_ci        return false;
76f857971dSopenharmony_ci    }
77f857971dSopenharmony_ci    dropResult_.result = static_cast<DragResult>(result);
78f857971dSopenharmony_ci    if (!parcel.ReadInt32(dropResult_.mainWindow) || !parcel.ReadBool(dropResult_.hasCustomAnimation)) {
79f857971dSopenharmony_ci        return false;
80f857971dSopenharmony_ci    }
81f857971dSopenharmony_ci    int32_t dragBehavior { -1 };
82f857971dSopenharmony_ci    if (!parcel.ReadInt32(dragBehavior) ||
83f857971dSopenharmony_ci        (dragBehavior < static_cast<int32_t>(DragBehavior::UNKNOWN)) ||
84f857971dSopenharmony_ci        (dragBehavior > static_cast<int32_t>(DragBehavior::MOVE))) {
85f857971dSopenharmony_ci        return false;
86f857971dSopenharmony_ci    }
87f857971dSopenharmony_ci    dropResult_.dragBehavior = static_cast<DragBehavior>(dragBehavior);
88f857971dSopenharmony_ci    return true;
89f857971dSopenharmony_ci}
90f857971dSopenharmony_ci
91f857971dSopenharmony_ciSetDragWindowVisibleParam::SetDragWindowVisibleParam(bool visible, bool isForce)
92f857971dSopenharmony_ci    : visible_(visible), isForce_(isForce)
93f857971dSopenharmony_ci{}
94f857971dSopenharmony_ci
95f857971dSopenharmony_cibool SetDragWindowVisibleParam::Marshalling(MessageParcel &parcel) const
96f857971dSopenharmony_ci{
97f857971dSopenharmony_ci    return (parcel.WriteBool(visible_) &&
98f857971dSopenharmony_ci            parcel.WriteBool(isForce_));
99f857971dSopenharmony_ci}
100f857971dSopenharmony_ci
101f857971dSopenharmony_cibool SetDragWindowVisibleParam::Unmarshalling(MessageParcel &parcel)
102f857971dSopenharmony_ci{
103f857971dSopenharmony_ci    return (parcel.ReadBool(visible_) &&
104f857971dSopenharmony_ci            parcel.ReadBool(isForce_));
105f857971dSopenharmony_ci}
106f857971dSopenharmony_ci
107f857971dSopenharmony_ciUpdateDragStyleParam::UpdateDragStyleParam(DragCursorStyle style, int32_t eventId)
108f857971dSopenharmony_ci    : cursorStyle_(style), eventId_(eventId)
109f857971dSopenharmony_ci{}
110f857971dSopenharmony_ci
111f857971dSopenharmony_cibool UpdateDragStyleParam::Marshalling(MessageParcel &parcel) const
112f857971dSopenharmony_ci{
113f857971dSopenharmony_ci    return (parcel.WriteInt32(static_cast<int32_t>(cursorStyle_)) &&
114f857971dSopenharmony_ci            parcel.WriteInt32(eventId_));
115f857971dSopenharmony_ci}
116f857971dSopenharmony_ci
117f857971dSopenharmony_cibool UpdateDragStyleParam::Unmarshalling(MessageParcel &parcel)
118f857971dSopenharmony_ci{
119f857971dSopenharmony_ci    int32_t style { -1 };
120f857971dSopenharmony_ci    if (!parcel.ReadInt32(style) ||
121f857971dSopenharmony_ci        (style < static_cast<int32_t>(DragCursorStyle::DEFAULT)) ||
122f857971dSopenharmony_ci        (style > static_cast<int32_t>(DragCursorStyle::MOVE))) {
123f857971dSopenharmony_ci        return false;
124f857971dSopenharmony_ci    }
125f857971dSopenharmony_ci    cursorStyle_ = static_cast<DragCursorStyle>(style);
126f857971dSopenharmony_ci    return parcel.ReadInt32(eventId_);
127f857971dSopenharmony_ci}
128f857971dSopenharmony_ci
129f857971dSopenharmony_ciUpdateShadowPicParam::UpdateShadowPicParam(const ShadowInfo &shadowInfo)
130f857971dSopenharmony_ci    : shadowInfo_(shadowInfo)
131f857971dSopenharmony_ci{}
132f857971dSopenharmony_ci
133f857971dSopenharmony_cibool UpdateShadowPicParam::Marshalling(MessageParcel &parcel) const
134f857971dSopenharmony_ci{
135f857971dSopenharmony_ci    return (
136f857971dSopenharmony_ci        (shadowInfo_.pixelMap != nullptr) &&
137f857971dSopenharmony_ci        shadowInfo_.pixelMap->Marshalling(parcel) &&
138f857971dSopenharmony_ci        parcel.WriteInt32(shadowInfo_.x) &&
139f857971dSopenharmony_ci        parcel.WriteInt32(shadowInfo_.y)
140f857971dSopenharmony_ci    );
141f857971dSopenharmony_ci}
142f857971dSopenharmony_ci
143f857971dSopenharmony_cibool UpdateShadowPicParam::Unmarshalling(MessageParcel &parcel)
144f857971dSopenharmony_ci{
145f857971dSopenharmony_ci    shadowInfo_.pixelMap = std::shared_ptr<Media::PixelMap>(Media::PixelMap::Unmarshalling(parcel));
146f857971dSopenharmony_ci    return (
147f857971dSopenharmony_ci        (shadowInfo_.pixelMap != nullptr) &&
148f857971dSopenharmony_ci        parcel.ReadInt32(shadowInfo_.x) &&
149f857971dSopenharmony_ci        parcel.ReadInt32(shadowInfo_.y)
150f857971dSopenharmony_ci    );
151f857971dSopenharmony_ci}
152f857971dSopenharmony_ci
153f857971dSopenharmony_ciAddSelectedPixelMapParam::AddSelectedPixelMapParam(std::shared_ptr<OHOS::Media::PixelMap> pixelMap)
154f857971dSopenharmony_ci    :pixelMap_(pixelMap)
155f857971dSopenharmony_ci{}
156f857971dSopenharmony_ci
157f857971dSopenharmony_cibool AddSelectedPixelMapParam::Marshalling(MessageParcel &parcel) const
158f857971dSopenharmony_ci{
159f857971dSopenharmony_ci    return ((pixelMap_ != nullptr) && pixelMap_->Marshalling(parcel));
160f857971dSopenharmony_ci}
161f857971dSopenharmony_ci
162f857971dSopenharmony_cibool AddSelectedPixelMapParam::Unmarshalling(MessageParcel &parcel)
163f857971dSopenharmony_ci{
164f857971dSopenharmony_ci    pixelMap_ = std::shared_ptr<Media::PixelMap>(Media::PixelMap::Unmarshalling(parcel));
165f857971dSopenharmony_ci    return ((pixelMap_ != nullptr));
166f857971dSopenharmony_ci}
167f857971dSopenharmony_ci
168f857971dSopenharmony_ciGetDragTargetPidReply::GetDragTargetPidReply(int32_t pid)
169f857971dSopenharmony_ci    : targetPid_(pid)
170f857971dSopenharmony_ci{}
171f857971dSopenharmony_ci
172f857971dSopenharmony_cibool GetDragTargetPidReply::Marshalling(MessageParcel &parcel) const
173f857971dSopenharmony_ci{
174f857971dSopenharmony_ci    return parcel.WriteInt32(targetPid_);
175f857971dSopenharmony_ci}
176f857971dSopenharmony_ci
177f857971dSopenharmony_cibool GetDragTargetPidReply::Unmarshalling(MessageParcel &parcel)
178f857971dSopenharmony_ci{
179f857971dSopenharmony_ci    return parcel.ReadInt32(targetPid_);
180f857971dSopenharmony_ci}
181f857971dSopenharmony_ci
182f857971dSopenharmony_ciGetUdKeyReply::GetUdKeyReply(std::string &&udKey)
183f857971dSopenharmony_ci    : udKey_(std::move(udKey))
184f857971dSopenharmony_ci{}
185f857971dSopenharmony_ci
186f857971dSopenharmony_cibool GetUdKeyReply::Marshalling(MessageParcel &parcel) const
187f857971dSopenharmony_ci{
188f857971dSopenharmony_ci    return parcel.WriteString(udKey_);
189f857971dSopenharmony_ci}
190f857971dSopenharmony_ci
191f857971dSopenharmony_cibool GetUdKeyReply::Unmarshalling(MessageParcel &parcel)
192f857971dSopenharmony_ci{
193f857971dSopenharmony_ci    return parcel.ReadString(udKey_);
194f857971dSopenharmony_ci}
195f857971dSopenharmony_ci
196f857971dSopenharmony_ciGetShadowOffsetReply::GetShadowOffsetReply(const ShadowOffset &shadowOffset)
197f857971dSopenharmony_ci    : shadowOffset_(shadowOffset)
198f857971dSopenharmony_ci{}
199f857971dSopenharmony_ci
200f857971dSopenharmony_cibool GetShadowOffsetReply::Marshalling(MessageParcel &parcel) const
201f857971dSopenharmony_ci{
202f857971dSopenharmony_ci    return (
203f857971dSopenharmony_ci        parcel.WriteInt32(shadowOffset_.offsetX) &&
204f857971dSopenharmony_ci        parcel.WriteInt32(shadowOffset_.offsetY) &&
205f857971dSopenharmony_ci        parcel.WriteInt32(shadowOffset_.width) &&
206f857971dSopenharmony_ci        parcel.WriteInt32(shadowOffset_.height)
207f857971dSopenharmony_ci    );
208f857971dSopenharmony_ci}
209f857971dSopenharmony_ci
210f857971dSopenharmony_cibool GetShadowOffsetReply::Unmarshalling(MessageParcel &parcel)
211f857971dSopenharmony_ci{
212f857971dSopenharmony_ci    return (
213f857971dSopenharmony_ci        parcel.ReadInt32(shadowOffset_.offsetX) &&
214f857971dSopenharmony_ci        parcel.ReadInt32(shadowOffset_.offsetY) &&
215f857971dSopenharmony_ci        parcel.ReadInt32(shadowOffset_.width) &&
216f857971dSopenharmony_ci        parcel.ReadInt32(shadowOffset_.height)
217f857971dSopenharmony_ci    );
218f857971dSopenharmony_ci}
219f857971dSopenharmony_ci
220f857971dSopenharmony_ciUpdatePreviewStyleParam::UpdatePreviewStyleParam(const PreviewStyle &previewStyle)
221f857971dSopenharmony_ci    : previewStyle_(previewStyle)
222f857971dSopenharmony_ci{}
223f857971dSopenharmony_ci
224f857971dSopenharmony_cibool UpdatePreviewStyleParam::Marshalling(MessageParcel &parcel) const
225f857971dSopenharmony_ci{
226f857971dSopenharmony_ci    return (PreviewStylePacker::Marshalling(previewStyle_, parcel) == RET_OK);
227f857971dSopenharmony_ci}
228f857971dSopenharmony_ci
229f857971dSopenharmony_cibool UpdatePreviewStyleParam::Unmarshalling(MessageParcel &parcel)
230f857971dSopenharmony_ci{
231f857971dSopenharmony_ci    return (PreviewStylePacker::UnMarshalling(parcel, previewStyle_) == RET_OK);
232f857971dSopenharmony_ci}
233f857971dSopenharmony_ci
234f857971dSopenharmony_ciUpdatePreviewAnimationParam::UpdatePreviewAnimationParam(
235f857971dSopenharmony_ci    const PreviewStyle &previewStyle, const PreviewAnimation &animation)
236f857971dSopenharmony_ci    : previewStyle_(previewStyle), previewAnimation_(animation)
237f857971dSopenharmony_ci{}
238f857971dSopenharmony_ci
239f857971dSopenharmony_cibool UpdatePreviewAnimationParam::Marshalling(MessageParcel &parcel) const
240f857971dSopenharmony_ci{
241f857971dSopenharmony_ci    return (
242f857971dSopenharmony_ci        (PreviewStylePacker::Marshalling(previewStyle_, parcel) == RET_OK) &&
243f857971dSopenharmony_ci        (PreviewAnimationPacker::Marshalling(previewAnimation_, parcel) == RET_OK)
244f857971dSopenharmony_ci    );
245f857971dSopenharmony_ci}
246f857971dSopenharmony_ci
247f857971dSopenharmony_cibool UpdatePreviewAnimationParam::Unmarshalling(MessageParcel &parcel)
248f857971dSopenharmony_ci{
249f857971dSopenharmony_ci    return (
250f857971dSopenharmony_ci        (PreviewStylePacker::UnMarshalling(parcel, previewStyle_) == RET_OK) &&
251f857971dSopenharmony_ci        (PreviewAnimationPacker::UnMarshalling(parcel, previewAnimation_) == RET_OK)
252f857971dSopenharmony_ci    );
253f857971dSopenharmony_ci}
254f857971dSopenharmony_ci
255f857971dSopenharmony_ciRotateDragWindowSyncParam::RotateDragWindowSyncParam(const std::shared_ptr<Rosen::RSTransaction>& rsTransaction)
256f857971dSopenharmony_ci    : rsTransaction_(rsTransaction)
257f857971dSopenharmony_ci{}
258f857971dSopenharmony_ci
259f857971dSopenharmony_cibool RotateDragWindowSyncParam::Marshalling(MessageParcel &parcel) const
260f857971dSopenharmony_ci{
261f857971dSopenharmony_ci    if (rsTransaction_ == nullptr) {
262f857971dSopenharmony_ci        FI_HILOGE("rsTransaction_ is nullptr");
263f857971dSopenharmony_ci        return false;
264f857971dSopenharmony_ci    }
265f857971dSopenharmony_ci    if (!parcel.WriteParcelable(rsTransaction_.get())) {
266f857971dSopenharmony_ci        FI_HILOGE("Write transaction sync id failed");
267f857971dSopenharmony_ci        return false;
268f857971dSopenharmony_ci    }
269f857971dSopenharmony_ci    return true;
270f857971dSopenharmony_ci}
271f857971dSopenharmony_ci
272f857971dSopenharmony_cibool RotateDragWindowSyncParam::Unmarshalling(MessageParcel &parcel)
273f857971dSopenharmony_ci{
274f857971dSopenharmony_ci    std::shared_ptr<Rosen::RSTransaction> rsTransaction(parcel.ReadParcelable<Rosen::RSTransaction>());
275f857971dSopenharmony_ci    if (rsTransaction == nullptr) {
276f857971dSopenharmony_ci        FI_HILOGE("UnMarshalling rsTransaction failed");
277f857971dSopenharmony_ci        return false;
278f857971dSopenharmony_ci    }
279f857971dSopenharmony_ci    rsTransaction_ = rsTransaction;
280f857971dSopenharmony_ci    return true;
281f857971dSopenharmony_ci}
282f857971dSopenharmony_ci
283f857971dSopenharmony_ciSetDragWindowScreenIdParam::SetDragWindowScreenIdParam(uint64_t displayId, uint64_t screenId)
284f857971dSopenharmony_ci    : displayId_(displayId), screenId_(screenId)
285f857971dSopenharmony_ci{}
286f857971dSopenharmony_ci
287f857971dSopenharmony_cibool SetDragWindowScreenIdParam::Marshalling(MessageParcel &parcel) const
288f857971dSopenharmony_ci{
289f857971dSopenharmony_ci    return (parcel.WriteUint64(displayId_) && parcel.WriteUint64(screenId_));
290f857971dSopenharmony_ci}
291f857971dSopenharmony_ci
292f857971dSopenharmony_cibool SetDragWindowScreenIdParam::Unmarshalling(MessageParcel &parcel)
293f857971dSopenharmony_ci{
294f857971dSopenharmony_ci    return (parcel.ReadUint64(displayId_) && parcel.ReadUint64(screenId_));
295f857971dSopenharmony_ci}
296f857971dSopenharmony_ci
297f857971dSopenharmony_ciAddDraglistenerParam::AddDraglistenerParam(bool isJsCaller)
298f857971dSopenharmony_ci    : isJsCaller_(isJsCaller)
299f857971dSopenharmony_ci{}
300f857971dSopenharmony_ci
301f857971dSopenharmony_cibool AddDraglistenerParam::Marshalling(MessageParcel &parcel) const
302f857971dSopenharmony_ci{
303f857971dSopenharmony_ci    return parcel.WriteBool(isJsCaller_);
304f857971dSopenharmony_ci}
305f857971dSopenharmony_ci
306f857971dSopenharmony_cibool AddDraglistenerParam::Unmarshalling(MessageParcel &parcel)
307f857971dSopenharmony_ci{
308f857971dSopenharmony_ci    return parcel.ReadBool(isJsCaller_);
309f857971dSopenharmony_ci}
310f857971dSopenharmony_ci
311f857971dSopenharmony_ciRemoveDraglistenerParam::RemoveDraglistenerParam(bool isJsCaller)
312f857971dSopenharmony_ci    : isJsCaller_(isJsCaller)
313f857971dSopenharmony_ci{}
314f857971dSopenharmony_ci
315f857971dSopenharmony_cibool RemoveDraglistenerParam::Marshalling(MessageParcel &parcel) const
316f857971dSopenharmony_ci{
317f857971dSopenharmony_ci    return parcel.WriteBool(isJsCaller_);
318f857971dSopenharmony_ci}
319f857971dSopenharmony_ci
320f857971dSopenharmony_cibool RemoveDraglistenerParam::Unmarshalling(MessageParcel &parcel)
321f857971dSopenharmony_ci{
322f857971dSopenharmony_ci    return parcel.ReadBool(isJsCaller_);
323f857971dSopenharmony_ci}
324f857971dSopenharmony_ci
325f857971dSopenharmony_ciGetDragSummaryParam::GetDragSummaryParam(bool isJsCaller)
326f857971dSopenharmony_ci    : isJsCaller_(isJsCaller)
327f857971dSopenharmony_ci{}
328f857971dSopenharmony_ci
329f857971dSopenharmony_cibool GetDragSummaryParam::Marshalling(MessageParcel &parcel) const
330f857971dSopenharmony_ci{
331f857971dSopenharmony_ci    return parcel.WriteBool(isJsCaller_);
332f857971dSopenharmony_ci}
333f857971dSopenharmony_ci
334f857971dSopenharmony_cibool GetDragSummaryParam::Unmarshalling(MessageParcel &parcel)
335f857971dSopenharmony_ci{
336f857971dSopenharmony_ci    return parcel.ReadBool(isJsCaller_);
337f857971dSopenharmony_ci}
338f857971dSopenharmony_ci
339f857971dSopenharmony_ciGetDragSummaryReply::GetDragSummaryReply(std::map<std::string, int64_t> &&summary)
340f857971dSopenharmony_ci    : summary_(std::move(summary))
341f857971dSopenharmony_ci{}
342f857971dSopenharmony_ci
343f857971dSopenharmony_cibool GetDragSummaryReply::Marshalling(MessageParcel &parcel) const
344f857971dSopenharmony_ci{
345f857971dSopenharmony_ci    return (SummaryPacker::Marshalling(summary_, parcel) == RET_OK);
346f857971dSopenharmony_ci}
347f857971dSopenharmony_ci
348f857971dSopenharmony_cibool GetDragSummaryReply::Unmarshalling(MessageParcel &parcel)
349f857971dSopenharmony_ci{
350f857971dSopenharmony_ci    return (SummaryPacker::UnMarshalling(parcel, summary_) == RET_OK);
351f857971dSopenharmony_ci}
352f857971dSopenharmony_ci
353f857971dSopenharmony_ciGetDragStateReply::GetDragStateReply(DragState dragState)
354f857971dSopenharmony_ci    : dragState_(dragState)
355f857971dSopenharmony_ci{}
356f857971dSopenharmony_ci
357f857971dSopenharmony_cibool GetDragStateReply::Marshalling(MessageParcel &parcel) const
358f857971dSopenharmony_ci{
359f857971dSopenharmony_ci    return parcel.WriteInt32(static_cast<int32_t>(dragState_));
360f857971dSopenharmony_ci}
361f857971dSopenharmony_ci
362f857971dSopenharmony_cibool GetDragStateReply::Unmarshalling(MessageParcel &parcel)
363f857971dSopenharmony_ci{
364f857971dSopenharmony_ci    int32_t dragState { -1 };
365f857971dSopenharmony_ci    if (!parcel.ReadInt32(dragState) ||
366f857971dSopenharmony_ci        (dragState < static_cast<int32_t>(DragState::ERROR)) ||
367f857971dSopenharmony_ci        (dragState > static_cast<int32_t>(DragState::MOTION_DRAGGING))) {
368f857971dSopenharmony_ci        return false;
369f857971dSopenharmony_ci    }
370f857971dSopenharmony_ci    dragState_ = static_cast<DragState>(dragState);
371f857971dSopenharmony_ci    return true;
372f857971dSopenharmony_ci}
373f857971dSopenharmony_ci
374f857971dSopenharmony_ciGetDragActionReply::GetDragActionReply(DragAction dragAction)
375f857971dSopenharmony_ci    : dragAction_(dragAction)
376f857971dSopenharmony_ci{}
377f857971dSopenharmony_ci
378f857971dSopenharmony_cibool GetDragActionReply::Marshalling(MessageParcel &parcel) const
379f857971dSopenharmony_ci{
380f857971dSopenharmony_ci    return parcel.WriteInt32(static_cast<int32_t>(dragAction_));
381f857971dSopenharmony_ci}
382f857971dSopenharmony_ci
383f857971dSopenharmony_cibool GetDragActionReply::Unmarshalling(MessageParcel &parcel)
384f857971dSopenharmony_ci{
385f857971dSopenharmony_ci    int32_t dragAction { -1 };
386f857971dSopenharmony_ci    if (!parcel.ReadInt32(dragAction) ||
387f857971dSopenharmony_ci        (dragAction < static_cast<int32_t>(DragAction::INVALID)) ||
388f857971dSopenharmony_ci        (dragAction > static_cast<int32_t>(DragAction::COPY))) {
389f857971dSopenharmony_ci        return false;
390f857971dSopenharmony_ci    }
391f857971dSopenharmony_ci    dragAction_ = static_cast<DragAction>(dragAction);
392f857971dSopenharmony_ci    return true;
393f857971dSopenharmony_ci}
394f857971dSopenharmony_ci
395f857971dSopenharmony_ciGetExtraInfoReply::GetExtraInfoReply(std::string &&extraInfo)
396f857971dSopenharmony_ci    : extraInfo_(std::move(extraInfo))
397f857971dSopenharmony_ci{}
398f857971dSopenharmony_ci
399f857971dSopenharmony_cibool GetExtraInfoReply::Marshalling(MessageParcel &parcel) const
400f857971dSopenharmony_ci{
401f857971dSopenharmony_ci    return parcel.WriteString(extraInfo_);
402f857971dSopenharmony_ci}
403f857971dSopenharmony_ci
404f857971dSopenharmony_cibool GetExtraInfoReply::Unmarshalling(MessageParcel &parcel)
405f857971dSopenharmony_ci{
406f857971dSopenharmony_ci    return parcel.ReadString(extraInfo_);
407f857971dSopenharmony_ci}
408f857971dSopenharmony_ci} // namespace DeviceStatus
409f857971dSopenharmony_ci} // namespace Msdp
410f857971dSopenharmony_ci} // namespace OHOS