1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#ifndef OHOS_ROSEN_WINDOW_MANAGER_H 17e0dac50fSopenharmony_ci#define OHOS_ROSEN_WINDOW_MANAGER_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <memory> 20e0dac50fSopenharmony_ci#include <mutex> 21e0dac50fSopenharmony_ci#include <refbase.h> 22e0dac50fSopenharmony_ci#include <vector> 23e0dac50fSopenharmony_ci#include <iremote_object.h> 24e0dac50fSopenharmony_ci#include "wm_single_instance.h" 25e0dac50fSopenharmony_ci#include "wm_common.h" 26e0dac50fSopenharmony_ci#include "dm_common.h" 27e0dac50fSopenharmony_ci#include "focus_change_info.h" 28e0dac50fSopenharmony_ci#include "window_visibility_info.h" 29e0dac50fSopenharmony_ci#include "window_drawing_content_info.h" 30e0dac50fSopenharmony_ci#include "window.h" 31e0dac50fSopenharmony_ci#include "window_pid_visibility_info.h" 32e0dac50fSopenharmony_ci 33e0dac50fSopenharmony_cinamespace OHOS { 34e0dac50fSopenharmony_cinamespace Rosen { 35e0dac50fSopenharmony_cistruct SystemBarRegionTint { 36e0dac50fSopenharmony_ci WindowType type_; 37e0dac50fSopenharmony_ci SystemBarProperty prop_; 38e0dac50fSopenharmony_ci Rect region_; 39e0dac50fSopenharmony_ci SystemBarRegionTint() 40e0dac50fSopenharmony_ci : type_(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW), prop_(), region_{ 0, 0, 0, 0 } {} 41e0dac50fSopenharmony_ci SystemBarRegionTint(WindowType type, SystemBarProperty prop, Rect region) 42e0dac50fSopenharmony_ci : type_(type), prop_(prop), region_(region) {} 43e0dac50fSopenharmony_ci}; 44e0dac50fSopenharmony_ciusing SystemBarRegionTints = std::vector<SystemBarRegionTint>; 45e0dac50fSopenharmony_ci 46e0dac50fSopenharmony_cistruct VisibleWindowNumInfo { 47e0dac50fSopenharmony_ci uint32_t displayId; 48e0dac50fSopenharmony_ci uint32_t visibleWindowNum; 49e0dac50fSopenharmony_ci}; 50e0dac50fSopenharmony_ci 51e0dac50fSopenharmony_cistruct WindowSnapshotDataPack { 52e0dac50fSopenharmony_ci std::shared_ptr<Media::PixelMap> pixelMap = nullptr; 53e0dac50fSopenharmony_ci WMError result = WMError::WM_OK; 54e0dac50fSopenharmony_ci}; 55e0dac50fSopenharmony_ci 56e0dac50fSopenharmony_ci/** 57e0dac50fSopenharmony_ci * @class IWMSConnectionChangedListener 58e0dac50fSopenharmony_ci * 59e0dac50fSopenharmony_ci * @brief Listener to observe WMS connection status. 60e0dac50fSopenharmony_ci */ 61e0dac50fSopenharmony_ciclass IWMSConnectionChangedListener : virtual public RefBase { 62e0dac50fSopenharmony_cipublic: 63e0dac50fSopenharmony_ci /** 64e0dac50fSopenharmony_ci * @brief Notify caller when WMS connected 65e0dac50fSopenharmony_ci * 66e0dac50fSopenharmony_ci * @param userId ID of the user who has connected to the WMS. 67e0dac50fSopenharmony_ci * 68e0dac50fSopenharmony_ci * @param screenId ID of the screen that is connected to the WMS, screenId is currently always 0. 69e0dac50fSopenharmony_ci */ 70e0dac50fSopenharmony_ci virtual void OnConnected(int32_t userId, int32_t screenId) = 0; 71e0dac50fSopenharmony_ci /** 72e0dac50fSopenharmony_ci * @brief Notify caller when WMS disconnected 73e0dac50fSopenharmony_ci * 74e0dac50fSopenharmony_ci * @param userId ID of the user who has disconnected to the WMS. 75e0dac50fSopenharmony_ci * 76e0dac50fSopenharmony_ci * @param screenId ID of the screen that is disconnected to the WMS, screenId is currently always 0. 77e0dac50fSopenharmony_ci */ 78e0dac50fSopenharmony_ci virtual void OnDisconnected(int32_t userId, int32_t screenId) = 0; 79e0dac50fSopenharmony_ci}; 80e0dac50fSopenharmony_ci 81e0dac50fSopenharmony_ci/** 82e0dac50fSopenharmony_ci * @class IFocusChangedListener 83e0dac50fSopenharmony_ci * 84e0dac50fSopenharmony_ci * @brief Listener to observe focus changed. 85e0dac50fSopenharmony_ci */ 86e0dac50fSopenharmony_ciclass IFocusChangedListener : virtual public RefBase { 87e0dac50fSopenharmony_cipublic: 88e0dac50fSopenharmony_ci /** 89e0dac50fSopenharmony_ci * @brief Notify caller when window get focus 90e0dac50fSopenharmony_ci * 91e0dac50fSopenharmony_ci * @param focusChangeInfo Window info while its focus status changed. 92e0dac50fSopenharmony_ci */ 93e0dac50fSopenharmony_ci virtual void OnFocused(const sptr<FocusChangeInfo>& focusChangeInfo) = 0; 94e0dac50fSopenharmony_ci /** 95e0dac50fSopenharmony_ci * @brief Notify caller when window lose focus 96e0dac50fSopenharmony_ci * 97e0dac50fSopenharmony_ci * @param focusChangeInfo Window info while its focus status changed. 98e0dac50fSopenharmony_ci */ 99e0dac50fSopenharmony_ci virtual void OnUnfocused(const sptr<FocusChangeInfo>& focusChangeInfo) = 0; 100e0dac50fSopenharmony_ci}; 101e0dac50fSopenharmony_ci 102e0dac50fSopenharmony_ci/** 103e0dac50fSopenharmony_ci * @class IWindowModeChangedListener 104e0dac50fSopenharmony_ci * 105e0dac50fSopenharmony_ci * @brief Listener to observe window mode change. 106e0dac50fSopenharmony_ci */ 107e0dac50fSopenharmony_ciclass IWindowModeChangedListener : virtual public RefBase { 108e0dac50fSopenharmony_cipublic: 109e0dac50fSopenharmony_ci /** 110e0dac50fSopenharmony_ci * @brief Notify caller when window mode update. 111e0dac50fSopenharmony_ci * 112e0dac50fSopenharmony_ci * @param mode Window mode. 113e0dac50fSopenharmony_ci */ 114e0dac50fSopenharmony_ci virtual void OnWindowModeUpdate(WindowModeType mode) = 0; 115e0dac50fSopenharmony_ci}; 116e0dac50fSopenharmony_ci 117e0dac50fSopenharmony_ci 118e0dac50fSopenharmony_ci/** 119e0dac50fSopenharmony_ci * @class ISystemBarChangedListener 120e0dac50fSopenharmony_ci * 121e0dac50fSopenharmony_ci * @brief Listener to observe systembar changed. 122e0dac50fSopenharmony_ci */ 123e0dac50fSopenharmony_ciclass ISystemBarChangedListener : virtual public RefBase { 124e0dac50fSopenharmony_cipublic: 125e0dac50fSopenharmony_ci /** 126e0dac50fSopenharmony_ci * @brief Notify caller when system bar property changed 127e0dac50fSopenharmony_ci * 128e0dac50fSopenharmony_ci * @param displayId ID of display. 129e0dac50fSopenharmony_ci * @param tints Tint of system bar region. 130e0dac50fSopenharmony_ci */ 131e0dac50fSopenharmony_ci virtual void OnSystemBarPropertyChange(DisplayId displayId, const SystemBarRegionTints& tints) = 0; 132e0dac50fSopenharmony_ci}; 133e0dac50fSopenharmony_ci 134e0dac50fSopenharmony_ci/** 135e0dac50fSopenharmony_ci * @class IGestureNavigationEnabledChangedListener 136e0dac50fSopenharmony_ci * 137e0dac50fSopenharmony_ci * @brief Listener to observe GestureNavigationEnabled changed. 138e0dac50fSopenharmony_ci */ 139e0dac50fSopenharmony_ciclass IGestureNavigationEnabledChangedListener : virtual public RefBase { 140e0dac50fSopenharmony_cipublic: 141e0dac50fSopenharmony_ci /** 142e0dac50fSopenharmony_ci * @brief Notify caller when GestureNavigationEnabled changed. 143e0dac50fSopenharmony_ci * 144e0dac50fSopenharmony_ci * @param enable True means set Gesture on, false means set Gesture off. 145e0dac50fSopenharmony_ci */ 146e0dac50fSopenharmony_ci virtual void OnGestureNavigationEnabledUpdate(bool enable) = 0; 147e0dac50fSopenharmony_ci}; 148e0dac50fSopenharmony_ci 149e0dac50fSopenharmony_ci/** 150e0dac50fSopenharmony_ci * @class IVisibilityChangedListener 151e0dac50fSopenharmony_ci * 152e0dac50fSopenharmony_ci * @brief Listener to observe visibility changed. 153e0dac50fSopenharmony_ci */ 154e0dac50fSopenharmony_ciclass IVisibilityChangedListener : virtual public RefBase { 155e0dac50fSopenharmony_cipublic: 156e0dac50fSopenharmony_ci /** 157e0dac50fSopenharmony_ci * @brief Notify caller when window visibility changed. 158e0dac50fSopenharmony_ci * 159e0dac50fSopenharmony_ci * @param windowVisibilityInfo Window visibility info. 160e0dac50fSopenharmony_ci */ 161e0dac50fSopenharmony_ci virtual void OnWindowVisibilityChanged(const std::vector<sptr<WindowVisibilityInfo>>& windowVisibilityInfo) = 0; 162e0dac50fSopenharmony_ci}; 163e0dac50fSopenharmony_ci 164e0dac50fSopenharmony_ci/** 165e0dac50fSopenharmony_ci * @class IDrawingContentChangedListener 166e0dac50fSopenharmony_ci * 167e0dac50fSopenharmony_ci * @brief Listener to observe drawing content changed. 168e0dac50fSopenharmony_ci */ 169e0dac50fSopenharmony_ciclass IDrawingContentChangedListener : virtual public RefBase { 170e0dac50fSopenharmony_cipublic: 171e0dac50fSopenharmony_ci /** 172e0dac50fSopenharmony_ci * @brief Notify caller when window DrawingContent changed. 173e0dac50fSopenharmony_ci * 174e0dac50fSopenharmony_ci * @param windowDrawingInfo Window DrawingContent info. 175e0dac50fSopenharmony_ci */ 176e0dac50fSopenharmony_ci virtual void OnWindowDrawingContentChanged(const std::vector<sptr<WindowDrawingContentInfo>>& 177e0dac50fSopenharmony_ci windowDrawingInfo) = 0; 178e0dac50fSopenharmony_ci}; 179e0dac50fSopenharmony_ci 180e0dac50fSopenharmony_ci/** 181e0dac50fSopenharmony_ci * @class IWindowStyleChangedListener 182e0dac50fSopenharmony_ci * 183e0dac50fSopenharmony_ci * @brief Listener to observe windowStyle changed. 184e0dac50fSopenharmony_ci */ 185e0dac50fSopenharmony_ciclass IWindowStyleChangedListener : virtual public RefBase { 186e0dac50fSopenharmony_cipublic: 187e0dac50fSopenharmony_ci /** 188e0dac50fSopenharmony_ci * @brief Notify caller when window style changed. 189e0dac50fSopenharmony_ci * 190e0dac50fSopenharmony_ci * @param styleType 191e0dac50fSopenharmony_ci */ 192e0dac50fSopenharmony_ci virtual void OnWindowStyleUpdate(WindowStyleType styleType) = 0; 193e0dac50fSopenharmony_ci}; 194e0dac50fSopenharmony_ci 195e0dac50fSopenharmony_ci/** 196e0dac50fSopenharmony_ci * @class IWindowPidVisibilityChangedListener 197e0dac50fSopenharmony_ci * 198e0dac50fSopenharmony_ci * @brief Listener to observe window visibility that in same pid. 199e0dac50fSopenharmony_ci */ 200e0dac50fSopenharmony_ciclass IWindowPidVisibilityChangedListener : virtual public RefBase { 201e0dac50fSopenharmony_cipublic: 202e0dac50fSopenharmony_ci /** 203e0dac50fSopenharmony_ci * @brief Notify caller when window style changed. 204e0dac50fSopenharmony_ci * 205e0dac50fSopenharmony_ci * @param info 206e0dac50fSopenharmony_ci */ 207e0dac50fSopenharmony_ci virtual void NotifyWindowPidVisibilityChanged(const sptr<WindowPidVisibilityInfo>& info) = 0; 208e0dac50fSopenharmony_ci}; 209e0dac50fSopenharmony_ci 210e0dac50fSopenharmony_ci/** 211e0dac50fSopenharmony_ci * @class AccessibilityWindowInfo 212e0dac50fSopenharmony_ci * 213e0dac50fSopenharmony_ci * @brief Window info used for Accessibility. 214e0dac50fSopenharmony_ci */ 215e0dac50fSopenharmony_ciclass AccessibilityWindowInfo : public Parcelable { 216e0dac50fSopenharmony_cipublic: 217e0dac50fSopenharmony_ci /** 218e0dac50fSopenharmony_ci * @brief Default construct of AccessibilityWindowInfo. 219e0dac50fSopenharmony_ci */ 220e0dac50fSopenharmony_ci AccessibilityWindowInfo() = default; 221e0dac50fSopenharmony_ci /** 222e0dac50fSopenharmony_ci * @brief Default deconstruct of AccessibilityWindowInfo. 223e0dac50fSopenharmony_ci */ 224e0dac50fSopenharmony_ci ~AccessibilityWindowInfo() = default; 225e0dac50fSopenharmony_ci 226e0dac50fSopenharmony_ci /** 227e0dac50fSopenharmony_ci * @brief Marshalling AccessibilityWindowInfo. 228e0dac50fSopenharmony_ci * 229e0dac50fSopenharmony_ci * @param parcel Package of AccessibilityWindowInfo. 230e0dac50fSopenharmony_ci * @return True means marshall success, false means marshall failed. 231e0dac50fSopenharmony_ci */ 232e0dac50fSopenharmony_ci virtual bool Marshalling(Parcel& parcel) const override; 233e0dac50fSopenharmony_ci /** 234e0dac50fSopenharmony_ci * @brief Unmarshalling AccessibilityWindowInfo. 235e0dac50fSopenharmony_ci * 236e0dac50fSopenharmony_ci * @param parcel Package of AccessibilityWindowInfo. 237e0dac50fSopenharmony_ci * @return AccessibilityWindowInfo object. 238e0dac50fSopenharmony_ci */ 239e0dac50fSopenharmony_ci static AccessibilityWindowInfo* Unmarshalling(Parcel& parcel); 240e0dac50fSopenharmony_ci 241e0dac50fSopenharmony_ci int32_t wid_; 242e0dac50fSopenharmony_ci int32_t innerWid_; 243e0dac50fSopenharmony_ci int32_t uiNodeId_; 244e0dac50fSopenharmony_ci Rect windowRect_; 245e0dac50fSopenharmony_ci bool focused_ { false }; 246e0dac50fSopenharmony_ci bool isDecorEnable_ { false }; 247e0dac50fSopenharmony_ci DisplayId displayId_; 248e0dac50fSopenharmony_ci uint32_t layer_; 249e0dac50fSopenharmony_ci WindowMode mode_; 250e0dac50fSopenharmony_ci WindowType type_; 251e0dac50fSopenharmony_ci float scaleVal_; 252e0dac50fSopenharmony_ci float scaleX_; 253e0dac50fSopenharmony_ci float scaleY_; 254e0dac50fSopenharmony_ci std::string bundleName_; 255e0dac50fSopenharmony_ci std::vector<Rect> touchHotAreas_; 256e0dac50fSopenharmony_ci}; 257e0dac50fSopenharmony_ci 258e0dac50fSopenharmony_ci/** 259e0dac50fSopenharmony_ci * @class UnreliableWindowInfo 260e0dac50fSopenharmony_ci * 261e0dac50fSopenharmony_ci * @brief Unreliable Window Info. 262e0dac50fSopenharmony_ci */ 263e0dac50fSopenharmony_ciclass UnreliableWindowInfo : public Parcelable { 264e0dac50fSopenharmony_cipublic: 265e0dac50fSopenharmony_ci /** 266e0dac50fSopenharmony_ci * @brief Default construct of UnreliableWindowInfo. 267e0dac50fSopenharmony_ci */ 268e0dac50fSopenharmony_ci UnreliableWindowInfo() = default; 269e0dac50fSopenharmony_ci /** 270e0dac50fSopenharmony_ci * @brief Default deconstruct of UnreliableWindowInfo. 271e0dac50fSopenharmony_ci */ 272e0dac50fSopenharmony_ci ~UnreliableWindowInfo() = default; 273e0dac50fSopenharmony_ci 274e0dac50fSopenharmony_ci /** 275e0dac50fSopenharmony_ci * @brief Marshalling UnreliableWindowInfo. 276e0dac50fSopenharmony_ci * 277e0dac50fSopenharmony_ci * @param parcel Package of UnreliableWindowInfo. 278e0dac50fSopenharmony_ci * @return True means marshall success, false means marshall failed. 279e0dac50fSopenharmony_ci */ 280e0dac50fSopenharmony_ci virtual bool Marshalling(Parcel& parcel) const override; 281e0dac50fSopenharmony_ci /** 282e0dac50fSopenharmony_ci * @brief Unmarshalling UnreliableWindowInfo. 283e0dac50fSopenharmony_ci * 284e0dac50fSopenharmony_ci * @param parcel Package of UnreliableWindowInfo. 285e0dac50fSopenharmony_ci * @return UnreliableWindowInfo object. 286e0dac50fSopenharmony_ci */ 287e0dac50fSopenharmony_ci static UnreliableWindowInfo* Unmarshalling(Parcel& parcel); 288e0dac50fSopenharmony_ci 289e0dac50fSopenharmony_ci int32_t windowId_ { 0 }; 290e0dac50fSopenharmony_ci Rect windowRect_; 291e0dac50fSopenharmony_ci uint32_t zOrder_ { 0 }; 292e0dac50fSopenharmony_ci float floatingScale_ { 1.0f }; 293e0dac50fSopenharmony_ci float scaleX_ { 1.0f }; 294e0dac50fSopenharmony_ci float scaleY_ { 1.0f }; 295e0dac50fSopenharmony_ci}; 296e0dac50fSopenharmony_ci 297e0dac50fSopenharmony_ci/** 298e0dac50fSopenharmony_ci * @class IWindowUpdateListener 299e0dac50fSopenharmony_ci * 300e0dac50fSopenharmony_ci * @brief Listener to observe window update. 301e0dac50fSopenharmony_ci */ 302e0dac50fSopenharmony_ciclass IWindowUpdateListener : virtual public RefBase { 303e0dac50fSopenharmony_cipublic: 304e0dac50fSopenharmony_ci /** 305e0dac50fSopenharmony_ci * @brief Notify caller when AccessibilityWindowInfo update. 306e0dac50fSopenharmony_ci * 307e0dac50fSopenharmony_ci * @param infos Window info used for Accessibility. 308e0dac50fSopenharmony_ci * @param type Type for window update. 309e0dac50fSopenharmony_ci */ 310e0dac50fSopenharmony_ci virtual void OnWindowUpdate(const std::vector<sptr<AccessibilityWindowInfo>>& infos, WindowUpdateType type) = 0; 311e0dac50fSopenharmony_ci}; 312e0dac50fSopenharmony_ci 313e0dac50fSopenharmony_ci/** 314e0dac50fSopenharmony_ci * @class IWaterMarkFlagChangedListener 315e0dac50fSopenharmony_ci * 316e0dac50fSopenharmony_ci * @brief Listener to observe water mark flag changed. 317e0dac50fSopenharmony_ci */ 318e0dac50fSopenharmony_ciclass IWaterMarkFlagChangedListener : virtual public RefBase { 319e0dac50fSopenharmony_cipublic: 320e0dac50fSopenharmony_ci /** 321e0dac50fSopenharmony_ci * @brief Notify caller when water mark flag changed. 322e0dac50fSopenharmony_ci * 323e0dac50fSopenharmony_ci * @param showWaterMark True means show water mark, false means the opposite. 324e0dac50fSopenharmony_ci */ 325e0dac50fSopenharmony_ci virtual void OnWaterMarkFlagUpdate(bool showWaterMark) = 0; 326e0dac50fSopenharmony_ci}; 327e0dac50fSopenharmony_ci 328e0dac50fSopenharmony_ci/** 329e0dac50fSopenharmony_ci * @class IVisibleWindowNumChangedListener 330e0dac50fSopenharmony_ci * 331e0dac50fSopenharmony_ci * @brief Listener to observe visible main window num changed. 332e0dac50fSopenharmony_ci */ 333e0dac50fSopenharmony_ciclass IVisibleWindowNumChangedListener : virtual public RefBase { 334e0dac50fSopenharmony_cipublic: 335e0dac50fSopenharmony_ci /** 336e0dac50fSopenharmony_ci * @brief Notify caller when visible window num changed 337e0dac50fSopenharmony_ci * 338e0dac50fSopenharmony_ci * @param visibleWindowNum visible window num . 339e0dac50fSopenharmony_ci */ 340e0dac50fSopenharmony_ci virtual void OnVisibleWindowNumChange(const std::vector<VisibleWindowNumInfo>& visibleWindowNumInfo) = 0; 341e0dac50fSopenharmony_ci}; 342e0dac50fSopenharmony_ci 343e0dac50fSopenharmony_ci/** 344e0dac50fSopenharmony_ci * @class ICameraFloatWindowChangedListener 345e0dac50fSopenharmony_ci * 346e0dac50fSopenharmony_ci * @brief Listener to observe camera window changed. 347e0dac50fSopenharmony_ci */ 348e0dac50fSopenharmony_ciclass ICameraFloatWindowChangedListener : virtual public RefBase { 349e0dac50fSopenharmony_cipublic: 350e0dac50fSopenharmony_ci /** 351e0dac50fSopenharmony_ci * @brief Notify caller when camera window changed. 352e0dac50fSopenharmony_ci * 353e0dac50fSopenharmony_ci * @param accessTokenId Token id of camera window. 354e0dac50fSopenharmony_ci * @param isShowing True means camera is shown, false means the opposite. 355e0dac50fSopenharmony_ci */ 356e0dac50fSopenharmony_ci virtual void OnCameraFloatWindowChange(uint32_t accessTokenId, bool isShowing) = 0; 357e0dac50fSopenharmony_ci}; 358e0dac50fSopenharmony_ci 359e0dac50fSopenharmony_ci/** 360e0dac50fSopenharmony_ci * @class ICameraWindowChangedListener 361e0dac50fSopenharmony_ci * 362e0dac50fSopenharmony_ci * @brief Listener to observe camera window changed. 363e0dac50fSopenharmony_ci */ 364e0dac50fSopenharmony_ciclass ICameraWindowChangedListener : virtual public RefBase { 365e0dac50fSopenharmony_cipublic: 366e0dac50fSopenharmony_ci /** 367e0dac50fSopenharmony_ci * @brief Notify caller when camera window changed. 368e0dac50fSopenharmony_ci * 369e0dac50fSopenharmony_ci * @param accessTokenId Token id of camera window. 370e0dac50fSopenharmony_ci * @param isShowing True means camera is shown, false means the opposite. 371e0dac50fSopenharmony_ci */ 372e0dac50fSopenharmony_ci virtual void OnCameraWindowChange(uint32_t accessTokenId, bool isShowing) = 0; 373e0dac50fSopenharmony_ci}; 374e0dac50fSopenharmony_ci 375e0dac50fSopenharmony_ci/** 376e0dac50fSopenharmony_ci * @class IDisplayInfoChangedListener 377e0dac50fSopenharmony_ci * 378e0dac50fSopenharmony_ci * @brief Listener to observe display information changed. 379e0dac50fSopenharmony_ci */ 380e0dac50fSopenharmony_ciclass IDisplayInfoChangedListener : virtual public RefBase { 381e0dac50fSopenharmony_cipublic: 382e0dac50fSopenharmony_ci /** 383e0dac50fSopenharmony_ci * @brief Notify caller when display information changed. 384e0dac50fSopenharmony_ci * 385e0dac50fSopenharmony_ci * @param token token of ability. 386e0dac50fSopenharmony_ci * @param displayId ID of the display where the main window of the ability is located. 387e0dac50fSopenharmony_ci * @param density density of the display where the main window of the ability is located. 388e0dac50fSopenharmony_ci * @param orientation orientation of the display where the main window of the ability is located. 389e0dac50fSopenharmony_ci */ 390e0dac50fSopenharmony_ci virtual void OnDisplayInfoChange(const sptr<IRemoteObject>& token, 391e0dac50fSopenharmony_ci DisplayId displayId, float density, DisplayOrientation orientation) = 0; 392e0dac50fSopenharmony_ci}; 393e0dac50fSopenharmony_ci 394e0dac50fSopenharmony_ci/** 395e0dac50fSopenharmony_ci * @class IPiPStateChangedListener 396e0dac50fSopenharmony_ci * 397e0dac50fSopenharmony_ci * @brief Listener to observe PiP State changed. 398e0dac50fSopenharmony_ci */ 399e0dac50fSopenharmony_ciclass IPiPStateChangedListener : virtual public RefBase { 400e0dac50fSopenharmony_cipublic: 401e0dac50fSopenharmony_ci /** 402e0dac50fSopenharmony_ci * @brief Notify caller when PiP State changed. 403e0dac50fSopenharmony_ci * 404e0dac50fSopenharmony_ci * @param bundleName the name of the bundle in PiP state changed. 405e0dac50fSopenharmony_ci * @param isForeground the state of the bundle in PiP State. 406e0dac50fSopenharmony_ci */ 407e0dac50fSopenharmony_ci virtual void OnPiPStateChanged(const std::string& bundleName, bool isForeground) = 0; 408e0dac50fSopenharmony_ci}; 409e0dac50fSopenharmony_ci 410e0dac50fSopenharmony_ci/** 411e0dac50fSopenharmony_ci * @class WindowManager 412e0dac50fSopenharmony_ci * 413e0dac50fSopenharmony_ci * @brief WindowManager used to manage window. 414e0dac50fSopenharmony_ci */ 415e0dac50fSopenharmony_ciclass WindowManager { 416e0dac50fSopenharmony_ciWM_DECLARE_SINGLE_INSTANCE_BASE(WindowManager); 417e0dac50fSopenharmony_cifriend class WindowManagerAgent; 418e0dac50fSopenharmony_cifriend class WMSDeathRecipient; 419e0dac50fSopenharmony_cifriend class SSMDeathRecipient; 420e0dac50fSopenharmony_cipublic: 421e0dac50fSopenharmony_ci /** 422e0dac50fSopenharmony_ci * @brief Register WMS connection status changed listener. 423e0dac50fSopenharmony_ci * @attention Callable only by u0 system user. A process only supports successful registration once. 424e0dac50fSopenharmony_ci * When the foundation service restarts, you need to re-register the listener. 425e0dac50fSopenharmony_ci * If you want to re-register, please call UnregisterWMSConnectionChangedListener first. 426e0dac50fSopenharmony_ci * 427e0dac50fSopenharmony_ci * @param listener IWMSConnectionChangedListener. 428e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 429e0dac50fSopenharmony_ci */ 430e0dac50fSopenharmony_ci WMError RegisterWMSConnectionChangedListener(const sptr<IWMSConnectionChangedListener>& listener); 431e0dac50fSopenharmony_ci /** 432e0dac50fSopenharmony_ci * @brief Unregister WMS connection status changed listener. 433e0dac50fSopenharmony_ci * @attention Callable only by u0 system user. 434e0dac50fSopenharmony_ci * 435e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 436e0dac50fSopenharmony_ci */ 437e0dac50fSopenharmony_ci WMError UnregisterWMSConnectionChangedListener(); 438e0dac50fSopenharmony_ci /** 439e0dac50fSopenharmony_ci * @brief Register focus changed listener. 440e0dac50fSopenharmony_ci * 441e0dac50fSopenharmony_ci * @param listener IFocusChangedListener. 442e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 443e0dac50fSopenharmony_ci */ 444e0dac50fSopenharmony_ci WMError RegisterFocusChangedListener(const sptr<IFocusChangedListener>& listener); 445e0dac50fSopenharmony_ci /** 446e0dac50fSopenharmony_ci * @brief Unregister focus changed listener. 447e0dac50fSopenharmony_ci * 448e0dac50fSopenharmony_ci * @param listener IFocusChangedListener. 449e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 450e0dac50fSopenharmony_ci */ 451e0dac50fSopenharmony_ci WMError UnregisterFocusChangedListener(const sptr<IFocusChangedListener>& listener); 452e0dac50fSopenharmony_ci /** 453e0dac50fSopenharmony_ci * @brief Register window mode listener. 454e0dac50fSopenharmony_ci * 455e0dac50fSopenharmony_ci * @param listener IWindowModeChangedListener. 456e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 457e0dac50fSopenharmony_ci */ 458e0dac50fSopenharmony_ci WMError RegisterWindowModeChangedListener(const sptr<IWindowModeChangedListener>& listener); 459e0dac50fSopenharmony_ci /** 460e0dac50fSopenharmony_ci * @brief Unregister window mode listener. 461e0dac50fSopenharmony_ci * 462e0dac50fSopenharmony_ci * @param listener IWindowModeChangedListener. 463e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 464e0dac50fSopenharmony_ci */ 465e0dac50fSopenharmony_ci WMError UnregisterWindowModeChangedListener(const sptr<IWindowModeChangedListener>& listener); 466e0dac50fSopenharmony_ci /** 467e0dac50fSopenharmony_ci * @brief Get window mode type. 468e0dac50fSopenharmony_ci * 469e0dac50fSopenharmony_ci * @param void 470e0dac50fSopenharmony_ci * @return WM_OK means get success, others means get failed. 471e0dac50fSopenharmony_ci */ 472e0dac50fSopenharmony_ci WMError GetWindowModeType(WindowModeType& windowModeType) const; 473e0dac50fSopenharmony_ci /** 474e0dac50fSopenharmony_ci * @brief Register system bar changed listener. 475e0dac50fSopenharmony_ci * 476e0dac50fSopenharmony_ci * @param listener ISystemBarChangedListener. 477e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 478e0dac50fSopenharmony_ci */ 479e0dac50fSopenharmony_ci WMError RegisterSystemBarChangedListener(const sptr<ISystemBarChangedListener>& listener); 480e0dac50fSopenharmony_ci /** 481e0dac50fSopenharmony_ci * @brief Unregister system bar changed listener. 482e0dac50fSopenharmony_ci * 483e0dac50fSopenharmony_ci * @param listener ISystemBarChangedListener. 484e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 485e0dac50fSopenharmony_ci */ 486e0dac50fSopenharmony_ci WMError UnregisterSystemBarChangedListener(const sptr<ISystemBarChangedListener>& listener); 487e0dac50fSopenharmony_ci /** 488e0dac50fSopenharmony_ci * @brief Register window updated listener. 489e0dac50fSopenharmony_ci * 490e0dac50fSopenharmony_ci * @param listener IWindowUpdateListener. 491e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 492e0dac50fSopenharmony_ci */ 493e0dac50fSopenharmony_ci WMError RegisterWindowUpdateListener(const sptr<IWindowUpdateListener>& listener); 494e0dac50fSopenharmony_ci /** 495e0dac50fSopenharmony_ci * @brief Unregister window updated listener. 496e0dac50fSopenharmony_ci * 497e0dac50fSopenharmony_ci * @param listener IWindowUpdateListener. 498e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 499e0dac50fSopenharmony_ci */ 500e0dac50fSopenharmony_ci WMError UnregisterWindowUpdateListener(const sptr<IWindowUpdateListener>& listener); 501e0dac50fSopenharmony_ci /** 502e0dac50fSopenharmony_ci * @brief Register visibility changed listener. 503e0dac50fSopenharmony_ci * 504e0dac50fSopenharmony_ci * @param listener IVisibilityChangedListener. 505e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 506e0dac50fSopenharmony_ci */ 507e0dac50fSopenharmony_ci WMError RegisterVisibilityChangedListener(const sptr<IVisibilityChangedListener>& listener); 508e0dac50fSopenharmony_ci /** 509e0dac50fSopenharmony_ci * @brief Unregister visibility changed listener. 510e0dac50fSopenharmony_ci * 511e0dac50fSopenharmony_ci * @param listener IVisibilityChangedListener. 512e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 513e0dac50fSopenharmony_ci */ 514e0dac50fSopenharmony_ci WMError UnregisterVisibilityChangedListener(const sptr<IVisibilityChangedListener>& listener); 515e0dac50fSopenharmony_ci /** 516e0dac50fSopenharmony_ci * @brief Register drawingcontent changed listener. 517e0dac50fSopenharmony_ci * 518e0dac50fSopenharmony_ci * @param listener IDrawingContentChangedListener. 519e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 520e0dac50fSopenharmony_ci */ 521e0dac50fSopenharmony_ci WMError RegisterDrawingContentChangedListener(const sptr<IDrawingContentChangedListener>& listener); 522e0dac50fSopenharmony_ci 523e0dac50fSopenharmony_ci /** 524e0dac50fSopenharmony_ci * @brief Unregister drawingcontent changed listener. 525e0dac50fSopenharmony_ci * 526e0dac50fSopenharmony_ci * @param listener IDrawingContentChangedListener. 527e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 528e0dac50fSopenharmony_ci */ 529e0dac50fSopenharmony_ci WMError UnregisterDrawingContentChangedListener(const sptr<IDrawingContentChangedListener>& listener); 530e0dac50fSopenharmony_ci 531e0dac50fSopenharmony_ci /** 532e0dac50fSopenharmony_ci * @brief Register camera float window changed listener. 533e0dac50fSopenharmony_ci * 534e0dac50fSopenharmony_ci * @param listener ICameraFloatWindowChangedListener. 535e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 536e0dac50fSopenharmony_ci */ 537e0dac50fSopenharmony_ci WMError RegisterCameraFloatWindowChangedListener(const sptr<ICameraFloatWindowChangedListener>& listener); 538e0dac50fSopenharmony_ci /** 539e0dac50fSopenharmony_ci * @brief Unregister camera float window changed listener. 540e0dac50fSopenharmony_ci * 541e0dac50fSopenharmony_ci * @param listener ICameraFloatWindowChangedListener. 542e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 543e0dac50fSopenharmony_ci */ 544e0dac50fSopenharmony_ci WMError UnregisterCameraFloatWindowChangedListener(const sptr<ICameraFloatWindowChangedListener>& listener); 545e0dac50fSopenharmony_ci /** 546e0dac50fSopenharmony_ci * @brief Register water mark flag changed listener. 547e0dac50fSopenharmony_ci * 548e0dac50fSopenharmony_ci * @param listener IWaterMarkFlagChangedListener. 549e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 550e0dac50fSopenharmony_ci */ 551e0dac50fSopenharmony_ci WMError RegisterWaterMarkFlagChangedListener(const sptr<IWaterMarkFlagChangedListener>& listener); 552e0dac50fSopenharmony_ci /** 553e0dac50fSopenharmony_ci * @brief Unregister water mark flag changed listener. 554e0dac50fSopenharmony_ci * 555e0dac50fSopenharmony_ci * @param listener IWaterMarkFlagChangedListener. 556e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 557e0dac50fSopenharmony_ci */ 558e0dac50fSopenharmony_ci WMError UnregisterWaterMarkFlagChangedListener(const sptr<IWaterMarkFlagChangedListener>& listener); 559e0dac50fSopenharmony_ci /** 560e0dac50fSopenharmony_ci * @brief Register gesture navigation enabled changed listener. 561e0dac50fSopenharmony_ci * 562e0dac50fSopenharmony_ci * @param listener IGestureNavigationEnabledChangedListener. 563e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 564e0dac50fSopenharmony_ci */ 565e0dac50fSopenharmony_ci WMError RegisterGestureNavigationEnabledChangedListener( 566e0dac50fSopenharmony_ci const sptr<IGestureNavigationEnabledChangedListener>& listener); 567e0dac50fSopenharmony_ci /** 568e0dac50fSopenharmony_ci * @brief Unregister gesture navigation enabled changed listener. 569e0dac50fSopenharmony_ci * 570e0dac50fSopenharmony_ci * @param listener IGestureNavigationEnabledChangedListener. 571e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 572e0dac50fSopenharmony_ci */ 573e0dac50fSopenharmony_ci WMError UnregisterGestureNavigationEnabledChangedListener( 574e0dac50fSopenharmony_ci const sptr<IGestureNavigationEnabledChangedListener>& listener); 575e0dac50fSopenharmony_ci 576e0dac50fSopenharmony_ci /** 577e0dac50fSopenharmony_ci * @brief register display information changed listener. 578e0dac50fSopenharmony_ci * 579e0dac50fSopenharmony_ci * @param token token of ability. 580e0dac50fSopenharmony_ci * @param listener IDisplayInfoChangedListener. 581e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 582e0dac50fSopenharmony_ci */ 583e0dac50fSopenharmony_ci WMError RegisterDisplayInfoChangedListener(const sptr<IRemoteObject>& token, 584e0dac50fSopenharmony_ci const sptr<IDisplayInfoChangedListener>& listener); 585e0dac50fSopenharmony_ci 586e0dac50fSopenharmony_ci /** 587e0dac50fSopenharmony_ci * @brief unregister display info changed listener.Before the ability is destroyed, the 588e0dac50fSopenharmony_ci * UnregisterDisplayInfoChangedListener interface must be invoked. 589e0dac50fSopenharmony_ci * Otherwise, the sptr token may be destroyed abnormally. 590e0dac50fSopenharmony_ci * 591e0dac50fSopenharmony_ci * @param token token of ability. 592e0dac50fSopenharmony_ci * @param listener IDisplayInfoChangedListener. 593e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 594e0dac50fSopenharmony_ci */ 595e0dac50fSopenharmony_ci WMError UnregisterDisplayInfoChangedListener(const sptr<IRemoteObject>& token, 596e0dac50fSopenharmony_ci const sptr<IDisplayInfoChangedListener>& listener); 597e0dac50fSopenharmony_ci 598e0dac50fSopenharmony_ci /** 599e0dac50fSopenharmony_ci * @brief Register window in same pid visibility changed listener. 600e0dac50fSopenharmony_ci * @caller SA 601e0dac50fSopenharmony_ci * @permission SA permission 602e0dac50fSopenharmony_ci * 603e0dac50fSopenharmony_ci * @param listener IWindowPidVisibilityChangedListener. 604e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 605e0dac50fSopenharmony_ci */ 606e0dac50fSopenharmony_ci WMError RegisterWindowPidVisibilityChangedListener(const sptr<IWindowPidVisibilityChangedListener>& listener); 607e0dac50fSopenharmony_ci 608e0dac50fSopenharmony_ci /** 609e0dac50fSopenharmony_ci * @brief Unregister window in same pid visibility changed listener. 610e0dac50fSopenharmony_ci * 611e0dac50fSopenharmony_ci * @param listener IWindowPidVisibilityChangedListener. 612e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 613e0dac50fSopenharmony_ci */ 614e0dac50fSopenharmony_ci WMError UnregisterWindowPidVisibilityChangedListener(const sptr<IWindowPidVisibilityChangedListener>& listener); 615e0dac50fSopenharmony_ci 616e0dac50fSopenharmony_ci /** 617e0dac50fSopenharmony_ci * @brief notify display information change. 618e0dac50fSopenharmony_ci * 619e0dac50fSopenharmony_ci * @param token ability token. 620e0dac50fSopenharmony_ci * @param displayid ID of the display where the main window of the ability is located 621e0dac50fSopenharmony_ci * @param density density of the display where the main window of the ability is located. 622e0dac50fSopenharmony_ci * @param orientation orientation of the display where the main window of the ability is located. 623e0dac50fSopenharmony_ci * @return WM_OK means notify success, others means notify failed. 624e0dac50fSopenharmony_ci */ 625e0dac50fSopenharmony_ci WMError NotifyDisplayInfoChange(const sptr<IRemoteObject>& token, DisplayId displayId, 626e0dac50fSopenharmony_ci float density, DisplayOrientation orientation); 627e0dac50fSopenharmony_ci 628e0dac50fSopenharmony_ci /** 629e0dac50fSopenharmony_ci * @brief Minimize all app window. 630e0dac50fSopenharmony_ci * 631e0dac50fSopenharmony_ci * @param displayId Display id. 632e0dac50fSopenharmony_ci * @return WM_OK means minimize success, others means minimize failed. 633e0dac50fSopenharmony_ci */ 634e0dac50fSopenharmony_ci WMError MinimizeAllAppWindows(DisplayId displayId); 635e0dac50fSopenharmony_ci /** 636e0dac50fSopenharmony_ci * @brief Toggle all app windows to the foreground. 637e0dac50fSopenharmony_ci * 638e0dac50fSopenharmony_ci * @return WM_OK means toggle success, others means toggle failed. 639e0dac50fSopenharmony_ci */ 640e0dac50fSopenharmony_ci WMError ToggleShownStateForAllAppWindows(); 641e0dac50fSopenharmony_ci /** 642e0dac50fSopenharmony_ci * @brief Set window layout mode. 643e0dac50fSopenharmony_ci * 644e0dac50fSopenharmony_ci * @param mode Window layout mode. 645e0dac50fSopenharmony_ci * @return WM_OK means set success, others means set failed. 646e0dac50fSopenharmony_ci */ 647e0dac50fSopenharmony_ci WMError SetWindowLayoutMode(WindowLayoutMode mode); 648e0dac50fSopenharmony_ci /** 649e0dac50fSopenharmony_ci * @brief Get accessibility window info. 650e0dac50fSopenharmony_ci * 651e0dac50fSopenharmony_ci * @param infos WindowInfos used for Accessibility. 652e0dac50fSopenharmony_ci * @return WM_OK means get success, others means get failed. 653e0dac50fSopenharmony_ci */ 654e0dac50fSopenharmony_ci WMError GetAccessibilityWindowInfo(std::vector<sptr<AccessibilityWindowInfo>>& infos) const; 655e0dac50fSopenharmony_ci /** 656e0dac50fSopenharmony_ci * @brief Get unreliable window info. 657e0dac50fSopenharmony_ci * 658e0dac50fSopenharmony_ci * @param infos Unreliable Window Info. 659e0dac50fSopenharmony_ci * @return WM_OK means get success, others means get failed. 660e0dac50fSopenharmony_ci */ 661e0dac50fSopenharmony_ci WMError GetUnreliableWindowInfo(int32_t windowId, 662e0dac50fSopenharmony_ci std::vector<sptr<UnreliableWindowInfo>>& infos) const; 663e0dac50fSopenharmony_ci /** 664e0dac50fSopenharmony_ci * @brief Get visibility window info. 665e0dac50fSopenharmony_ci * 666e0dac50fSopenharmony_ci * @param infos Visible window infos 667e0dac50fSopenharmony_ci * @return WM_OK means get success, others means get failed. 668e0dac50fSopenharmony_ci */ 669e0dac50fSopenharmony_ci WMError GetVisibilityWindowInfo(std::vector<sptr<WindowVisibilityInfo>>& infos) const; 670e0dac50fSopenharmony_ci /** 671e0dac50fSopenharmony_ci * @brief Set gesture navigation enabled. 672e0dac50fSopenharmony_ci * 673e0dac50fSopenharmony_ci * @param enable True means set gesture on, false means set gesture off. 674e0dac50fSopenharmony_ci * @return WM_OK means set success, others means set failed. 675e0dac50fSopenharmony_ci */ 676e0dac50fSopenharmony_ci WMError SetGestureNavigationEnabled(bool enable) const; 677e0dac50fSopenharmony_ci 678e0dac50fSopenharmony_ci /** 679e0dac50fSopenharmony_ci * @brief Get focus window. 680e0dac50fSopenharmony_ci * 681e0dac50fSopenharmony_ci * @param focusInfo Focus window info. 682e0dac50fSopenharmony_ci * @return FocusChangeInfo object about focus window. 683e0dac50fSopenharmony_ci */ 684e0dac50fSopenharmony_ci void GetFocusWindowInfo(FocusChangeInfo& focusInfo); 685e0dac50fSopenharmony_ci 686e0dac50fSopenharmony_ci /** 687e0dac50fSopenharmony_ci * @brief Dump all session info 688e0dac50fSopenharmony_ci * 689e0dac50fSopenharmony_ci * @param infos session infos 690e0dac50fSopenharmony_ci * @return WM_OK means set success, others means set failed. 691e0dac50fSopenharmony_ci */ 692e0dac50fSopenharmony_ci WMError DumpSessionAll(std::vector<std::string>& infos); 693e0dac50fSopenharmony_ci 694e0dac50fSopenharmony_ci /** 695e0dac50fSopenharmony_ci * @brief Dump session info with id 696e0dac50fSopenharmony_ci * 697e0dac50fSopenharmony_ci * @param infos session infos 698e0dac50fSopenharmony_ci * @return WM_OK means set success, others means set failed. 699e0dac50fSopenharmony_ci */ 700e0dac50fSopenharmony_ci WMError DumpSessionWithId(int32_t persistentId, std::vector<std::string>& infos); 701e0dac50fSopenharmony_ci 702e0dac50fSopenharmony_ci /** 703e0dac50fSopenharmony_ci * @brief Get uiContent remote object 704e0dac50fSopenharmony_ci * 705e0dac50fSopenharmony_ci * @param windowId windowId 706e0dac50fSopenharmony_ci * @param uiContentRemoteObj uiContentRemoteObj 707e0dac50fSopenharmony_ci * @return WM_OK if successfully retrieved uiContentRemoteObj 708e0dac50fSopenharmony_ci */ 709e0dac50fSopenharmony_ci WMError GetUIContentRemoteObj(int32_t windowId, sptr<IRemoteObject>& uiContentRemoteObj); 710e0dac50fSopenharmony_ci 711e0dac50fSopenharmony_ci /** 712e0dac50fSopenharmony_ci * @brief raise window to top by windowId 713e0dac50fSopenharmony_ci * 714e0dac50fSopenharmony_ci * @param persistentId this window to raise 715e0dac50fSopenharmony_ci * @return WM_OK if raise success 716e0dac50fSopenharmony_ci */ 717e0dac50fSopenharmony_ci WMError RaiseWindowToTop(int32_t persistentId); 718e0dac50fSopenharmony_ci 719e0dac50fSopenharmony_ci /** 720e0dac50fSopenharmony_ci * @brief notify window extension visibility change 721e0dac50fSopenharmony_ci * 722e0dac50fSopenharmony_ci * @param pid process id 723e0dac50fSopenharmony_ci * @param uid user id 724e0dac50fSopenharmony_ci * @param visible visibility 725e0dac50fSopenharmony_ci * @return WM_OK means notify success, others means notify failed. 726e0dac50fSopenharmony_ci */ 727e0dac50fSopenharmony_ci WMError NotifyWindowExtensionVisibilityChange(int32_t pid, int32_t uid, bool visible); 728e0dac50fSopenharmony_ci 729e0dac50fSopenharmony_ci /** 730e0dac50fSopenharmony_ci * @brief Shift window focus within the same application. Only main window and subwindow. 731e0dac50fSopenharmony_ci * 732e0dac50fSopenharmony_ci * @param sourcePersistentId Window id which the focus shift from 733e0dac50fSopenharmony_ci * @param targetPersistentId Window id which the focus shift to 734e0dac50fSopenharmony_ci * @return WM_OK means shift window focus success, others means failed. 735e0dac50fSopenharmony_ci */ 736e0dac50fSopenharmony_ci WMError ShiftAppWindowFocus(int32_t sourcePersistentId, int32_t targetPersistentId); 737e0dac50fSopenharmony_ci 738e0dac50fSopenharmony_ci /** 739e0dac50fSopenharmony_ci * @brief Get snapshot by window id. 740e0dac50fSopenharmony_ci * 741e0dac50fSopenharmony_ci * @param windowId Window id which want to snapshot. 742e0dac50fSopenharmony_ci * @param pixelMap Snapshot output pixel map. 743e0dac50fSopenharmony_ci * @return WM_OK means get snapshot success, others means failed. 744e0dac50fSopenharmony_ci */ 745e0dac50fSopenharmony_ci WMError GetSnapshotByWindowId(int32_t windowId, std::shared_ptr<Media::PixelMap>& pixelMap); 746e0dac50fSopenharmony_ci 747e0dac50fSopenharmony_ci /** 748e0dac50fSopenharmony_ci * @brief Register visible main window num changed listener. 749e0dac50fSopenharmony_ci * 750e0dac50fSopenharmony_ci * @param listener IVisibleWindowNumChangedListener. 751e0dac50fSopenharmony_ci * @return WM_OK means register success, others means register failed. 752e0dac50fSopenharmony_ci */ 753e0dac50fSopenharmony_ci WMError RegisterVisibleWindowNumChangedListener(const sptr<IVisibleWindowNumChangedListener>& listener); 754e0dac50fSopenharmony_ci /** 755e0dac50fSopenharmony_ci * @brief Unregister visible main window num changed listener. 756e0dac50fSopenharmony_ci * 757e0dac50fSopenharmony_ci * @param listener IVisibleWindowNumChangedListener. 758e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 759e0dac50fSopenharmony_ci */ 760e0dac50fSopenharmony_ci WMError UnregisterVisibleWindowNumChangedListener(const sptr<IVisibleWindowNumChangedListener>& listener); 761e0dac50fSopenharmony_ci 762e0dac50fSopenharmony_ci /** 763e0dac50fSopenharmony_ci * @brief Register WindowStyle changed listener. 764e0dac50fSopenharmony_ci * 765e0dac50fSopenharmony_ci * @param listener IWindowStyleChangedListener 766e0dac50fSopenharmony_ci * @return WM_OK means register success, others means unregister failed. 767e0dac50fSopenharmony_ci */ 768e0dac50fSopenharmony_ci WMError RegisterWindowStyleChangedListener(const sptr<IWindowStyleChangedListener>& listener); 769e0dac50fSopenharmony_ci 770e0dac50fSopenharmony_ci /** 771e0dac50fSopenharmony_ci * @brief Unregister WindowStyle changed listener. 772e0dac50fSopenharmony_ci * 773e0dac50fSopenharmony_ci * @param listener IWindowStyleChangedListener 774e0dac50fSopenharmony_ci * @return WM_OK means unregister success, others means unregister failed. 775e0dac50fSopenharmony_ci */ 776e0dac50fSopenharmony_ci WMError UnregisterWindowStyleChangedListener(const sptr<IWindowStyleChangedListener>& listener); 777e0dac50fSopenharmony_ci 778e0dac50fSopenharmony_ci /** 779e0dac50fSopenharmony_ci * @brief Skip Snapshot for app process. 780e0dac50fSopenharmony_ci * 781e0dac50fSopenharmony_ci * @param pid process id 782e0dac50fSopenharmony_ci * @param skip True means skip, false means not skip. 783e0dac50fSopenharmony_ci * @return WM_OK means snapshot skip success, others means snapshot skip failed. 784e0dac50fSopenharmony_ci */ 785e0dac50fSopenharmony_ci WMError SkipSnapshotForAppProcess(int32_t pid, bool skip); 786e0dac50fSopenharmony_ci 787e0dac50fSopenharmony_ci /** 788e0dac50fSopenharmony_ci * @brief Get window style type. 789e0dac50fSopenharmony_ci * 790e0dac50fSopenharmony_ci * @param windowStyleType WindowType 791e0dac50fSopenharmony_ci * @return @return WM_OK means get window style success, others means failed. 792e0dac50fSopenharmony_ci */ 793e0dac50fSopenharmony_ci WindowStyleType GetWindowStyleType(); 794e0dac50fSopenharmony_ci 795e0dac50fSopenharmony_ci /** 796e0dac50fSopenharmony_ci * @brief set process watermark. 797e0dac50fSopenharmony_ci * 798e0dac50fSopenharmony_ci * @param pid pid 799e0dac50fSopenharmony_ci * @param watermarkName watermark picture name 800e0dac50fSopenharmony_ci * @param isEnabled add or remove 801e0dac50fSopenharmony_ci * @return @return WM_OK means set process watermark success, others means failed. 802e0dac50fSopenharmony_ci */ 803e0dac50fSopenharmony_ci WMError SetProcessWatermark(int32_t pid, const std::string& watermarkName, bool isEnabled); 804e0dac50fSopenharmony_ci 805e0dac50fSopenharmony_ci /** 806e0dac50fSopenharmony_ci * @brief Get window ids by coordinate. 807e0dac50fSopenharmony_ci * 808e0dac50fSopenharmony_ci * @param displayId display id 809e0dac50fSopenharmony_ci * @param windowNumber indicates the number of query windows 810e0dac50fSopenharmony_ci * @param x x-coordinate of the window 811e0dac50fSopenharmony_ci * @param y y-coordinate of the window 812e0dac50fSopenharmony_ci * @param windowIds array of window id 813e0dac50fSopenharmony_ci * @return WM_OK means get success, others means get failed. 814e0dac50fSopenharmony_ci */ 815e0dac50fSopenharmony_ci WMError GetWindowIdsByCoordinate(DisplayId displayId, int32_t windowNumber, 816e0dac50fSopenharmony_ci int32_t x, int32_t y, std::vector<int32_t>& windowIds) const; 817e0dac50fSopenharmony_ci 818e0dac50fSopenharmony_ci /** 819e0dac50fSopenharmony_ci * @brief Release screen lock of foreground sessions. 820e0dac50fSopenharmony_ci * 821e0dac50fSopenharmony_ci * @return WM_OK means release success, others means failed. 822e0dac50fSopenharmony_ci */ 823e0dac50fSopenharmony_ci WMError ReleaseForegroundSessionScreenLock(); 824e0dac50fSopenharmony_ci 825e0dac50fSopenharmony_ciprivate: 826e0dac50fSopenharmony_ci WindowManager(); 827e0dac50fSopenharmony_ci ~WindowManager(); 828e0dac50fSopenharmony_ci std::recursive_mutex mutex_; 829e0dac50fSopenharmony_ci class Impl; 830e0dac50fSopenharmony_ci std::unique_ptr<Impl> pImpl_; 831e0dac50fSopenharmony_ci bool destroyed_ = false; 832e0dac50fSopenharmony_ci 833e0dac50fSopenharmony_ci void OnWMSConnectionChanged(int32_t userId, int32_t screenId, bool isConnected) const; 834e0dac50fSopenharmony_ci void UpdateFocusStatus(uint32_t windowId, const sptr<IRemoteObject>& abilityToken, WindowType windowType, 835e0dac50fSopenharmony_ci DisplayId displayId, bool focused) const; 836e0dac50fSopenharmony_ci void UpdateFocusChangeInfo(const sptr<FocusChangeInfo>& focusChangeInfo, bool focused) const; 837e0dac50fSopenharmony_ci void UpdateWindowModeTypeInfo(WindowModeType type) const; 838e0dac50fSopenharmony_ci void UpdateSystemBarRegionTints(DisplayId displayId, const SystemBarRegionTints& tints) const; 839e0dac50fSopenharmony_ci void NotifyAccessibilityWindowInfo(const std::vector<sptr<AccessibilityWindowInfo>>& infos, 840e0dac50fSopenharmony_ci WindowUpdateType type) const; 841e0dac50fSopenharmony_ci void UpdateWindowVisibilityInfo( 842e0dac50fSopenharmony_ci const std::vector<sptr<WindowVisibilityInfo>>& windowVisibilityInfos) const; 843e0dac50fSopenharmony_ci void UpdateWindowDrawingContentInfo( 844e0dac50fSopenharmony_ci const std::vector<sptr<WindowDrawingContentInfo>>& windowDrawingContentInfos) const; 845e0dac50fSopenharmony_ci void UpdateCameraFloatWindowStatus(uint32_t accessTokenId, bool isShowing) const; 846e0dac50fSopenharmony_ci void NotifyWaterMarkFlagChangedResult(bool showWaterMark) const; 847e0dac50fSopenharmony_ci void NotifyGestureNavigationEnabledResult(bool enable) const; 848e0dac50fSopenharmony_ci void UpdateVisibleWindowNum(const std::vector<VisibleWindowNumInfo>& visibleWindowNumInfo); 849e0dac50fSopenharmony_ci WMError NotifyWindowStyleChange(WindowStyleType type); 850e0dac50fSopenharmony_ci void NotifyWindowPidVisibilityChanged(const sptr<WindowPidVisibilityInfo>& info) const; 851e0dac50fSopenharmony_ci}; 852e0dac50fSopenharmony_ci} // namespace Rosen 853e0dac50fSopenharmony_ci} // namespace OHOS 854e0dac50fSopenharmony_ci 855e0dac50fSopenharmony_ci#endif // OHOS_ROSEN_WINDOW_MANAGER_H 856