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#ifndef DRAG_PARAMS_H 17c29fa5a6Sopenharmony_ci#define DRAG_PARAMS_H 18c29fa5a6Sopenharmony_ci 19c29fa5a6Sopenharmony_ci#include <memory> 20c29fa5a6Sopenharmony_ci 21c29fa5a6Sopenharmony_ci#include "transaction/rs_transaction.h" 22c29fa5a6Sopenharmony_ci 23c29fa5a6Sopenharmony_ci#include "default_params.h" 24c29fa5a6Sopenharmony_ci#include "drag_data.h" 25c29fa5a6Sopenharmony_ci#include "intention_identity.h" 26c29fa5a6Sopenharmony_ci 27c29fa5a6Sopenharmony_cinamespace OHOS { 28c29fa5a6Sopenharmony_cinamespace Msdp { 29c29fa5a6Sopenharmony_cinamespace DeviceStatus { 30c29fa5a6Sopenharmony_cienum DragRequestID : uint32_t { 31c29fa5a6Sopenharmony_ci UNKNOWN_DRAG_ACTION, 32c29fa5a6Sopenharmony_ci ADD_DRAG_LISTENER, 33c29fa5a6Sopenharmony_ci REMOVE_DRAG_LISTENER, 34c29fa5a6Sopenharmony_ci ADD_SUBSCRIPT_LISTENER, 35c29fa5a6Sopenharmony_ci REMOVE_SUBSCRIPT_LISTENER, 36c29fa5a6Sopenharmony_ci SET_DRAG_WINDOW_VISIBLE, 37c29fa5a6Sopenharmony_ci UPDATE_DRAG_STYLE, 38c29fa5a6Sopenharmony_ci UPDATE_SHADOW_PIC, 39c29fa5a6Sopenharmony_ci GET_DRAG_TARGET_PID, 40c29fa5a6Sopenharmony_ci GET_UDKEY, 41c29fa5a6Sopenharmony_ci GET_SHADOW_OFFSET, 42c29fa5a6Sopenharmony_ci GET_DRAG_DATA, 43c29fa5a6Sopenharmony_ci UPDATE_PREVIEW_STYLE, 44c29fa5a6Sopenharmony_ci UPDATE_PREVIEW_STYLE_WITH_ANIMATION, 45c29fa5a6Sopenharmony_ci ROTATE_DRAG_WINDOW_SYNC, 46c29fa5a6Sopenharmony_ci GET_DRAG_SUMMARY, 47c29fa5a6Sopenharmony_ci GET_DRAG_STATE, 48c29fa5a6Sopenharmony_ci ADD_PRIVILEGE, 49c29fa5a6Sopenharmony_ci ENTER_TEXT_EDITOR_AREA, 50c29fa5a6Sopenharmony_ci GET_DRAG_ACTION, 51c29fa5a6Sopenharmony_ci GET_EXTRA_INFO, 52c29fa5a6Sopenharmony_ci ERASE_MOUSE_ICON, 53c29fa5a6Sopenharmony_ci SET_DRAG_WINDOW_SCREEN_ID, 54c29fa5a6Sopenharmony_ci ADD_SELECTED_PIXELMAP, 55c29fa5a6Sopenharmony_ci}; 56c29fa5a6Sopenharmony_ci 57c29fa5a6Sopenharmony_cistruct StartDragParam final : public ParamBase { 58c29fa5a6Sopenharmony_ci explicit StartDragParam(DragData &dragData); 59c29fa5a6Sopenharmony_ci explicit StartDragParam(const DragData &dragData); 60c29fa5a6Sopenharmony_ci 61c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 62c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 63c29fa5a6Sopenharmony_ci 64c29fa5a6Sopenharmony_ci // For efficiency, we want to avoid copying 'DragData' whenever possible. 65c29fa5a6Sopenharmony_ci // Considering the 'Start drag' scenario, we use 'StartDragParam' simply 66c29fa5a6Sopenharmony_ci // as wrapper of 'DragData' and serialize 'DragData' in the right same 67c29fa5a6Sopenharmony_ci // call. We do not dereference 'DragData' or keep a reference to it for 68c29fa5a6Sopenharmony_ci // later use. In this case, we can safely keep a pointer to the input 'DragData'. 69c29fa5a6Sopenharmony_ci DragData *dragDataPtr_ { nullptr }; 70c29fa5a6Sopenharmony_ci const DragData *cDragDataPtr_ { nullptr }; 71c29fa5a6Sopenharmony_ci}; 72c29fa5a6Sopenharmony_ci 73c29fa5a6Sopenharmony_cistruct StopDragParam final : public ParamBase { 74c29fa5a6Sopenharmony_ci StopDragParam() = default; 75c29fa5a6Sopenharmony_ci explicit StopDragParam(const DragDropResult &dropResult); 76c29fa5a6Sopenharmony_ci 77c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 78c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 79c29fa5a6Sopenharmony_ci 80c29fa5a6Sopenharmony_ci DragDropResult dropResult_ {}; 81c29fa5a6Sopenharmony_ci}; 82c29fa5a6Sopenharmony_ci 83c29fa5a6Sopenharmony_cistruct SetDragWindowVisibleParam final : public ParamBase { 84c29fa5a6Sopenharmony_ci SetDragWindowVisibleParam() = default; 85c29fa5a6Sopenharmony_ci SetDragWindowVisibleParam(bool visible, bool isForce); 86c29fa5a6Sopenharmony_ci 87c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 88c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 89c29fa5a6Sopenharmony_ci 90c29fa5a6Sopenharmony_ci bool visible_ { false }; 91c29fa5a6Sopenharmony_ci bool isForce_ { false }; 92c29fa5a6Sopenharmony_ci}; 93c29fa5a6Sopenharmony_ci 94c29fa5a6Sopenharmony_cistruct UpdateDragStyleParam final : public ParamBase { 95c29fa5a6Sopenharmony_ci UpdateDragStyleParam() = default; 96c29fa5a6Sopenharmony_ci explicit UpdateDragStyleParam(DragCursorStyle style); 97c29fa5a6Sopenharmony_ci 98c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 99c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 100c29fa5a6Sopenharmony_ci 101c29fa5a6Sopenharmony_ci DragCursorStyle cursorStyle_ { DragCursorStyle::DEFAULT }; 102c29fa5a6Sopenharmony_ci}; 103c29fa5a6Sopenharmony_ci 104c29fa5a6Sopenharmony_cistruct UpdateShadowPicParam final : public ParamBase { 105c29fa5a6Sopenharmony_ci UpdateShadowPicParam() = default; 106c29fa5a6Sopenharmony_ci explicit UpdateShadowPicParam(const ShadowInfo &shadowInfo); 107c29fa5a6Sopenharmony_ci 108c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 109c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 110c29fa5a6Sopenharmony_ci 111c29fa5a6Sopenharmony_ci ShadowInfo shadowInfo_ {}; 112c29fa5a6Sopenharmony_ci}; 113c29fa5a6Sopenharmony_ci 114c29fa5a6Sopenharmony_cistruct GetDragTargetPidReply : public ParamBase { 115c29fa5a6Sopenharmony_ci GetDragTargetPidReply() = default; 116c29fa5a6Sopenharmony_ci explicit GetDragTargetPidReply(int32_t pid); 117c29fa5a6Sopenharmony_ci 118c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 119c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 120c29fa5a6Sopenharmony_ci 121c29fa5a6Sopenharmony_ci int32_t targetPid_ { -1 }; 122c29fa5a6Sopenharmony_ci}; 123c29fa5a6Sopenharmony_ci 124c29fa5a6Sopenharmony_cistruct GetUdKeyReply final : public ParamBase { 125c29fa5a6Sopenharmony_ci GetUdKeyReply() = default; 126c29fa5a6Sopenharmony_ci explicit GetUdKeyReply(std::string &&udKey); 127c29fa5a6Sopenharmony_ci 128c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 129c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 130c29fa5a6Sopenharmony_ci 131c29fa5a6Sopenharmony_ci std::string udKey_; 132c29fa5a6Sopenharmony_ci}; 133c29fa5a6Sopenharmony_ci 134c29fa5a6Sopenharmony_cistruct GetShadowOffsetReply final : public ParamBase { 135c29fa5a6Sopenharmony_ci GetShadowOffsetReply() = default; 136c29fa5a6Sopenharmony_ci explicit GetShadowOffsetReply(const ShadowOffset &shadowOffset); 137c29fa5a6Sopenharmony_ci 138c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 139c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 140c29fa5a6Sopenharmony_ci 141c29fa5a6Sopenharmony_ci ShadowOffset shadowOffset_ {}; 142c29fa5a6Sopenharmony_ci}; 143c29fa5a6Sopenharmony_ci 144c29fa5a6Sopenharmony_ciusing GetDragDataReply = StartDragParam; 145c29fa5a6Sopenharmony_ci 146c29fa5a6Sopenharmony_cistruct UpdatePreviewStyleParam final : public ParamBase { 147c29fa5a6Sopenharmony_ci UpdatePreviewStyleParam() = default; 148c29fa5a6Sopenharmony_ci explicit UpdatePreviewStyleParam(const PreviewStyle &previewStyle); 149c29fa5a6Sopenharmony_ci 150c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 151c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 152c29fa5a6Sopenharmony_ci 153c29fa5a6Sopenharmony_ci PreviewStyle previewStyle_; 154c29fa5a6Sopenharmony_ci}; 155c29fa5a6Sopenharmony_ci 156c29fa5a6Sopenharmony_cistruct UpdatePreviewAnimationParam final : public ParamBase { 157c29fa5a6Sopenharmony_ci UpdatePreviewAnimationParam() = default; 158c29fa5a6Sopenharmony_ci UpdatePreviewAnimationParam(const PreviewStyle &previewStyle, const PreviewAnimation &animation); 159c29fa5a6Sopenharmony_ci 160c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 161c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 162c29fa5a6Sopenharmony_ci 163c29fa5a6Sopenharmony_ci PreviewStyle previewStyle_ {}; 164c29fa5a6Sopenharmony_ci PreviewAnimation previewAnimation_ {}; 165c29fa5a6Sopenharmony_ci}; 166c29fa5a6Sopenharmony_ci 167c29fa5a6Sopenharmony_cistruct RotateDragWindowSyncParam final : public ParamBase { 168c29fa5a6Sopenharmony_ci RotateDragWindowSyncParam() = default; 169c29fa5a6Sopenharmony_ci explicit RotateDragWindowSyncParam(const std::shared_ptr<Rosen::RSTransaction>& rsTransaction); 170c29fa5a6Sopenharmony_ci 171c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 172c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 173c29fa5a6Sopenharmony_ci 174c29fa5a6Sopenharmony_ci std::shared_ptr<Rosen::RSTransaction> rsTransaction_ { nullptr }; 175c29fa5a6Sopenharmony_ci}; 176c29fa5a6Sopenharmony_ci 177c29fa5a6Sopenharmony_cistruct SetDragWindowScreenIdParam final : public ParamBase { 178c29fa5a6Sopenharmony_ci SetDragWindowScreenIdParam() = default; 179c29fa5a6Sopenharmony_ci SetDragWindowScreenIdParam(uint64_t displayId, uint64_t screenId); 180c29fa5a6Sopenharmony_ci 181c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 182c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 183c29fa5a6Sopenharmony_ci 184c29fa5a6Sopenharmony_ci uint64_t displayId_ { 0 }; 185c29fa5a6Sopenharmony_ci uint64_t screenId_ { 0 }; 186c29fa5a6Sopenharmony_ci}; 187c29fa5a6Sopenharmony_ci 188c29fa5a6Sopenharmony_cistruct GetDragSummaryReply final : public ParamBase { 189c29fa5a6Sopenharmony_ci GetDragSummaryReply() = default; 190c29fa5a6Sopenharmony_ci explicit GetDragSummaryReply(std::map<std::string, int64_t> &&summary); 191c29fa5a6Sopenharmony_ci 192c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 193c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 194c29fa5a6Sopenharmony_ci 195c29fa5a6Sopenharmony_ci std::map<std::string, int64_t> summary_; 196c29fa5a6Sopenharmony_ci}; 197c29fa5a6Sopenharmony_ci 198c29fa5a6Sopenharmony_cistruct GetDragStateReply final : public ParamBase { 199c29fa5a6Sopenharmony_ci GetDragStateReply() = default; 200c29fa5a6Sopenharmony_ci explicit GetDragStateReply(DragState dragState); 201c29fa5a6Sopenharmony_ci 202c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 203c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 204c29fa5a6Sopenharmony_ci 205c29fa5a6Sopenharmony_ci DragState dragState_ { DragState::ERROR }; 206c29fa5a6Sopenharmony_ci}; 207c29fa5a6Sopenharmony_ci 208c29fa5a6Sopenharmony_ciusing EnterTextEditorAreaParam = BooleanReply; 209c29fa5a6Sopenharmony_ci 210c29fa5a6Sopenharmony_cistruct GetDragActionReply final : public ParamBase { 211c29fa5a6Sopenharmony_ci GetDragActionReply() = default; 212c29fa5a6Sopenharmony_ci explicit GetDragActionReply(DragAction dragAction); 213c29fa5a6Sopenharmony_ci 214c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 215c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 216c29fa5a6Sopenharmony_ci 217c29fa5a6Sopenharmony_ci DragAction dragAction_ { DragAction::INVALID }; 218c29fa5a6Sopenharmony_ci}; 219c29fa5a6Sopenharmony_ci 220c29fa5a6Sopenharmony_cistruct GetExtraInfoReply final : public ParamBase { 221c29fa5a6Sopenharmony_ci GetExtraInfoReply() = default; 222c29fa5a6Sopenharmony_ci explicit GetExtraInfoReply(std::string &&extraInfo); 223c29fa5a6Sopenharmony_ci 224c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 225c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 226c29fa5a6Sopenharmony_ci 227c29fa5a6Sopenharmony_ci std::string extraInfo_; 228c29fa5a6Sopenharmony_ci}; 229c29fa5a6Sopenharmony_ci 230c29fa5a6Sopenharmony_cistruct AddSelectedPixelMapParam final : public ParamBase { 231c29fa5a6Sopenharmony_ci AddSelectedPixelMapParam() = default; 232c29fa5a6Sopenharmony_ci explicit AddSelectedPixelMapParam(std::shared_ptr<OHOS::Media::PixelMap> pixelMap); 233c29fa5a6Sopenharmony_ci 234c29fa5a6Sopenharmony_ci bool Marshalling(MessageParcel &parcel) const override; 235c29fa5a6Sopenharmony_ci bool Unmarshalling(MessageParcel &parcel) override; 236c29fa5a6Sopenharmony_ci 237c29fa5a6Sopenharmony_ci std::shared_ptr<OHOS::Media::PixelMap> pixelMap_ { nullptr }; 238c29fa5a6Sopenharmony_ci}; 239c29fa5a6Sopenharmony_ci} // namespace DeviceStatus 240c29fa5a6Sopenharmony_ci} // namespace Msdp 241c29fa5a6Sopenharmony_ci} // namespace OHOS 242c29fa5a6Sopenharmony_ci#endif // DRAG_PARAMS_H 243