1 /* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef ACCESSIBILITY_ELEMENT_INFO_PARCEL_H 17 #define ACCESSIBILITY_ELEMENT_INFO_PARCEL_H 18 19 #include "accessibility_element_info.h" 20 #include "parcel.h" 21 22 namespace OHOS { 23 namespace Accessibility { 24 /* 25 * class define the action on Accessibility info 26 */ 27 class AccessibleActionParcel : public AccessibleAction, public Parcelable { 28 public: 29 /** 30 * @brief Construct 31 */ 32 AccessibleActionParcel() = default; 33 34 /** 35 * @brief Construct 36 * @param action The object of AccessibleAction 37 */ 38 explicit AccessibleActionParcel(const AccessibleAction &action); 39 40 /** 41 * @brief Used for IPC communication 42 * @param parcel 43 * @return true: Read parcel date successfully; otherwise is not 44 */ 45 bool ReadFromParcel(Parcel &parcel); 46 47 /** 48 * @brief Used for IPC communication 49 * @param parcel 50 */ 51 bool Marshalling(Parcel &parcel) const override; 52 53 /** 54 * @brief Used for IPC communication 55 * @param parcel 56 * @return Read AccessibleActionParcel from parcel data 57 */ 58 static sptr<AccessibleActionParcel> Unmarshalling(Parcel &parcel); 59 }; 60 61 /** 62 * @brief Define the RangInfo for progress bar 63 * @note 64 * @retval None 65 */ 66 class RangeInfoParcel : public RangeInfo, public Parcelable { 67 public: 68 /** 69 * @brief Construct 70 */ 71 RangeInfoParcel() = default; 72 73 /** 74 * @brief Construct 75 * @param rangeInfo The object of RangeInfo. 76 */ 77 explicit RangeInfoParcel(const RangeInfo &rangeInfo); 78 79 /** 80 * @brief Used for IPC communication 81 * @param parcel 82 */ 83 bool ReadFromParcel(Parcel &parcel); 84 85 /** 86 * @brief Used for IPC communication 87 * @param parcel 88 */ 89 bool Marshalling(Parcel &parcel) const override; 90 91 /** 92 * @brief Used for IPC communication 93 * @param parcel 94 */ 95 static sptr<RangeInfoParcel> Unmarshalling(Parcel &parcel); 96 }; 97 98 /** 99 * @brief Define the list/grid component 100 * @note 101 * @retval None 102 */ 103 class GridInfoParcel : public GridInfo, public Parcelable { 104 public: 105 /** 106 * @brief Construct 107 * @since 3 108 * @sysCap Accessibility 109 */ 110 GridInfoParcel() = default; 111 112 /** 113 * @brief Construct 114 * @param gridInfo The object of GridInfo. 115 * @since 3 116 * @sysCap Accessibility 117 */ 118 explicit GridInfoParcel(const GridInfo &gridInfo); 119 120 /** 121 * @brief Used for IPC communication 122 * @param parcel 123 * @since 3 124 * @sysCap Accessibility 125 */ 126 bool ReadFromParcel(Parcel &parcel); 127 128 /** 129 * @brief Used for IPC communication 130 * @param parcel 131 * @since 3 132 * @sysCap Accessibility 133 */ 134 bool Marshalling(Parcel &parcel) const override; 135 136 /** 137 * @brief Used for IPC communication 138 * @param parcel 139 * @since 3 140 * @sysCap Accessibility 141 */ 142 static sptr<GridInfoParcel> Unmarshalling(Parcel &parcel); 143 }; 144 145 class ExtraElementInfoParcel : public ExtraElementInfo, public Parcelable { 146 public: 147 /** 148 * @brief Construct 149 * @sysCap Accessibility 150 */ 151 ExtraElementInfoParcel() = default; 152 153 /** 154 * @brief Construct 155 * @param gridInfo The object of GridInfo. 156 * @sysCap Accessibility 157 */ 158 explicit ExtraElementInfoParcel(const ExtraElementInfo &extraElementInfo); 159 160 /** 161 * @brief Used for IPC communication 162 * @param parcel 163 * @sysCap Accessibility 164 */ 165 bool ReadFromParcel(Parcel &parcel); 166 167 /** 168 * @brief Used for IPC communication 169 * @param parcel 170 * @sysCap Accessibility 171 */ 172 virtual bool Marshalling(Parcel &parcel) const override; 173 174 /** 175 * @brief Used for IPC communication 176 * @param parcel 177 * @sysCap Accessibility 178 */ 179 static sptr<ExtraElementInfoParcel> Unmarshalling(Parcel &parcel); 180 }; 181 182 class GridItemInfoParcel : public GridItemInfo, public Parcelable { 183 public: 184 /** 185 * @brief Construct 186 * @since 3 187 * @sysCap Accessibility 188 */ 189 GridItemInfoParcel() = default; 190 191 /** 192 * @brief Construct 193 * @param itemInfo The object of GridItemInfo. 194 * @since 3 195 * @sysCap Accessibility 196 */ 197 explicit GridItemInfoParcel(const GridItemInfo &itemInfo); 198 199 /** 200 * @brief Used for IPC communication 201 * @param parcel 202 * @since 3 203 * @sysCap Accessibility 204 */ 205 bool ReadFromParcel(Parcel &parcel); 206 207 /** 208 * @brief Used for IPC communication 209 * @param parcel 210 * @since 3 211 * @sysCap Accessibility 212 */ 213 bool Marshalling(Parcel &parcel) const override; 214 215 /** 216 * @brief Used for IPC communication 217 * @param parcel 218 * @since 3 219 * @sysCap Accessibility 220 */ 221 static sptr<GridItemInfoParcel> Unmarshalling(Parcel &parcel); 222 }; 223 224 class RectParcel : public Rect, public Parcelable { 225 public: 226 /** 227 * @brief Construct 228 * @since 3 229 * @sysCap Accessibility 230 */ 231 RectParcel() = default; 232 233 /** 234 * @brief Construct 235 * @param rect The object of Rect. 236 * @since 3 237 * @sysCap Accessibility 238 */ 239 explicit RectParcel(const Rect &rect); 240 241 /** 242 * @brief Used for IPC communication 243 * @param parcel 244 * @since 3 245 * @sysCap Accessibility 246 */ 247 bool ReadFromParcel(Parcel &parcel); 248 249 /** 250 * @brief Used for IPC communication 251 * @param parcel 252 * @since 3 253 * @sysCap Accessibility 254 */ 255 bool Marshalling(Parcel &parcel) const override; 256 257 /** 258 * @brief Used for IPC communication 259 * @param parcel 260 * @since 3 261 * @sysCap Accessibility 262 */ 263 static sptr<RectParcel> Unmarshalling(Parcel &parcel); 264 }; 265 266 /* 267 * class define the span info 268 */ 269 class SpanInfoParcel : public SpanInfo, public Parcelable { 270 public: 271 /** 272 * @brief Construct 273 */ 274 SpanInfoParcel() = default; 275 276 /** 277 * @brief Construct 278 * @param rangeInfo The object of SpanInfo. 279 */ 280 explicit SpanInfoParcel(const SpanInfo &spanInfo); 281 282 /** 283 * @brief Used for IPC communication 284 * @param parcel 285 */ 286 bool ReadFromParcel(Parcel &parcel); 287 288 /** 289 * @brief Used for IPC communication 290 * @param parcel 291 */ 292 virtual bool Marshalling(Parcel &parcel) const override; 293 294 /** 295 * @brief Used for IPC communication 296 * @param parcel 297 */ 298 static sptr<SpanInfoParcel> Unmarshalling(Parcel &parcel); 299 }; 300 301 /* 302 * The class supply the api to set/get ui component property 303 */ 304 class AccessibilityElementInfoParcel : public AccessibilityElementInfo, public Parcelable { 305 public: 306 /** 307 * @brief Construct 308 * @since 3 309 * @sysCap Accessibility 310 */ 311 AccessibilityElementInfoParcel() = default; 312 313 /** 314 * @brief Construct 315 * @param elementInfo The object of AccessibilityElementInfo. 316 * @since 3 317 * @sysCap Accessibility 318 */ 319 explicit AccessibilityElementInfoParcel(const AccessibilityElementInfo &elementInfo); 320 321 /** 322 * @brief Used for IPC communication 323 * @param parcel 324 * @return true: Read parcel data successfully; ohterwise is not. 325 * @since 3 326 * @sysCap Accessibility 327 */ 328 bool ReadFromParcel(Parcel &parcel); 329 330 /** 331 * @brief Used for IPC communication 332 * @param parcel 333 * @return true: Write parcel data successfully; ohterwise is not. 334 * @since 3 335 * @sysCap Accessibility 336 */ 337 bool Marshalling(Parcel &parcel) const override; 338 339 /** 340 * @brief Used for IPC communication 341 * @param parcel 342 * @return Read AccessibilityElementInfoParcel from parcel data 343 * @since 3 344 * @sysCap Accessibility 345 */ 346 static sptr<AccessibilityElementInfoParcel> Unmarshalling(Parcel &parcel); 347 348 private: 349 /** 350 * @brief Used for IPC communication first part 351 * @param parcel 352 * @sysCap Accessibility 353 */ 354 bool ReadFromParcelFirstPart(Parcel &parcel); 355 356 /** 357 * @brief Used for IPC communication second part 358 * @param parcel 359 * @sysCap Accessibility 360 */ 361 bool ReadFromParcelSecondPart(Parcel &parcel); 362 363 /** 364 * @brief Used for IPC communication third part 365 * @param parcel 366 * @sysCap Accessibility 367 */ 368 bool ReadFromParcelThirdPart(Parcel &parcel); 369 370 /** 371 * @brief Used for IPC communication fourth part 372 * @param parcel 373 * @sysCap Accessibility 374 */ 375 bool ReadFromParcelFourthPart(Parcel &parcel); 376 377 /** 378 * @brief Used for IPC communication first part 379 * @param parcel 380 * @sysCap Accessibility 381 */ 382 bool MarshallingFirstPart(Parcel &parcel) const; 383 384 /** 385 * @brief Used for IPC communication second part 386 * @param parcel 387 * @sysCap Accessibility 388 */ 389 bool MarshallingSecondPart(Parcel &parcel) const; 390 391 /** 392 * @brief Used for IPC communication second part 393 * @param parcel 394 * @sysCap Accessibility 395 */ 396 bool MarshallingThirdPart(Parcel &parcel) const; 397 }; 398 } // namespace Accessibility 399 } // namespace OHOS 400 #endif