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