1  /*
2   * Copyright (c) 2023 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  #include "common/include/window_session_property.h"
17  #include "window_manager_hilog.h"
18  #include "wm_common.h"
19  #include "window_helper.h"
20  
21  namespace OHOS {
22  namespace Rosen {
23  namespace {
24  constexpr uint32_t TOUCH_HOT_AREA_MAX_NUM = 50;
25  constexpr uint32_t MAX_SIZE_PIP_CONTROL_GROUP = 8;
26  constexpr uint32_t MAX_SIZE_PIP_CONTROL = 9;
27  }
28  
29  const std::map<uint32_t, HandlWritePropertyFunc> WindowSessionProperty::writeFuncMap_ {
30      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON),
31          &WindowSessionProperty::WriteActionUpdateTurnScreenOn),
32      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON),
33          &WindowSessionProperty::WriteActionUpdateKeepScreenOn),
34      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_FOCUSABLE),
35          &WindowSessionProperty::WriteActionUpdateFocusable),
36      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TOUCHABLE),
37          &WindowSessionProperty::WriteActionUpdateTouchable),
38      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS),
39          &WindowSessionProperty::WriteActionUpdateSetBrightness),
40      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_ORIENTATION),
41          &WindowSessionProperty::WriteActionUpdateOrientation),
42      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_PRIVACY_MODE),
43          &WindowSessionProperty::WriteActionUpdatePrivacyMode),
44      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_SYSTEM_PRIVACY_MODE),
45          &WindowSessionProperty::WriteActionUpdatePrivacyMode),
46      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_SNAPSHOT_SKIP),
47          &WindowSessionProperty::WriteActionUpdateSnapshotSkip),
48      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MAXIMIZE_STATE),
49          &WindowSessionProperty::WriteActionUpdateMaximizeState),
50      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_OTHER_PROPS),
51          &WindowSessionProperty::WriteActionUpdateSystemBar),
52      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_STATUS_PROPS),
53          &WindowSessionProperty::WriteActionUpdateSystemBar),
54      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_NAVIGATION_PROPS),
55          &WindowSessionProperty::WriteActionUpdateSystemBar),
56      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_NAVIGATION_INDICATOR_PROPS),
57          &WindowSessionProperty::WriteActionUpdateSystemBar),
58      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_FLAGS),
59          &WindowSessionProperty::WriteActionUpdateFlags),
60      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MODE),
61          &WindowSessionProperty::WriteActionUpdateMode),
62      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG),
63          &WindowSessionProperty::WriteActionUpdateAnimationFlag),
64      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA),
65          &WindowSessionProperty::WriteActionUpdateTouchHotArea),
66      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_DECOR_ENABLE),
67          &WindowSessionProperty::WriteActionUpdateDecorEnable),
68      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_WINDOW_LIMITS),
69          &WindowSessionProperty::WriteActionUpdateWindowLimits),
70      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_DRAGENABLED),
71          &WindowSessionProperty::WriteActionUpdateDragenabled),
72      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_RAISEENABLED),
73          &WindowSessionProperty::WriteActionUpdateRaiseenabled),
74      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_HIDE_NON_SYSTEM_FLOATING_WINDOWS),
75          &WindowSessionProperty::WriteActionUpdateHideNonSystemFloatingWindows),
76      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TEXTFIELD_AVOID_INFO),
77          &WindowSessionProperty::WriteActionUpdateTextfieldAvoidInfo),
78      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_WINDOW_MASK),
79          &WindowSessionProperty::WriteActionUpdateWindowMask),
80      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TOPMOST),
81          &WindowSessionProperty::WriteActionUpdateTopmost),
82      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO),
83          &WindowSessionProperty::WriteActionUpdateWindowModeSupportType),
84      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MAIN_WINDOW_TOPMOST),
85          &WindowSessionProperty::WriteActionUpdateMainWindowTopmost),
86  };
87  
88  const std::map<uint32_t, HandlReadPropertyFunc> WindowSessionProperty::readFuncMap_ {
89      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON),
90          &WindowSessionProperty::ReadActionUpdateTurnScreenOn),
91      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON),
92          &WindowSessionProperty::ReadActionUpdateKeepScreenOn),
93      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_FOCUSABLE),
94          &WindowSessionProperty::ReadActionUpdateFocusable),
95      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TOUCHABLE),
96          &WindowSessionProperty::ReadActionUpdateTouchable),
97      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS),
98          &WindowSessionProperty::ReadActionUpdateSetBrightness),
99      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_ORIENTATION),
100          &WindowSessionProperty::ReadActionUpdateOrientation),
101      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_PRIVACY_MODE),
102          &WindowSessionProperty::ReadActionUpdatePrivacyMode),
103      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_SYSTEM_PRIVACY_MODE),
104          &WindowSessionProperty::ReadActionUpdatePrivacyMode),
105      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_SNAPSHOT_SKIP),
106          &WindowSessionProperty::ReadActionUpdateSnapshotSkip),
107      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MAXIMIZE_STATE),
108          &WindowSessionProperty::ReadActionUpdateMaximizeState),
109      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_OTHER_PROPS),
110          &WindowSessionProperty::ReadActionUpdateSystemBar),
111      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_STATUS_PROPS),
112          &WindowSessionProperty::ReadActionUpdateSystemBar),
113      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_NAVIGATION_PROPS),
114          &WindowSessionProperty::ReadActionUpdateSystemBar),
115      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_NAVIGATION_INDICATOR_PROPS),
116          &WindowSessionProperty::ReadActionUpdateSystemBar),
117      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_FLAGS),
118          &WindowSessionProperty::ReadActionUpdateFlags),
119      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MODE),
120          &WindowSessionProperty::ReadActionUpdateMode),
121      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG),
122          &WindowSessionProperty::ReadActionUpdateAnimationFlag),
123      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA),
124          &WindowSessionProperty::ReadActionUpdateTouchHotArea),
125      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_DECOR_ENABLE),
126          &WindowSessionProperty::ReadActionUpdateDecorEnable),
127      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_WINDOW_LIMITS),
128          &WindowSessionProperty::ReadActionUpdateWindowLimits),
129      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_DRAGENABLED),
130          &WindowSessionProperty::ReadActionUpdateDragenabled),
131      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_RAISEENABLED),
132          &WindowSessionProperty::ReadActionUpdateRaiseenabled),
133      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_HIDE_NON_SYSTEM_FLOATING_WINDOWS),
134          &WindowSessionProperty::ReadActionUpdateHideNonSystemFloatingWindows),
135      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TEXTFIELD_AVOID_INFO),
136          &WindowSessionProperty::ReadActionUpdateTextfieldAvoidInfo),
137      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_WINDOW_MASK),
138          &WindowSessionProperty::ReadActionUpdateWindowMask),
139      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_TOPMOST),
140          &WindowSessionProperty::ReadActionUpdateTopmost),
141      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO),
142          &WindowSessionProperty::ReadActionUpdateWindowModeSupportType),
143      std::make_pair(static_cast<uint32_t>(WSPropertyChangeAction::ACTION_UPDATE_MAIN_WINDOW_TOPMOST),
144          &WindowSessionProperty::ReadActionUpdateMainWindowTopmost),
145  };
146  
WindowSessionProperty(const sptr<WindowSessionProperty> & property)147  WindowSessionProperty::WindowSessionProperty(const sptr<WindowSessionProperty>& property)
148  {
149      CopyFrom(property);
150  }
151  
SetWindowName(const std::string & name)152  void WindowSessionProperty::SetWindowName(const std::string& name)
153  {
154      windowName_ = name;
155  }
156  
SetSessionInfo(const SessionInfo & info)157  void WindowSessionProperty::SetSessionInfo(const SessionInfo& info)
158  {
159      sessionInfo_ = info;
160  }
161  
SetWindowRect(const struct Rect & rect)162  void WindowSessionProperty::SetWindowRect(const struct Rect& rect)
163  {
164      std::lock_guard<std::mutex> lock(windowRectMutex_);
165      windowRect_ = rect;
166  }
167  
SetRequestRect(const Rect & requestRect)168  void WindowSessionProperty::SetRequestRect(const Rect& requestRect)
169  {
170      std::lock_guard<std::mutex> lock(requestRectMutex_);
171      requestRect_ = requestRect;
172  }
173  
SetWindowType(WindowType type)174  void WindowSessionProperty::SetWindowType(WindowType type)
175  {
176      type_ = type;
177  }
178  
SetFocusable(bool isFocusable)179  void WindowSessionProperty::SetFocusable(bool isFocusable)
180  {
181      focusable_ = isFocusable;
182  }
183  
SetFocusableOnShow(bool isFocusableOnShow)184  void WindowSessionProperty::SetFocusableOnShow(bool isFocusableOnShow)
185  {
186      focusableOnShow_ = isFocusableOnShow;
187  }
188  
SetTouchable(bool isTouchable)189  void WindowSessionProperty::SetTouchable(bool isTouchable)
190  {
191      touchable_ = isTouchable;
192  }
193  
SetDragEnabled(bool dragEnabled)194  void WindowSessionProperty::SetDragEnabled(bool dragEnabled)
195  {
196      dragEnabled_ = dragEnabled;
197  }
198  
SetHideNonSystemFloatingWindows(bool hide)199  void WindowSessionProperty::SetHideNonSystemFloatingWindows(bool hide)
200  {
201      hideNonSystemFloatingWindows_ = hide;
202  }
203  
SetForceHide(bool hide)204  void WindowSessionProperty::SetForceHide(bool hide)
205  {
206      forceHide_ = hide;
207  }
208  
SetRaiseEnabled(bool raiseEnabled)209  void WindowSessionProperty::SetRaiseEnabled(bool raiseEnabled)
210  {
211      raiseEnabled_ = raiseEnabled;
212  }
213  
SetRequestedOrientation(Orientation orientation)214  void WindowSessionProperty::SetRequestedOrientation(Orientation orientation)
215  {
216      requestedOrientation_ = orientation;
217  }
218  
SetDefaultRequestedOrientation(Orientation orientation)219  void WindowSessionProperty::SetDefaultRequestedOrientation(Orientation orientation)
220  {
221      defaultRequestedOrientation_ = orientation;
222  }
223  
SetPrivacyMode(bool isPrivate)224  void WindowSessionProperty::SetPrivacyMode(bool isPrivate)
225  {
226      isPrivacyMode_ = isPrivate;
227  }
228  
SetSystemPrivacyMode(bool isSystemPrivate)229  void WindowSessionProperty::SetSystemPrivacyMode(bool isSystemPrivate)
230  {
231      isSystemPrivacyMode_ = isSystemPrivate;
232  }
233  
SetSnapshotSkip(bool isSkip)234  void WindowSessionProperty::SetSnapshotSkip(bool isSkip)
235  {
236      isSnapshotSkip_ = isSkip;
237  }
238  
SetBrightness(float brightness)239  void WindowSessionProperty::SetBrightness(float brightness)
240  {
241      brightness_ = brightness;
242  }
243  
SetSystemCalling(bool isSystemCalling)244  void WindowSessionProperty::SetSystemCalling(bool isSystemCalling)
245  {
246      isSystemCalling_ = isSystemCalling;
247  }
248  
SetDisplayId(DisplayId displayId)249  void WindowSessionProperty::SetDisplayId(DisplayId displayId)
250  {
251      displayId_ = displayId;
252  }
253  
SetFloatingWindowAppType(bool isAppType)254  void WindowSessionProperty::SetFloatingWindowAppType(bool isAppType)
255  {
256      isFloatingWindowAppType_ = isAppType;
257  }
258  
GetWindowName() const259  const std::string& WindowSessionProperty::GetWindowName() const
260  {
261      return windowName_;
262  }
263  
GetSessionInfo() const264  const SessionInfo& WindowSessionProperty::GetSessionInfo() const
265  {
266      return sessionInfo_;
267  }
268  
EditSessionInfo()269  SessionInfo& WindowSessionProperty::EditSessionInfo()
270  {
271      return sessionInfo_;
272  }
273  
GetWindowRect() const274  Rect WindowSessionProperty::GetWindowRect() const
275  {
276      std::lock_guard<std::mutex> lock(windowRectMutex_);
277      return windowRect_;
278  }
279  
GetRequestRect() const280  Rect WindowSessionProperty::GetRequestRect() const
281  {
282      std::lock_guard<std::mutex> lock(requestRectMutex_);
283      return requestRect_;
284  }
285  
GetWindowType() const286  WindowType WindowSessionProperty::GetWindowType() const
287  {
288      return type_;
289  }
290  
GetFocusable() const291  bool WindowSessionProperty::GetFocusable() const
292  {
293      return focusable_;
294  }
295  
GetFocusableOnShow() const296  bool WindowSessionProperty::GetFocusableOnShow() const
297  {
298      return focusableOnShow_;
299  }
300  
GetTouchable() const301  bool WindowSessionProperty::GetTouchable() const
302  {
303      return touchable_;
304  }
305  
GetDragEnabled() const306  bool WindowSessionProperty::GetDragEnabled() const
307  {
308      return dragEnabled_;
309  }
310  
GetHideNonSystemFloatingWindows() const311  bool WindowSessionProperty::GetHideNonSystemFloatingWindows() const
312  {
313      return hideNonSystemFloatingWindows_;
314  }
315  
GetForceHide() const316  bool WindowSessionProperty::GetForceHide() const
317  {
318      return forceHide_;
319  }
320  
GetRaiseEnabled() const321  bool WindowSessionProperty::GetRaiseEnabled() const
322  {
323      return raiseEnabled_;
324  }
325  
GetRequestedOrientation() const326  Orientation WindowSessionProperty::GetRequestedOrientation() const
327  {
328      return requestedOrientation_;
329  }
330  
GetDefaultRequestedOrientation() const331  Orientation WindowSessionProperty::GetDefaultRequestedOrientation() const
332  {
333      return defaultRequestedOrientation_;
334  }
335  
GetPrivacyMode() const336  bool WindowSessionProperty::GetPrivacyMode() const
337  {
338      return isPrivacyMode_;
339  }
340  
GetSystemPrivacyMode() const341  bool WindowSessionProperty::GetSystemPrivacyMode() const
342  {
343      return isSystemPrivacyMode_;
344  }
345  
GetSnapshotSkip() const346  bool WindowSessionProperty::GetSnapshotSkip() const
347  {
348      return isSnapshotSkip_;
349  }
350  
GetBrightness() const351  float WindowSessionProperty::GetBrightness() const
352  {
353      return brightness_;
354  }
355  
GetSystemCalling() const356  bool WindowSessionProperty::GetSystemCalling() const
357  {
358      return isSystemCalling_;
359  }
360  
GetDisplayId() const361  DisplayId WindowSessionProperty::GetDisplayId() const
362  {
363      return displayId_;
364  }
365  
SetParentId(int32_t parentId)366  void WindowSessionProperty::SetParentId(int32_t parentId)
367  {
368      parentId_ = parentId;
369  }
370  
GetParentId() const371  int32_t WindowSessionProperty::GetParentId() const
372  {
373      return parentId_;
374  }
375  
SetWindowFlags(uint32_t flags)376  void WindowSessionProperty::SetWindowFlags(uint32_t flags)
377  {
378      flags_ = flags;
379  }
380  
381  /** @note @window.hierarchy */
SetTopmost(bool topmost)382  void WindowSessionProperty::SetTopmost(bool topmost)
383  {
384      topmost_ = topmost;
385  }
386  
IsTopmost() const387  bool WindowSessionProperty::IsTopmost() const
388  {
389      return topmost_;
390  }
391  
SetMainWindowTopmost(bool isTopmost)392  void WindowSessionProperty::SetMainWindowTopmost(bool isTopmost)
393  {
394      mainWindowTopmost_ = isTopmost;
395  }
396  
IsMainWindowTopmost() const397  bool WindowSessionProperty::IsMainWindowTopmost() const
398  {
399      return mainWindowTopmost_;
400  }
401  
AddWindowFlag(WindowFlag flag)402  void WindowSessionProperty::AddWindowFlag(WindowFlag flag)
403  {
404      flags_ |= static_cast<uint32_t>(flag);
405  }
406  
GetWindowFlags() const407  uint32_t WindowSessionProperty::GetWindowFlags() const
408  {
409      return flags_;
410  }
411  
SetPersistentId(int32_t persistentId)412  void WindowSessionProperty::SetPersistentId(int32_t persistentId)
413  {
414      persistentId_ = persistentId;
415  }
416  
GetPersistentId() const417  int32_t WindowSessionProperty::GetPersistentId() const
418  {
419      return persistentId_;
420  }
421  
SetParentPersistentId(int32_t persistentId)422  void WindowSessionProperty::SetParentPersistentId(int32_t persistentId)
423  {
424      parentPersistentId_ = persistentId;
425  }
426  
GetParentPersistentId() const427  int32_t WindowSessionProperty::GetParentPersistentId() const
428  {
429      return parentPersistentId_;
430  }
431  
SetTurnScreenOn(bool turnScreenOn)432  void WindowSessionProperty::SetTurnScreenOn(bool turnScreenOn)
433  {
434      turnScreenOn_ = turnScreenOn;
435  }
436  
IsTurnScreenOn() const437  bool WindowSessionProperty::IsTurnScreenOn() const
438  {
439      return turnScreenOn_;
440  }
441  
SetKeepScreenOn(bool keepScreenOn)442  void WindowSessionProperty::SetKeepScreenOn(bool keepScreenOn)
443  {
444      keepScreenOn_ = keepScreenOn;
445  }
446  
IsKeepScreenOn() const447  bool WindowSessionProperty::IsKeepScreenOn() const
448  {
449      return keepScreenOn_;
450  }
451  
SetAccessTokenId(uint32_t accessTokenId)452  void WindowSessionProperty::SetAccessTokenId(uint32_t accessTokenId)
453  {
454      accessTokenId_ = accessTokenId;
455  }
456  
GetAccessTokenId() const457  uint32_t WindowSessionProperty::GetAccessTokenId() const
458  {
459      return accessTokenId_;
460  }
461  
SetTokenState(bool hasToken)462  void WindowSessionProperty::SetTokenState(bool hasToken)
463  {
464      tokenState_ = hasToken;
465  }
466  
GetTokenState() const467  bool WindowSessionProperty::GetTokenState() const
468  {
469      return tokenState_;
470  }
471  
GetMaximizeMode() const472  MaximizeMode WindowSessionProperty::GetMaximizeMode() const
473  {
474      return maximizeMode_;
475  }
476  
SetMaximizeMode(MaximizeMode mode)477  void WindowSessionProperty::SetMaximizeMode(MaximizeMode mode)
478  {
479      maximizeMode_ = mode;
480  }
481  
SetSystemBarProperty(WindowType type,const SystemBarProperty & property)482  void WindowSessionProperty::SetSystemBarProperty(WindowType type, const SystemBarProperty& property)
483  {
484      if (type == WindowType::WINDOW_TYPE_STATUS_BAR
485          || type ==WindowType::WINDOW_TYPE_NAVIGATION_BAR
486          || type == WindowType::WINDOW_TYPE_NAVIGATION_INDICATOR) {
487          sysBarPropMap_[type] = property;
488      }
489  }
490  
GetSystemBarProperty() const491  std::unordered_map<WindowType, SystemBarProperty> WindowSessionProperty::GetSystemBarProperty() const
492  {
493      return sysBarPropMap_;
494  }
495  
SetWindowLimits(const WindowLimits & windowLimits)496  void WindowSessionProperty::SetWindowLimits(const WindowLimits& windowLimits)
497  {
498      limits_ = windowLimits;
499  }
500  
GetWindowLimits() const501  WindowLimits WindowSessionProperty::GetWindowLimits() const
502  {
503      return limits_;
504  }
505  
SetWindowMode(WindowMode mode)506  void WindowSessionProperty::SetWindowMode(WindowMode mode)
507  {
508      windowMode_ = mode;
509  }
510  
GetWindowMode() const511  WindowMode WindowSessionProperty::GetWindowMode() const
512  {
513      return windowMode_;
514  }
515  
GetWindowState() const516  WindowState WindowSessionProperty::GetWindowState() const
517  {
518      return windowState_;
519  }
520  
SetWindowState(WindowState state)521  void WindowSessionProperty::SetWindowState(WindowState state)
522  {
523      windowState_ = state;
524  }
525  
SetKeyboardLayoutParams(const KeyboardLayoutParams & params)526  void WindowSessionProperty::SetKeyboardLayoutParams(const KeyboardLayoutParams& params)
527  {
528      keyboardLayoutParams_.gravity_ = params.gravity_;
529      keyboardLayoutParams_.LandscapeKeyboardRect_ = params.LandscapeKeyboardRect_;
530      keyboardLayoutParams_.PortraitKeyboardRect_ = params.PortraitKeyboardRect_;
531      keyboardLayoutParams_.LandscapePanelRect_ = params.LandscapePanelRect_;
532      keyboardLayoutParams_.PortraitPanelRect_ = params.PortraitPanelRect_;
533  }
534  
GetKeyboardLayoutParams() const535  KeyboardLayoutParams WindowSessionProperty::GetKeyboardLayoutParams() const
536  {
537      return keyboardLayoutParams_;
538  }
539  
SetDecorEnable(bool isDecorEnable)540  void WindowSessionProperty::SetDecorEnable(bool isDecorEnable)
541  {
542      isDecorEnable_ = isDecorEnable;
543  }
544  
IsDecorEnable()545  bool WindowSessionProperty::IsDecorEnable()
546  {
547      return isDecorEnable_;
548  }
549  
SetWindowModeSupportType(uint32_t windowModeSupportType)550  void WindowSessionProperty::SetWindowModeSupportType(uint32_t windowModeSupportType)
551  {
552      windowModeSupportType_ = windowModeSupportType;
553  }
554  
GetWindowModeSupportType() const555  uint32_t WindowSessionProperty::GetWindowModeSupportType() const
556  {
557      return windowModeSupportType_;
558  }
559  
SetSupportWindowModes(const std::vector<AppExecFwk::SupportWindowMode> & supportWindowModes)560  void WindowSessionProperty::SetSupportWindowModes(const std::vector<AppExecFwk::SupportWindowMode>& supportWindowModes)
561  {
562      std::lock_guard<std::mutex> lock(supportWindowModesMutex_);
563      supportWindowModes_ = supportWindowModes;
564  }
565  
GetSupportWindowModes(std::vector<AppExecFwk::SupportWindowMode> & supportWindowModes) const566  void WindowSessionProperty::GetSupportWindowModes(std::vector<AppExecFwk::SupportWindowMode>& supportWindowModes) const
567  {
568      std::lock_guard<std::mutex> lock(supportWindowModesMutex_);
569      supportWindowModes = supportWindowModes_;
570  }
571  
SetAnimationFlag(uint32_t animationFlag)572  void WindowSessionProperty::SetAnimationFlag(uint32_t animationFlag)
573  {
574      animationFlag_ = animationFlag;
575  }
576  
GetAnimationFlag() const577  uint32_t WindowSessionProperty::GetAnimationFlag() const
578  {
579      return animationFlag_;
580  }
581  
IsFloatingWindowAppType() const582  bool WindowSessionProperty::IsFloatingWindowAppType() const
583  {
584      return isFloatingWindowAppType_;
585  }
586  
SetTouchHotAreas(const std::vector<Rect> & rects)587  void WindowSessionProperty::SetTouchHotAreas(const std::vector<Rect>& rects)
588  {
589      {
590          std::lock_guard<std::mutex> lock(touchHotAreasMutex_);
591          if (GetPersistentId() != 0 && rects != touchHotAreas_) {
592              std::string rectStr;
593              for (const auto& rect : rects) {
594                  rectStr = rectStr + " hot : [ " + std::to_string(rect.posX_) + " , " + std::to_string(rect.posY_) +
595                      " , " + std::to_string(rect.width_) + " , " + std::to_string(rect.height_) + "]";
596              }
597              TLOGI(WmsLogTag::WMS_EVENT, "id:%{public}d rects:%{public}s", GetPersistentId(), rectStr.c_str());
598          }
599          touchHotAreas_ = rects;
600      }
601      if (touchHotAreasChangeCallback_) {
602          touchHotAreasChangeCallback_();
603      }
604  }
605  
GetTouchHotAreas(std::vector<Rect> & rects) const606  void WindowSessionProperty::GetTouchHotAreas(std::vector<Rect>& rects) const
607  {
608      std::lock_guard<std::mutex> lock(touchHotAreasMutex_);
609      rects = touchHotAreas_;
610  }
611  
KeepKeyboardOnFocus(bool keepKeyboardFlag)612  void WindowSessionProperty::KeepKeyboardOnFocus(bool keepKeyboardFlag)
613  {
614      keepKeyboardFlag_ = keepKeyboardFlag;
615  }
616  
GetKeepKeyboardFlag() const617  bool WindowSessionProperty::GetKeepKeyboardFlag() const
618  {
619      return keepKeyboardFlag_;
620  }
621  
SetCallingSessionId(uint32_t sessionId)622  void WindowSessionProperty::SetCallingSessionId(uint32_t sessionId)
623  {
624      callingSessionId_ = sessionId;
625  }
626  
GetCallingSessionId() const627  uint32_t WindowSessionProperty::GetCallingSessionId() const
628  {
629      return callingSessionId_;
630  }
631  
SetSessionPropertyChangeCallback(std::function<void ()> && callback)632  void WindowSessionProperty::SetSessionPropertyChangeCallback(std::function<void()>&& callback)
633  {
634      touchHotAreasChangeCallback_ = std::move(callback);
635  }
636  
SetPiPTemplateInfo(const PiPTemplateInfo & pipTemplateInfo)637  void WindowSessionProperty::SetPiPTemplateInfo(const PiPTemplateInfo& pipTemplateInfo)
638  {
639      pipTemplateInfo_ = pipTemplateInfo;
640  }
641  
GetPiPTemplateInfo() const642  PiPTemplateInfo WindowSessionProperty::GetPiPTemplateInfo() const
643  {
644      return pipTemplateInfo_;
645  }
646  
SetIsNeedUpdateWindowMode(bool isNeedUpdateWindowMode)647  void WindowSessionProperty::SetIsNeedUpdateWindowMode(bool isNeedUpdateWindowMode)
648  {
649      isNeedUpdateWindowMode_ = isNeedUpdateWindowMode;
650  }
651  
GetIsNeedUpdateWindowMode() const652  bool WindowSessionProperty::GetIsNeedUpdateWindowMode() const
653  {
654      return isNeedUpdateWindowMode_;
655  }
656  
MarshallingWindowLimits(Parcel & parcel) const657  bool WindowSessionProperty::MarshallingWindowLimits(Parcel& parcel) const
658  {
659      if (parcel.WriteUint32(limits_.maxWidth_) &&
660          parcel.WriteUint32(limits_.maxHeight_) && parcel.WriteUint32(limits_.minWidth_) &&
661          parcel.WriteUint32(limits_.minHeight_) && parcel.WriteFloat(limits_.maxRatio_) &&
662          parcel.WriteFloat(limits_.minRatio_) && parcel.WriteFloat(limits_.vpRatio_)) {
663          return true;
664      }
665      return false;
666  }
667  
UnmarshallingWindowLimits(Parcel & parcel,WindowSessionProperty * property)668  void WindowSessionProperty::UnmarshallingWindowLimits(Parcel& parcel, WindowSessionProperty* property)
669  {
670      WindowLimits windowLimits = { parcel.ReadUint32(), parcel.ReadUint32(), parcel.ReadUint32(),
671          parcel.ReadUint32(), parcel.ReadFloat(), parcel.ReadFloat(), parcel.ReadFloat() };
672      property->SetWindowLimits(windowLimits);
673  }
674  
MarshallingSystemBarMap(Parcel & parcel) const675  bool WindowSessionProperty::MarshallingSystemBarMap(Parcel& parcel) const
676  {
677      auto size = sysBarPropMap_.size();
678      uint32_t maxSystemBarNumber = 3;
679      if (size > maxSystemBarNumber) { // max systembar number
680          return false;
681      }
682  
683      if (!parcel.WriteUint32(static_cast<uint32_t>(size))) {
684          return false;
685      }
686      for (auto it : sysBarPropMap_) {
687          if (!parcel.WriteUint32(static_cast<uint32_t>(it.first))) {
688              return false;
689          }
690          if (!(parcel.WriteBool(it.second.enable_) && parcel.WriteUint32(it.second.backgroundColor_) &&
691                parcel.WriteUint32(it.second.contentColor_) && parcel.WriteBool(it.second.enableAnimation_) &&
692                parcel.WriteUint32(static_cast<uint32_t>(it.second.settingFlag_)))) {
693              return false;
694          }
695      }
696      return true;
697  }
698  
UnMarshallingSystemBarMap(Parcel & parcel,WindowSessionProperty * property)699  void WindowSessionProperty::UnMarshallingSystemBarMap(Parcel& parcel, WindowSessionProperty* property)
700  {
701      uint32_t size = parcel.ReadUint32();
702      uint32_t maxSystemBarNumber = 3;
703      if (size > maxSystemBarNumber) { // max systembar number
704          return;
705      }
706  
707      for (uint32_t i = 0; i < size; i++) {
708          WindowType type = static_cast<WindowType>(parcel.ReadUint32());
709          SystemBarProperty prop = { parcel.ReadBool(), parcel.ReadUint32(), parcel.ReadUint32(), parcel.ReadBool(),
710              static_cast<SystemBarSettingFlag>(parcel.ReadUint32()) };
711          property->SetSystemBarProperty(type, prop);
712      }
713  }
714  
MarshallingTouchHotAreas(Parcel & parcel) const715  bool WindowSessionProperty::MarshallingTouchHotAreas(Parcel& parcel) const
716  {
717      auto size = touchHotAreas_.size();
718      if (size > TOUCH_HOT_AREA_MAX_NUM) {
719          return false;
720      }
721      if (!parcel.WriteUint32(static_cast<uint32_t>(size))) {
722          return false;
723      }
724      for (const auto& rect : touchHotAreas_) {
725          if (!(parcel.WriteInt32(rect.posX_) && parcel.WriteInt32(rect.posY_) &&
726              parcel.WriteUint32(rect.width_) && parcel.WriteUint32(rect.height_))) {
727              return false;
728          }
729      }
730      return true;
731  }
732  
UnmarshallingTouchHotAreas(Parcel & parcel,WindowSessionProperty * property)733  void WindowSessionProperty::UnmarshallingTouchHotAreas(Parcel& parcel, WindowSessionProperty* property)
734  {
735      uint32_t size = parcel.ReadUint32();
736      if (size > TOUCH_HOT_AREA_MAX_NUM) {
737          return;
738      }
739      for (uint32_t i = 0; i < size; i++) {
740          property->touchHotAreas_.emplace_back(
741              Rect{ parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() });
742      }
743  }
744  
MarshallingPiPTemplateInfo(Parcel & parcel) const745  bool WindowSessionProperty::MarshallingPiPTemplateInfo(Parcel& parcel) const
746  {
747      if (!WindowHelper::IsPipWindow(type_)) {
748          return true;
749      }
750      if (!parcel.WriteUint32(pipTemplateInfo_.pipTemplateType)) {
751          return false;
752      }
753      if (!parcel.WriteUint32(pipTemplateInfo_.priority)) {
754          return false;
755      }
756      auto size = pipTemplateInfo_.controlGroup.size();
757      if (size > MAX_SIZE_PIP_CONTROL_GROUP) {
758          return false;
759      }
760      if (!parcel.WriteUint32(static_cast<uint32_t>(size))) {
761          return false;
762      }
763      for (uint32_t i = 0; i < size; i++) {
764          if (!parcel.WriteUint32(pipTemplateInfo_.controlGroup[i])) {
765              return false;
766          }
767      }
768      auto controlStatusSize = pipTemplateInfo_.pipControlStatusInfoList.size();
769      if (controlStatusSize > MAX_SIZE_PIP_CONTROL) {
770          return false;
771      }
772      if (!parcel.WriteUint32(static_cast<uint32_t>(controlStatusSize))) {
773          return false;
774      }
775      for (uint32_t i = 0; i < controlStatusSize; i++) {
776          if (!parcel.WriteUint32(static_cast<uint32_t>(pipTemplateInfo_.pipControlStatusInfoList[i].controlType)) ||
777              !parcel.WriteInt32(static_cast<int32_t>(pipTemplateInfo_.pipControlStatusInfoList[i].status))) {
778              return false;
779          }
780      }
781      auto controlEnableSize = pipTemplateInfo_.pipControlEnableInfoList.size();
782      if (controlEnableSize > MAX_SIZE_PIP_CONTROL) {
783          return false;
784      }
785      if (!parcel.WriteUint32(static_cast<uint32_t>(controlEnableSize))) {
786          return false;
787      }
788      for (uint32_t i = 0; i < controlEnableSize; i++) {
789          if (!parcel.WriteUint32(static_cast<uint32_t>(pipTemplateInfo_.pipControlEnableInfoList[i].controlType)) ||
790              !parcel.WriteInt32(static_cast<int32_t>(pipTemplateInfo_.pipControlEnableInfoList[i].enabled))) {
791              return false;
792          }
793      }
794      return true;
795  }
796  
UnmarshallingPiPTemplateInfo(Parcel & parcel,WindowSessionProperty * property)797  void WindowSessionProperty::UnmarshallingPiPTemplateInfo(Parcel& parcel, WindowSessionProperty* property)
798  {
799      if (!WindowHelper::IsPipWindow(property->GetWindowType())) {
800          return;
801      }
802      PiPTemplateInfo pipTemplateInfo;
803      pipTemplateInfo.pipTemplateType = parcel.ReadUint32();
804      pipTemplateInfo.priority = parcel.ReadUint32();
805      auto size = parcel.ReadUint32();
806      if (size > MAX_SIZE_PIP_CONTROL_GROUP) {
807          return;
808      }
809      for (uint32_t i = 0; i < size; i++) {
810          uint32_t controlGroupId = 0;
811          if (!parcel.ReadUint32(controlGroupId)) {
812              return;
813          }
814          pipTemplateInfo.controlGroup.push_back(controlGroupId);
815      }
816      auto controlStatusSize = parcel.ReadUint32();
817      if (controlStatusSize > MAX_SIZE_PIP_CONTROL) {
818          return;
819      }
820      for (uint32_t i = 0; i < controlStatusSize; i++) {
821          PiPControlStatusInfo pipControlStatusInfo;
822          uint32_t controlType = 0;
823          int32_t status = 0;
824          if (!parcel.ReadUint32(controlType) || !parcel.ReadInt32(status)) {
825              return;
826          }
827          pipControlStatusInfo.controlType = static_cast<PiPControlType>(controlType);
828          pipControlStatusInfo.status = static_cast<PiPControlStatus>(status);
829          pipTemplateInfo.pipControlStatusInfoList.push_back(pipControlStatusInfo);
830      }
831      auto controlEnableSize = parcel.ReadUint32();
832      if (controlEnableSize > MAX_SIZE_PIP_CONTROL) {
833          return;
834      }
835      for (uint32_t i = 0; i < controlEnableSize; i++) {
836          PiPControlEnableInfo pipControlEnableInfo;
837          uint32_t controlType = 0;
838          int32_t enabled = 0;
839          if (!parcel.ReadUint32(controlType) || !parcel.ReadInt32(enabled)) {
840              return;
841          }
842          pipControlEnableInfo.controlType = static_cast<PiPControlType>(controlType);
843          pipControlEnableInfo.enabled = static_cast<PiPControlStatus>(enabled);
844          pipTemplateInfo.pipControlEnableInfoList.push_back(pipControlEnableInfo);
845      }
846      property->SetPiPTemplateInfo(pipTemplateInfo);
847  }
848  
MarshallingWindowMask(Parcel & parcel) const849  bool WindowSessionProperty::MarshallingWindowMask(Parcel& parcel) const
850  {
851      if (!parcel.WriteBool(isShaped_)) {
852          return false;
853      }
854      if (isShaped_) {
855          if (!windowMask_->Marshalling(parcel)) {
856              return false;
857          }
858      }
859      return true;
860  }
861  
UnmarshallingWindowMask(Parcel & parcel,WindowSessionProperty * property)862  void WindowSessionProperty::UnmarshallingWindowMask(Parcel& parcel, WindowSessionProperty* property)
863  {
864      bool isShaped = parcel.ReadBool();
865      property->SetIsShaped(isShaped);
866      if (isShaped) {
867          Media::PixelMap* windowMask = Media::PixelMap::Unmarshalling(parcel);
868          if (windowMask != nullptr) {
869              property->SetWindowMask(std::shared_ptr<Media::PixelMap>(windowMask));
870          }
871      }
872  }
873  
MarshallingMainWindowTopmost(Parcel & parcel) const874  bool WindowSessionProperty::MarshallingMainWindowTopmost(Parcel& parcel) const
875  {
876      if (!parcel.WriteBool(mainWindowTopmost_) || !parcel.WriteUint32(accessTokenId_)) {
877          return false;
878      }
879      return true;
880  }
881  
UnmarshallingMainWindowTopmost(Parcel & parcel,WindowSessionProperty * property)882  void WindowSessionProperty::UnmarshallingMainWindowTopmost(Parcel& parcel, WindowSessionProperty* property)
883  {
884      property->SetMainWindowTopmost(parcel.ReadBool());
885      property->SetAccessTokenId(parcel.ReadUint32());
886  }
887  
MarshallingSessionInfo(Parcel & parcel) const888  bool WindowSessionProperty::MarshallingSessionInfo(Parcel& parcel) const
889  {
890      if (!parcel.WriteString(sessionInfo_.bundleName_) || !parcel.WriteString(sessionInfo_.moduleName_) ||
891          !parcel.WriteString(sessionInfo_.abilityName_) ||
892          !parcel.WriteInt32(static_cast<int32_t>(sessionInfo_.continueState))) {
893          return false;
894      }
895      const auto& want = sessionInfo_.want;
896      bool hasWant = want != nullptr;
897      if (!parcel.WriteBool(hasWant)) {
898          return false;
899      }
900      if (hasWant && !parcel.WriteParcelable(want.get())) {
901          return false;
902      }
903      return true;
904  }
905  
UnmarshallingSessionInfo(Parcel & parcel,WindowSessionProperty * property)906  bool WindowSessionProperty::UnmarshallingSessionInfo(Parcel& parcel, WindowSessionProperty* property)
907  {
908      std::string bundleName;
909      std::string moduleName;
910      std::string abilityName;
911      if (!parcel.ReadString(bundleName) || !parcel.ReadString(moduleName) || !parcel.ReadString(abilityName)) {
912          TLOGE(WmsLogTag::DEFAULT, "Failed to read String!");
913          return false;
914      }
915      SessionInfo info = { bundleName, moduleName, abilityName };
916      int32_t continueState;
917      if (!parcel.ReadInt32(continueState)) {
918          TLOGE(WmsLogTag::DEFAULT, "Failed to read continueState!");
919          return false;
920      }
921      info.continueState = static_cast<ContinueState>(continueState);
922      bool hasWant;
923      if (!parcel.ReadBool(hasWant)) {
924          TLOGE(WmsLogTag::DEFAULT, "Failed to read hasWant!");
925          return false;
926      }
927      if (hasWant) {
928          std::shared_ptr<AAFwk::Want> want(parcel.ReadParcelable<AAFwk::Want>());
929          if (want == nullptr) {
930              TLOGE(WmsLogTag::DEFAULT, "Failed to read want!");
931              return false;
932          }
933          info.want = want;
934      }
935      property->SetSessionInfo(info);
936      return true;
937  }
938  
SetCompatibleModeInPc(bool compatibleModeInPc)939  void WindowSessionProperty::SetCompatibleModeInPc(bool compatibleModeInPc)
940  {
941      compatibleModeInPc_ = compatibleModeInPc;
942  }
943  
GetCompatibleModeInPc() const944  bool WindowSessionProperty::GetCompatibleModeInPc() const
945  {
946      return compatibleModeInPc_;
947  }
948  
SetCompatibleWindowSizeInPc(int32_t portraitWidth,int32_t portraitHeight,int32_t landscapeWidth,int32_t landscapeHeight)949  void WindowSessionProperty::SetCompatibleWindowSizeInPc(int32_t portraitWidth,
950      int32_t portraitHeight, int32_t landscapeWidth, int32_t landscapeHeight)
951  {
952      compatibleInPcPortraitWidth_ = portraitWidth;
953      compatibleInPcPortraitHeight_ = portraitHeight;
954      compatibleInPcLandscapeWidth_ = landscapeWidth;
955      compatibleInPcLandscapeHeight_ = landscapeHeight;
956  }
957  
GetCompatibleInPcPortraitWidth() const958  int32_t WindowSessionProperty::GetCompatibleInPcPortraitWidth() const
959  {
960      return compatibleInPcPortraitWidth_;
961  }
962  
GetCompatibleInPcPortraitHeight() const963  int32_t WindowSessionProperty::GetCompatibleInPcPortraitHeight() const
964  {
965      return compatibleInPcPortraitHeight_;
966  }
967  
GetCompatibleInPcLandscapeWidth() const968  int32_t WindowSessionProperty::GetCompatibleInPcLandscapeWidth() const
969  {
970      return compatibleInPcLandscapeWidth_;
971  }
972  
GetCompatibleInPcLandscapeHeight() const973  int32_t WindowSessionProperty::GetCompatibleInPcLandscapeHeight() const
974  {
975      return compatibleInPcLandscapeHeight_;
976  }
977  
SetIsAppSupportPhoneInPc(bool isSupportPhone)978  void WindowSessionProperty::SetIsAppSupportPhoneInPc(bool isSupportPhone)
979  {
980      isAppSupportPhoneInPc_ = isSupportPhone;
981  }
982  
GetIsAppSupportPhoneInPc() const983  bool WindowSessionProperty::GetIsAppSupportPhoneInPc() const
984  {
985      return isAppSupportPhoneInPc_;
986  }
987  
SetIsPcAppInPad(bool isPcAppInPad)988  void WindowSessionProperty::SetIsPcAppInPad(bool isPcAppInPad)
989  {
990      isPcAppInPad_ = isPcAppInPad;
991  }
992  
GetIsPcAppInPad() const993  bool WindowSessionProperty::GetIsPcAppInPad() const
994  {
995      return isPcAppInPad_;
996  }
997  
SetSubWindowLevel(uint32_t subWindowLevel)998  void WindowSessionProperty::SetSubWindowLevel(uint32_t subWindowLevel)
999  {
1000      subWindowLevel_ = subWindowLevel;
1001  }
1002  
GetSubWindowLevel() const1003  uint32_t WindowSessionProperty::GetSubWindowLevel() const
1004  {
1005      return subWindowLevel_;
1006  }
1007  
SetCompatibleModeEnableInPad(bool enable)1008  void WindowSessionProperty::SetCompatibleModeEnableInPad(bool enable)
1009  {
1010      std::lock_guard<std::mutex> lock(compatibleModeMutex_);
1011      compatibleModeEnableInPad_ = enable;
1012  }
1013  
GetCompatibleModeEnableInPad() const1014  bool WindowSessionProperty::GetCompatibleModeEnableInPad() const
1015  {
1016      std::lock_guard<std::mutex> lock(compatibleModeMutex_);
1017      return compatibleModeEnableInPad_;
1018  }
1019  
SetIsSupportDragInPcCompatibleMode(bool isSupportDragInPcCompatibleMode)1020  void WindowSessionProperty::SetIsSupportDragInPcCompatibleMode(bool isSupportDragInPcCompatibleMode)
1021  {
1022      isSupportDragInPcCompatibleMode_ = isSupportDragInPcCompatibleMode;
1023  }
1024  
GetIsSupportDragInPcCompatibleMode() const1025  bool WindowSessionProperty::GetIsSupportDragInPcCompatibleMode() const
1026  {
1027      return isSupportDragInPcCompatibleMode_;
1028  }
1029  
Marshalling(Parcel & parcel) const1030  bool WindowSessionProperty::Marshalling(Parcel& parcel) const
1031  {
1032      return parcel.WriteString(windowName_) && parcel.WriteInt32(windowRect_.posX_) &&
1033          parcel.WriteInt32(windowRect_.posY_) && parcel.WriteUint32(windowRect_.width_) &&
1034          parcel.WriteUint32(windowRect_.height_) && parcel.WriteInt32(requestRect_.posX_) &&
1035          parcel.WriteInt32(requestRect_.posY_) && parcel.WriteUint32(requestRect_.width_) &&
1036          parcel.WriteUint32(requestRect_.height_) &&
1037          parcel.WriteUint32(static_cast<uint32_t>(type_)) &&
1038          parcel.WriteBool(focusable_) && parcel.WriteBool(focusableOnShow_) &&
1039          parcel.WriteBool(touchable_) && parcel.WriteBool(tokenState_) &&
1040          parcel.WriteBool(turnScreenOn_) && parcel.WriteBool(keepScreenOn_) &&
1041          parcel.WriteBool(isPrivacyMode_) && parcel.WriteBool(isSystemPrivacyMode_) &&
1042          parcel.WriteBool(isSnapshotSkip_) &&
1043          parcel.WriteUint64(displayId_) && parcel.WriteInt32(persistentId_) &&
1044          MarshallingSessionInfo(parcel) &&
1045          parcel.WriteInt32(parentPersistentId_) &&
1046          parcel.WriteUint32(accessTokenId_) && parcel.WriteUint32(static_cast<uint32_t>(maximizeMode_)) &&
1047          parcel.WriteUint32(static_cast<uint32_t>(requestedOrientation_)) &&
1048          parcel.WriteUint32(static_cast<uint32_t>(windowMode_)) &&
1049          parcel.WriteUint32(flags_) && parcel.WriteBool(raiseEnabled_) &&
1050          parcel.WriteBool(topmost_) && parcel.WriteBool(mainWindowTopmost_) &&
1051          parcel.WriteBool(isDecorEnable_) && parcel.WriteBool(dragEnabled_) &&
1052          parcel.WriteBool(hideNonSystemFloatingWindows_) && parcel.WriteBool(forceHide_) &&
1053          MarshallingWindowLimits(parcel) && parcel.WriteFloat(brightness_) &&
1054          MarshallingSystemBarMap(parcel) && parcel.WriteUint32(animationFlag_) &&
1055          MarshallingPiPTemplateInfo(parcel) &&
1056          parcel.WriteBool(isFloatingWindowAppType_) && MarshallingTouchHotAreas(parcel) &&
1057          parcel.WriteBool(isSystemCalling_) &&
1058          parcel.WriteDouble(textFieldPositionY_) && parcel.WriteDouble(textFieldHeight_) &&
1059          parcel.WriteBool(isNeedUpdateWindowMode_) && parcel.WriteUint32(callingSessionId_) &&
1060          parcel.WriteUint32(static_cast<uint32_t>(windowState_)) &&
1061          parcel.WriteBool(isLayoutFullScreen_) &&
1062          parcel.WriteInt32(realParentId_) &&
1063          parcel.WriteBool(isExtensionFlag_) &&
1064          parcel.WriteBool(isUIExtensionAbilityProcess_) &&
1065          parcel.WriteUint32(static_cast<uint32_t>(uiExtensionUsage_)) &&
1066          parcel.WriteUint32(static_cast<uint32_t>(parentWindowType_)) &&
1067          MarshallingWindowMask(parcel) &&
1068          parcel.WriteParcelable(&keyboardLayoutParams_) &&
1069          parcel.WriteBool(compatibleModeInPc_) &&
1070          parcel.WriteInt32(compatibleInPcPortraitWidth_) && parcel.WriteInt32(compatibleInPcPortraitHeight_) &&
1071          parcel.WriteInt32(compatibleInPcLandscapeWidth_) && parcel.WriteInt32(compatibleInPcLandscapeHeight_) &&
1072          parcel.WriteBool(isAppSupportPhoneInPc_) &&
1073          parcel.WriteBool(isSupportDragInPcCompatibleMode_) &&
1074          parcel.WriteBool(isPcAppInPad_) && parcel.WriteBool(compatibleModeEnableInPad_);
1075  }
1076  
Unmarshalling(Parcel & parcel)1077  WindowSessionProperty* WindowSessionProperty::Unmarshalling(Parcel& parcel)
1078  {
1079      WindowSessionProperty* property = new(std::nothrow) WindowSessionProperty();
1080      if (property == nullptr) {
1081          return nullptr;
1082      }
1083      property->SetWindowName(parcel.ReadString());
1084      Rect rect = { parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() };
1085      property->SetWindowRect(rect);
1086      Rect reqRect = { parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() };
1087      property->SetRequestRect(reqRect);
1088      property->SetWindowType(static_cast<WindowType>(parcel.ReadUint32()));
1089      property->SetFocusable(parcel.ReadBool());
1090      property->SetFocusableOnShow(parcel.ReadBool());
1091      property->SetTouchable(parcel.ReadBool());
1092      property->SetTokenState(parcel.ReadBool());
1093      property->SetTurnScreenOn(parcel.ReadBool());
1094      property->SetKeepScreenOn(parcel.ReadBool());
1095      property->SetPrivacyMode(parcel.ReadBool());
1096      property->SetSystemPrivacyMode(parcel.ReadBool());
1097      property->SetSnapshotSkip(parcel.ReadBool());
1098      property->SetDisplayId(parcel.ReadUint64());
1099      property->SetPersistentId(parcel.ReadInt32());
1100      if (!UnmarshallingSessionInfo(parcel, property)) {
1101          delete property;
1102          return nullptr;
1103      }
1104      property->SetParentPersistentId(parcel.ReadInt32());
1105      property->SetAccessTokenId(parcel.ReadUint32());
1106      property->SetMaximizeMode(static_cast<MaximizeMode>(parcel.ReadUint32()));
1107      property->SetRequestedOrientation(static_cast<Orientation>(parcel.ReadUint32()));
1108      property->SetWindowMode(static_cast<WindowMode>(parcel.ReadUint32()));
1109      property->SetWindowFlags(parcel.ReadUint32());
1110      property->SetRaiseEnabled(parcel.ReadBool());
1111      property->SetTopmost(parcel.ReadBool());
1112      property->SetMainWindowTopmost(parcel.ReadBool());
1113      property->SetDecorEnable(parcel.ReadBool());
1114      property->SetDragEnabled(parcel.ReadBool());
1115      property->SetHideNonSystemFloatingWindows(parcel.ReadBool());
1116      property->SetForceHide(parcel.ReadBool());
1117      UnmarshallingWindowLimits(parcel, property);
1118      property->SetBrightness(parcel.ReadFloat());
1119      UnMarshallingSystemBarMap(parcel, property);
1120      property->SetAnimationFlag(parcel.ReadUint32());
1121      UnmarshallingPiPTemplateInfo(parcel, property);
1122      property->SetFloatingWindowAppType(parcel.ReadBool());
1123      UnmarshallingTouchHotAreas(parcel, property);
1124      property->SetSystemCalling(parcel.ReadBool());
1125      property->SetTextFieldPositionY(parcel.ReadDouble());
1126      property->SetTextFieldHeight(parcel.ReadDouble());
1127      property->SetIsNeedUpdateWindowMode(parcel.ReadBool());
1128      property->SetCallingSessionId(parcel.ReadUint32());
1129      property->SetWindowState(static_cast<WindowState>(parcel.ReadUint32()));
1130      property->SetIsLayoutFullScreen(parcel.ReadBool());
1131      property->SetRealParentId(parcel.ReadInt32());
1132      property->SetExtensionFlag(parcel.ReadBool());
1133      property->SetIsUIExtensionAbilityProcess(parcel.ReadBool());
1134      property->SetUIExtensionUsage(static_cast<UIExtensionUsage>(parcel.ReadUint32()));
1135      property->SetParentWindowType(static_cast<WindowType>(parcel.ReadUint32()));
1136      UnmarshallingWindowMask(parcel, property);
1137      sptr<KeyboardLayoutParams> keyboardLayoutParams = parcel.ReadParcelable<KeyboardLayoutParams>();
1138      if (keyboardLayoutParams == nullptr) {
1139          delete property;
1140          return nullptr;
1141      }
1142      property->SetKeyboardLayoutParams(*keyboardLayoutParams);
1143      property->SetCompatibleModeInPc(parcel.ReadBool());
1144      property->SetCompatibleWindowSizeInPc(parcel.ReadInt32(), parcel.ReadInt32(),
1145                                            parcel.ReadInt32(), parcel.ReadInt32());
1146      property->SetIsAppSupportPhoneInPc(parcel.ReadBool());
1147      property->SetIsSupportDragInPcCompatibleMode(parcel.ReadBool());
1148      property->SetIsPcAppInPad(parcel.ReadBool());
1149      property->SetCompatibleModeEnableInPad(parcel.ReadBool());
1150      return property;
1151  }
1152  
CopyFrom(const sptr<WindowSessionProperty> & property)1153  void WindowSessionProperty::CopyFrom(const sptr<WindowSessionProperty>& property)
1154  {
1155      windowName_ = property->windowName_;
1156      sessionInfo_ = property->sessionInfo_;
1157      requestRect_ = property->requestRect_;
1158      windowRect_ = property->windowRect_;
1159      type_ = property->type_;
1160      focusable_ = property->focusable_;
1161      focusableOnShow_ = property->focusableOnShow_;
1162      touchable_ = property->touchable_;
1163      dragEnabled_ = property->dragEnabled_;
1164      hideNonSystemFloatingWindows_ = property->hideNonSystemFloatingWindows_;
1165      forceHide_ = property->forceHide_;
1166      raiseEnabled_ = property->raiseEnabled_;
1167      topmost_ = property->topmost_;
1168      mainWindowTopmost_ = property->mainWindowTopmost_;
1169      tokenState_ = property->tokenState_;
1170      turnScreenOn_ = property->turnScreenOn_;
1171      keepScreenOn_ = property->keepScreenOn_;
1172      requestedOrientation_ = property->requestedOrientation_;
1173      defaultRequestedOrientation_ = property->defaultRequestedOrientation_;
1174      isPrivacyMode_ = property->isPrivacyMode_;
1175      isSystemPrivacyMode_ = property->isSystemPrivacyMode_;
1176      isSnapshotSkip_ = property->isSnapshotSkip_;
1177      brightness_ = property->brightness_;
1178      displayId_ = property->displayId_;
1179      parentId_ = property->parentId_;
1180      flags_ = property->flags_;
1181      persistentId_ = property->persistentId_;
1182      parentPersistentId_ = property->parentPersistentId_;
1183      accessTokenId_ = property->accessTokenId_;
1184      maximizeMode_ = property->maximizeMode_;
1185      windowMode_ = property->windowMode_;
1186      limits_ = property->limits_;
1187      windowModeSupportType_ = property->windowModeSupportType_;
1188      sysBarPropMap_ = property->sysBarPropMap_;
1189      isDecorEnable_ = property->isDecorEnable_;
1190      animationFlag_ = property->animationFlag_;
1191      isFloatingWindowAppType_ = property->isFloatingWindowAppType_;
1192      touchHotAreas_ = property->touchHotAreas_;
1193      isSystemCalling_ = property->isSystemCalling_;
1194      textFieldPositionY_ = property->textFieldPositionY_;
1195      textFieldHeight_ = property->textFieldHeight_;
1196      isNeedUpdateWindowMode_ = property->isNeedUpdateWindowMode_;
1197      callingSessionId_ = property->callingSessionId_;
1198      isLayoutFullScreen_ = property->isLayoutFullScreen_;
1199      windowMask_ = property->windowMask_;
1200      isShaped_ = property->isShaped_;
1201  }
1202  
Write(Parcel & parcel,WSPropertyChangeAction action)1203  bool WindowSessionProperty::Write(Parcel& parcel, WSPropertyChangeAction action)
1204  {
1205      const auto funcIter = writeFuncMap_.find(static_cast<uint32_t>(action));
1206      if (funcIter == writeFuncMap_.end()) {
1207          TLOGE(WmsLogTag::DEFAULT, "Failed to find func handler!");
1208          return false;
1209      }
1210      bool ret = parcel.WriteUint32(static_cast<uint32_t>(persistentId_));
1211      return ret && (this->*(funcIter->second))(parcel);
1212  }
1213  
WriteActionUpdateTurnScreenOn(Parcel & parcel)1214  bool WindowSessionProperty::WriteActionUpdateTurnScreenOn(Parcel& parcel)
1215  {
1216      return parcel.WriteBool(turnScreenOn_);
1217  }
1218  
WriteActionUpdateKeepScreenOn(Parcel & parcel)1219  bool WindowSessionProperty::WriteActionUpdateKeepScreenOn(Parcel& parcel)
1220  {
1221      return parcel.WriteBool(keepScreenOn_);
1222  }
1223  
WriteActionUpdateFocusable(Parcel & parcel)1224  bool WindowSessionProperty::WriteActionUpdateFocusable(Parcel& parcel)
1225  {
1226      return parcel.WriteBool(focusable_);
1227  }
1228  
WriteActionUpdateTouchable(Parcel & parcel)1229  bool WindowSessionProperty::WriteActionUpdateTouchable(Parcel& parcel)
1230  {
1231      return parcel.WriteBool(touchable_);
1232  }
1233  
WriteActionUpdateSetBrightness(Parcel & parcel)1234  bool WindowSessionProperty::WriteActionUpdateSetBrightness(Parcel& parcel)
1235  {
1236      return parcel.WriteFloat(brightness_);
1237  }
1238  
WriteActionUpdateOrientation(Parcel & parcel)1239  bool WindowSessionProperty::WriteActionUpdateOrientation(Parcel& parcel)
1240  {
1241      return parcel.WriteUint32(static_cast<uint32_t>(requestedOrientation_));
1242  }
1243  
WriteActionUpdatePrivacyMode(Parcel & parcel)1244  bool WindowSessionProperty::WriteActionUpdatePrivacyMode(Parcel& parcel)
1245  {
1246      return parcel.WriteBool(isPrivacyMode_) && parcel.WriteBool(isSystemPrivacyMode_);
1247  }
1248  
WriteActionUpdateSnapshotSkip(Parcel & parcel)1249  bool WindowSessionProperty::WriteActionUpdateSnapshotSkip(Parcel& parcel)
1250  {
1251      return parcel.WriteBool(isSnapshotSkip_);
1252  }
1253  
WriteActionUpdateMaximizeState(Parcel & parcel)1254  bool WindowSessionProperty::WriteActionUpdateMaximizeState(Parcel& parcel)
1255  {
1256      return parcel.WriteUint32(static_cast<uint32_t>(maximizeMode_)) &&
1257          parcel.WriteBool(isLayoutFullScreen_);
1258  }
1259  
WriteActionUpdateSystemBar(Parcel & parcel)1260  bool WindowSessionProperty::WriteActionUpdateSystemBar(Parcel& parcel)
1261  {
1262      return MarshallingSystemBarMap(parcel);
1263  }
1264  
WriteActionUpdateFlags(Parcel & parcel)1265  bool WindowSessionProperty::WriteActionUpdateFlags(Parcel& parcel)
1266  {
1267      return parcel.WriteUint32(flags_);
1268  }
1269  
WriteActionUpdateMode(Parcel & parcel)1270  bool WindowSessionProperty::WriteActionUpdateMode(Parcel& parcel)
1271  {
1272      return parcel.WriteUint32(static_cast<uint32_t>(windowMode_));
1273  }
1274  
WriteActionUpdateAnimationFlag(Parcel & parcel)1275  bool WindowSessionProperty::WriteActionUpdateAnimationFlag(Parcel& parcel)
1276  {
1277      return parcel.WriteUint32(animationFlag_);
1278  }
1279  
WriteActionUpdateTouchHotArea(Parcel & parcel)1280  bool WindowSessionProperty::WriteActionUpdateTouchHotArea(Parcel& parcel)
1281  {
1282      return MarshallingTouchHotAreas(parcel);
1283  }
1284  
WriteActionUpdateDecorEnable(Parcel & parcel)1285  bool WindowSessionProperty::WriteActionUpdateDecorEnable(Parcel& parcel)
1286  {
1287      return parcel.WriteBool(isDecorEnable_);
1288  }
1289  
WriteActionUpdateWindowLimits(Parcel & parcel)1290  bool WindowSessionProperty::WriteActionUpdateWindowLimits(Parcel& parcel)
1291  {
1292      return MarshallingWindowLimits(parcel);
1293  }
1294  
WriteActionUpdateDragenabled(Parcel & parcel)1295  bool WindowSessionProperty::WriteActionUpdateDragenabled(Parcel& parcel)
1296  {
1297      return parcel.WriteBool(dragEnabled_);
1298  }
1299  
WriteActionUpdateRaiseenabled(Parcel & parcel)1300  bool WindowSessionProperty::WriteActionUpdateRaiseenabled(Parcel& parcel)
1301  {
1302      return parcel.WriteBool(raiseEnabled_);
1303  }
1304  
WriteActionUpdateHideNonSystemFloatingWindows(Parcel & parcel)1305  bool WindowSessionProperty::WriteActionUpdateHideNonSystemFloatingWindows(Parcel& parcel)
1306  {
1307      return parcel.WriteBool(hideNonSystemFloatingWindows_) &&
1308          parcel.WriteBool(isFloatingWindowAppType_) && parcel.WriteBool(forceHide_);
1309  }
1310  
WriteActionUpdateTextfieldAvoidInfo(Parcel & parcel)1311  bool WindowSessionProperty::WriteActionUpdateTextfieldAvoidInfo(Parcel& parcel)
1312  {
1313      return parcel.WriteDouble(textFieldPositionY_) && parcel.WriteDouble(textFieldHeight_);
1314  }
1315  
WriteActionUpdateWindowMask(Parcel & parcel)1316  bool WindowSessionProperty::WriteActionUpdateWindowMask(Parcel& parcel)
1317  {
1318      return MarshallingWindowMask(parcel);
1319  }
1320  
WriteActionUpdateTopmost(Parcel & parcel)1321  bool WindowSessionProperty::WriteActionUpdateTopmost(Parcel& parcel)
1322  {
1323      return parcel.WriteBool(topmost_);
1324  }
1325  
WriteActionUpdateMainWindowTopmost(Parcel & parcel)1326  bool WindowSessionProperty::WriteActionUpdateMainWindowTopmost(Parcel& parcel)
1327  {
1328      return MarshallingMainWindowTopmost(parcel);
1329  }
1330  
WriteActionUpdateWindowModeSupportType(Parcel & parcel)1331  bool WindowSessionProperty::WriteActionUpdateWindowModeSupportType(Parcel& parcel)
1332  {
1333      return parcel.WriteUint32(windowModeSupportType_);
1334  }
1335  
Read(Parcel & parcel,WSPropertyChangeAction action)1336  void WindowSessionProperty::Read(Parcel& parcel, WSPropertyChangeAction action)
1337  {
1338      const auto funcIter = readFuncMap_.find(static_cast<uint32_t>(action));
1339      if (funcIter == readFuncMap_.end()) {
1340          TLOGE(WmsLogTag::DEFAULT, "Failed to find func handler!");
1341          return;
1342      }
1343      SetPersistentId(parcel.ReadUint32());
1344      (this->*(funcIter->second))(parcel);
1345  }
1346  
ReadActionUpdateTurnScreenOn(Parcel & parcel)1347  void WindowSessionProperty::ReadActionUpdateTurnScreenOn(Parcel& parcel)
1348  {
1349      SetTurnScreenOn(parcel.ReadBool());
1350  }
1351  
ReadActionUpdateKeepScreenOn(Parcel & parcel)1352  void WindowSessionProperty::ReadActionUpdateKeepScreenOn(Parcel& parcel)
1353  {
1354      SetKeepScreenOn(parcel.ReadBool());
1355  }
1356  
ReadActionUpdateFocusable(Parcel & parcel)1357  void WindowSessionProperty::ReadActionUpdateFocusable(Parcel& parcel)
1358  {
1359      SetFocusable(parcel.ReadBool());
1360  }
1361  
ReadActionUpdateTouchable(Parcel & parcel)1362  void WindowSessionProperty::ReadActionUpdateTouchable(Parcel& parcel)
1363  {
1364      SetTouchable(parcel.ReadBool());
1365  }
1366  
ReadActionUpdateSetBrightness(Parcel & parcel)1367  void WindowSessionProperty::ReadActionUpdateSetBrightness(Parcel& parcel)
1368  {
1369      SetBrightness(parcel.ReadFloat());
1370  }
1371  
ReadActionUpdateOrientation(Parcel & parcel)1372  void WindowSessionProperty::ReadActionUpdateOrientation(Parcel& parcel)
1373  {
1374      SetRequestedOrientation(static_cast<Orientation>(parcel.ReadUint32()));
1375  }
1376  
ReadActionUpdatePrivacyMode(Parcel & parcel)1377  void WindowSessionProperty::ReadActionUpdatePrivacyMode(Parcel& parcel)
1378  {
1379      SetPrivacyMode(parcel.ReadBool());
1380      SetSystemPrivacyMode(parcel.ReadBool());
1381  }
1382  
ReadActionUpdateSnapshotSkip(Parcel & parcel)1383  void WindowSessionProperty::ReadActionUpdateSnapshotSkip(Parcel& parcel)
1384  {
1385      SetSnapshotSkip(parcel.ReadBool());
1386  }
1387  
ReadActionUpdateMaximizeState(Parcel & parcel)1388  void WindowSessionProperty::ReadActionUpdateMaximizeState(Parcel& parcel)
1389  {
1390      SetMaximizeMode(static_cast<MaximizeMode>(parcel.ReadUint32()));
1391      SetIsLayoutFullScreen(parcel.ReadBool());
1392  }
1393  
ReadActionUpdateSystemBar(Parcel & parcel)1394  void WindowSessionProperty::ReadActionUpdateSystemBar(Parcel& parcel)
1395  {
1396      UnMarshallingSystemBarMap(parcel, this);
1397  }
1398  
ReadActionUpdateFlags(Parcel & parcel)1399  void WindowSessionProperty::ReadActionUpdateFlags(Parcel& parcel)
1400  {
1401      SetWindowFlags(parcel.ReadUint32());
1402  }
1403  
ReadActionUpdateMode(Parcel & parcel)1404  void WindowSessionProperty::ReadActionUpdateMode(Parcel& parcel)
1405  {
1406      SetWindowMode(static_cast<WindowMode>(parcel.ReadUint32()));
1407  }
1408  
ReadActionUpdateAnimationFlag(Parcel & parcel)1409  void WindowSessionProperty::ReadActionUpdateAnimationFlag(Parcel& parcel)
1410  {
1411      SetAnimationFlag(parcel.ReadUint32());
1412  }
1413  
ReadActionUpdateTouchHotArea(Parcel & parcel)1414  void WindowSessionProperty::ReadActionUpdateTouchHotArea(Parcel& parcel)
1415  {
1416      UnmarshallingTouchHotAreas(parcel, this);
1417  }
1418  
ReadActionUpdateDecorEnable(Parcel & parcel)1419  void WindowSessionProperty::ReadActionUpdateDecorEnable(Parcel& parcel)
1420  {
1421      SetDecorEnable(parcel.ReadBool());
1422  }
1423  
ReadActionUpdateWindowLimits(Parcel & parcel)1424  void WindowSessionProperty::ReadActionUpdateWindowLimits(Parcel& parcel)
1425  {
1426      UnmarshallingWindowLimits(parcel, this);
1427  }
1428  
ReadActionUpdateDragenabled(Parcel & parcel)1429  void WindowSessionProperty::ReadActionUpdateDragenabled(Parcel& parcel)
1430  {
1431      SetDragEnabled(parcel.ReadBool());
1432  }
1433  
ReadActionUpdateRaiseenabled(Parcel & parcel)1434  void WindowSessionProperty::ReadActionUpdateRaiseenabled(Parcel& parcel)
1435  {
1436      SetRaiseEnabled(parcel.ReadBool());
1437  }
1438  
ReadActionUpdateHideNonSystemFloatingWindows(Parcel & parcel)1439  void WindowSessionProperty::ReadActionUpdateHideNonSystemFloatingWindows(Parcel& parcel)
1440  {
1441      SetHideNonSystemFloatingWindows(parcel.ReadBool());
1442      SetFloatingWindowAppType(parcel.ReadBool());
1443      SetForceHide(parcel.ReadBool());
1444  }
1445  
ReadActionUpdateTextfieldAvoidInfo(Parcel & parcel)1446  void WindowSessionProperty::ReadActionUpdateTextfieldAvoidInfo(Parcel& parcel)
1447  {
1448      SetTextFieldPositionY(parcel.ReadDouble());
1449      SetTextFieldHeight(parcel.ReadDouble());
1450  }
1451  
ReadActionUpdateWindowMask(Parcel & parcel)1452  void WindowSessionProperty::ReadActionUpdateWindowMask(Parcel& parcel)
1453  {
1454      UnmarshallingWindowMask(parcel, this);
1455  }
1456  
ReadActionUpdateTopmost(Parcel & parcel)1457  void WindowSessionProperty::ReadActionUpdateTopmost(Parcel& parcel)
1458  {
1459      SetTopmost(parcel.ReadBool());
1460  }
1461  
ReadActionUpdateMainWindowTopmost(Parcel & parcel)1462  void WindowSessionProperty::ReadActionUpdateMainWindowTopmost(Parcel& parcel)
1463  {
1464      UnmarshallingMainWindowTopmost(parcel, this);
1465  }
1466  
ReadActionUpdateWindowModeSupportType(Parcel & parcel)1467  void WindowSessionProperty::ReadActionUpdateWindowModeSupportType(Parcel& parcel)
1468  {
1469      SetWindowModeSupportType(parcel.ReadUint32());
1470  }
1471  
SetTransform(const Transform & trans)1472  void WindowSessionProperty::SetTransform(const Transform& trans)
1473  {
1474      trans_ = trans;
1475  }
1476  
GetTransform() const1477  const Transform& WindowSessionProperty::GetTransform() const
1478  {
1479      return trans_;
1480  }
1481  
SetTextFieldPositionY(double textFieldPositionY)1482  void WindowSessionProperty::SetTextFieldPositionY(double textFieldPositionY)
1483  {
1484      textFieldPositionY_ = textFieldPositionY;
1485  }
1486  
SetTextFieldHeight(double textFieldHeight)1487  void WindowSessionProperty::SetTextFieldHeight(double textFieldHeight)
1488  {
1489      textFieldHeight_ = textFieldHeight;
1490  }
1491  
GetTextFieldPositionY() const1492  double WindowSessionProperty::GetTextFieldPositionY() const
1493  {
1494      return textFieldPositionY_;
1495  }
1496  
GetTextFieldHeight() const1497  double WindowSessionProperty::GetTextFieldHeight() const
1498  {
1499      return textFieldHeight_;
1500  }
1501  
IsLayoutFullScreen() const1502  bool WindowSessionProperty::IsLayoutFullScreen() const
1503  {
1504      return isLayoutFullScreen_;
1505  }
1506  
SetIsLayoutFullScreen(bool isLayoutFullScreen)1507  void WindowSessionProperty::SetIsLayoutFullScreen(bool isLayoutFullScreen)
1508  {
1509      isLayoutFullScreen_ = isLayoutFullScreen;
1510  }
1511  
SetRealParentId(int32_t realParentId)1512  void WindowSessionProperty::SetRealParentId(int32_t realParentId)
1513  {
1514      realParentId_ = realParentId;
1515  }
1516  
GetRealParentId() const1517  int32_t WindowSessionProperty::GetRealParentId() const
1518  {
1519      return realParentId_;
1520  }
1521  
SetExtensionFlag(bool isExtensionFlag)1522  void WindowSessionProperty::SetExtensionFlag(bool isExtensionFlag)
1523  {
1524      isExtensionFlag_ = isExtensionFlag;
1525  }
1526  
GetExtensionFlag() const1527  bool WindowSessionProperty::GetExtensionFlag() const
1528  {
1529      return isExtensionFlag_;
1530  }
1531  
SetIsUIExtensionSubWindowFlag(bool isUIExtensionSubWindowFlag)1532  void WindowSessionProperty::SetIsUIExtensionSubWindowFlag(bool isUIExtensionSubWindowFlag)
1533  {
1534      isUIExtensionSubWindowFlag_ = isUIExtensionSubWindowFlag;
1535  }
1536  
GetIsUIExtensionSubWindowFlag() const1537  bool WindowSessionProperty::GetIsUIExtensionSubWindowFlag() const
1538  {
1539      return isUIExtensionSubWindowFlag_;
1540  }
1541  
SetIsUIExtensionAbilityProcess(bool isUIExtensionAbilityProcess)1542  void WindowSessionProperty::SetIsUIExtensionAbilityProcess(bool isUIExtensionAbilityProcess)
1543  {
1544      isUIExtensionAbilityProcess_ = isUIExtensionAbilityProcess;
1545  }
1546  
GetIsUIExtensionAbilityProcess() const1547  bool WindowSessionProperty::GetIsUIExtensionAbilityProcess() const
1548  {
1549      return isUIExtensionAbilityProcess_;
1550  }
1551  
SetUIExtensionUsage(UIExtensionUsage uiExtensionUsage)1552  void WindowSessionProperty::SetUIExtensionUsage(UIExtensionUsage uiExtensionUsage)
1553  {
1554      uiExtensionUsage_ = uiExtensionUsage;
1555  }
1556  
GetUIExtensionUsage() const1557  UIExtensionUsage WindowSessionProperty::GetUIExtensionUsage() const
1558  {
1559      return uiExtensionUsage_;
1560  }
1561  
SetParentWindowType(WindowType parentWindowType)1562  void WindowSessionProperty::SetParentWindowType(WindowType parentWindowType)
1563  {
1564      parentWindowType_= parentWindowType;
1565  }
1566  
GetParentWindowType() const1567  WindowType WindowSessionProperty::GetParentWindowType() const
1568  {
1569      return parentWindowType_;
1570  }
1571  
SetWindowMask(const std::shared_ptr<Media::PixelMap> & windowMask)1572  void WindowSessionProperty::SetWindowMask(const std::shared_ptr<Media::PixelMap>& windowMask)
1573  {
1574      windowMask_ = windowMask;
1575  }
1576  
GetWindowMask() const1577  std::shared_ptr<Media::PixelMap> WindowSessionProperty::GetWindowMask() const
1578  {
1579      return windowMask_;
1580  }
1581  
SetIsShaped(bool isShaped)1582  void WindowSessionProperty::SetIsShaped(bool isShaped)
1583  {
1584      isShaped_ = isShaped;
1585  }
1586  
GetIsShaped() const1587  bool WindowSessionProperty::GetIsShaped() const
1588  {
1589      return isShaped_;
1590  }
1591  
GetCollaboratorType() const1592  int32_t WindowSessionProperty::GetCollaboratorType() const
1593  {
1594      return collaboratorType_;
1595  }
1596  
SetCollaboratorType(int32_t collaboratorType)1597  void WindowSessionProperty::SetCollaboratorType(int32_t collaboratorType)
1598  {
1599      collaboratorType_ = collaboratorType;
1600  }
1601  
SetUserWindowLimits(const WindowLimits & windowUserLimits)1602  void WindowSessionProperty::SetUserWindowLimits(const WindowLimits& windowUserLimits)
1603  {
1604      userLimits_ = windowUserLimits;
1605  }
1606  
GetUserWindowLimits() const1607  WindowLimits WindowSessionProperty::GetUserWindowLimits() const
1608  {
1609      return userLimits_;
1610  }
1611  
SetConfigWindowLimitsVP(const WindowLimits & windowConfigLimitsVP)1612  void WindowSessionProperty::SetConfigWindowLimitsVP(const WindowLimits& windowConfigLimitsVP)
1613  {
1614      configLimitsVP_ = windowConfigLimitsVP;
1615  }
1616  
GetConfigWindowLimitsVP() const1617  WindowLimits WindowSessionProperty::GetConfigWindowLimitsVP() const
1618  {
1619      return configLimitsVP_;
1620  }
1621  
SetLastLimitsVpr(float vpr)1622  void WindowSessionProperty::SetLastLimitsVpr(float vpr)
1623  {
1624      lastVpr_ = vpr;
1625  }
1626  
GetLastLimitsVpr() const1627  float WindowSessionProperty::GetLastLimitsVpr() const
1628  {
1629      return lastVpr_;
1630  }
1631  
GetFullScreenStart() const1632  bool WindowSessionProperty::GetFullScreenStart() const
1633  {
1634      return fullScreenStart_;
1635  }
1636  
SetFullScreenStart(bool fullScreenStart)1637  void WindowSessionProperty::SetFullScreenStart(bool fullScreenStart)
1638  {
1639      fullScreenStart_ = fullScreenStart;
1640  }
1641  } // namespace Rosen
1642  } // namespace OHOS
1643