1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2024 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 INTERFACES_INNERKITS_WINDOW_SCENE_H 17e0dac50fSopenharmony_ci#define INTERFACES_INNERKITS_WINDOW_SCENE_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <mutex> 20e0dac50fSopenharmony_ci 21e0dac50fSopenharmony_ci#include "window.h" 22e0dac50fSopenharmony_ci#include "window_option.h" 23e0dac50fSopenharmony_ci#include "wm_common.h" 24e0dac50fSopenharmony_ci 25e0dac50fSopenharmony_cinamespace OHOS::AppExecFwk { 26e0dac50fSopenharmony_ciclass Configuration; 27e0dac50fSopenharmony_ci} 28e0dac50fSopenharmony_ci 29e0dac50fSopenharmony_cinamespace OHOS { 30e0dac50fSopenharmony_cinamespace Rosen { 31e0dac50fSopenharmony_ciclass WindowScene : public RefBase { 32e0dac50fSopenharmony_cipublic: 33e0dac50fSopenharmony_ci /** 34e0dac50fSopenharmony_ci * Default constructor used to create an empty WindowScene instance. 35e0dac50fSopenharmony_ci */ 36e0dac50fSopenharmony_ci WindowScene() = default; 37e0dac50fSopenharmony_ci 38e0dac50fSopenharmony_ci /** 39e0dac50fSopenharmony_ci * Default deconstructor used to deconstruct. 40e0dac50fSopenharmony_ci * 41e0dac50fSopenharmony_ci */ 42e0dac50fSopenharmony_ci ~WindowScene(); 43e0dac50fSopenharmony_ci 44e0dac50fSopenharmony_ci /** 45e0dac50fSopenharmony_ci * Init a WindowScene instance based on the parameters displayId, context, listener and option. 46e0dac50fSopenharmony_ci * 47e0dac50fSopenharmony_ci * @param displayId the id of current display 48e0dac50fSopenharmony_ci * @param context current ability context 49e0dac50fSopenharmony_ci * @param listener the life cycle listener of the window 50e0dac50fSopenharmony_ci * @param option the settings for window, such as WindowType, width, height, etc 51e0dac50fSopenharmony_ci * @return the error code of window 52e0dac50fSopenharmony_ci */ 53e0dac50fSopenharmony_ci WMError Init(DisplayId displayId, const std::shared_ptr<AbilityRuntime::Context>& context, 54e0dac50fSopenharmony_ci sptr<IWindowLifeCycle>& listener, sptr<WindowOption> option = nullptr); 55e0dac50fSopenharmony_ci 56e0dac50fSopenharmony_ci /** 57e0dac50fSopenharmony_ci * Init a WindowScene instance based on the parameters displayId, context, listener and option. 58e0dac50fSopenharmony_ci * 59e0dac50fSopenharmony_ci * @param displayId the id of current display 60e0dac50fSopenharmony_ci * @param context current ability context 61e0dac50fSopenharmony_ci * @param listener the life cycle listener of the window 62e0dac50fSopenharmony_ci * @param option the settings for window, such as WindowType, width, height, etc 63e0dac50fSopenharmony_ci * @param iSession session token of window session 64e0dac50fSopenharmony_ci * @param identityToken identity token of sceneSession 65e0dac50fSopenharmony_ci * @return the error code of window 66e0dac50fSopenharmony_ci */ 67e0dac50fSopenharmony_ci WMError Init(DisplayId displayId, const std::shared_ptr<AbilityRuntime::Context>& context, 68e0dac50fSopenharmony_ci sptr<IWindowLifeCycle>& listener, sptr<WindowOption> option, const sptr<IRemoteObject>& iSession, 69e0dac50fSopenharmony_ci const std::string& identityToken = ""); 70e0dac50fSopenharmony_ci 71e0dac50fSopenharmony_ci /** 72e0dac50fSopenharmony_ci * Create a window instance based on the parameters windowName and option. 73e0dac50fSopenharmony_ci * 74e0dac50fSopenharmony_ci * @param windowName the id of this window 75e0dac50fSopenharmony_ci * @param option the settings for window, such as WindowType, width, height, etc. 76e0dac50fSopenharmony_ci * @return the shared pointer of window 77e0dac50fSopenharmony_ci */ 78e0dac50fSopenharmony_ci sptr<Window> CreateWindow(const std::string& windowName, sptr<WindowOption>& option) const; 79e0dac50fSopenharmony_ci 80e0dac50fSopenharmony_ci /** 81e0dac50fSopenharmony_ci * Get shared pointer of main window. 82e0dac50fSopenharmony_ci * Locks mainWindowMutex_ 83e0dac50fSopenharmony_ci * 84e0dac50fSopenharmony_ci * @return the shared pointer of window 85e0dac50fSopenharmony_ci */ 86e0dac50fSopenharmony_ci sptr<Window> GetMainWindow() const; 87e0dac50fSopenharmony_ci 88e0dac50fSopenharmony_ci /** 89e0dac50fSopenharmony_ci * Get a set of sub window. 90e0dac50fSopenharmony_ci * 91e0dac50fSopenharmony_ci * @return a set of sub window 92e0dac50fSopenharmony_ci */ 93e0dac50fSopenharmony_ci std::vector<sptr<Window>> GetSubWindow(); 94e0dac50fSopenharmony_ci 95e0dac50fSopenharmony_ci /** 96e0dac50fSopenharmony_ci * window go foreground. 97e0dac50fSopenharmony_ci * 98e0dac50fSopenharmony_ci * @param reason the reason of window to go to foreground, default 0. 99e0dac50fSopenharmony_ci * @return the error code of window 100e0dac50fSopenharmony_ci */ 101e0dac50fSopenharmony_ci WMError GoForeground(uint32_t reason = 0); 102e0dac50fSopenharmony_ci 103e0dac50fSopenharmony_ci /** 104e0dac50fSopenharmony_ci * Window go background. 105e0dac50fSopenharmony_ci * 106e0dac50fSopenharmony_ci * @param reason the reason of window to go to background, default 0. 107e0dac50fSopenharmony_ci * @return the error code of window 108e0dac50fSopenharmony_ci */ 109e0dac50fSopenharmony_ci WMError GoBackground(uint32_t reason = 0); 110e0dac50fSopenharmony_ci 111e0dac50fSopenharmony_ci /** 112e0dac50fSopenharmony_ci * Window go distroy. 113e0dac50fSopenharmony_ci * 114e0dac50fSopenharmony_ci * @return the error code of window 115e0dac50fSopenharmony_ci */ 116e0dac50fSopenharmony_ci WMError GoDestroy(); 117e0dac50fSopenharmony_ci 118e0dac50fSopenharmony_ci /** 119e0dac50fSopenharmony_ci * Window handle new want. 120e0dac50fSopenharmony_ci * 121e0dac50fSopenharmony_ci * @param want ability want. 122e0dac50fSopenharmony_ci * @return the error code of window 123e0dac50fSopenharmony_ci */ 124e0dac50fSopenharmony_ci WMError OnNewWant(const AAFwk::Want& want); 125e0dac50fSopenharmony_ci 126e0dac50fSopenharmony_ci /** 127e0dac50fSopenharmony_ci * Request to get the focus. 128e0dac50fSopenharmony_ci * 129e0dac50fSopenharmony_ci * @return the error code of window 130e0dac50fSopenharmony_ci */ 131e0dac50fSopenharmony_ci WMError RequestFocus() const; 132e0dac50fSopenharmony_ci 133e0dac50fSopenharmony_ci /** 134e0dac50fSopenharmony_ci * Update ability configuration. 135e0dac50fSopenharmony_ci * 136e0dac50fSopenharmony_ci * @param configuration the configuration of ability 137e0dac50fSopenharmony_ci */ 138e0dac50fSopenharmony_ci void UpdateConfiguration(const std::shared_ptr<AppExecFwk::Configuration>& configuration); 139e0dac50fSopenharmony_ci 140e0dac50fSopenharmony_ci /** 141e0dac50fSopenharmony_ci * Set main window system bar property 142e0dac50fSopenharmony_ci * 143e0dac50fSopenharmony_ci * @param type the type of window 144e0dac50fSopenharmony_ci * @param property the property of system bar 145e0dac50fSopenharmony_ci * @return the error code of window 146e0dac50fSopenharmony_ci */ 147e0dac50fSopenharmony_ci WMError SetSystemBarProperty(WindowType type, const SystemBarProperty& property) const; 148e0dac50fSopenharmony_ci 149e0dac50fSopenharmony_ci /** 150e0dac50fSopenharmony_ci * Get content info of main window. 151e0dac50fSopenharmony_ci * 152e0dac50fSopenharmony_ci * @return content info of main window 153e0dac50fSopenharmony_ci */ 154e0dac50fSopenharmony_ci std::string GetContentInfo(BackupAndRestoreType type = BackupAndRestoreType::CONTINUATION) const; 155e0dac50fSopenharmony_ci 156e0dac50fSopenharmony_ci /** 157e0dac50fSopenharmony_ci * @brief Handle and notify memory. 158e0dac50fSopenharmony_ci * 159e0dac50fSopenharmony_ci * @param level memory level 160e0dac50fSopenharmony_ci * @return the error code of window 161e0dac50fSopenharmony_ci */ 162e0dac50fSopenharmony_ci WMError NotifyMemoryLevel(int32_t level); 163e0dac50fSopenharmony_ci 164e0dac50fSopenharmony_cipublic: 165e0dac50fSopenharmony_ci static const DisplayId DEFAULT_DISPLAY_ID = 0; 166e0dac50fSopenharmony_ci 167e0dac50fSopenharmony_ciprivate: 168e0dac50fSopenharmony_ci void OnLastStrongRef(const void *) override; 169e0dac50fSopenharmony_ci 170e0dac50fSopenharmony_ciprivate: 171e0dac50fSopenharmony_ci mutable std::mutex mainWindowMutex_; 172e0dac50fSopenharmony_ci sptr<Window> mainWindow_ = nullptr; 173e0dac50fSopenharmony_ci // Above guarded by mainWindowMutex_ 174e0dac50fSopenharmony_ci 175e0dac50fSopenharmony_ci uint32_t mainWindowId_ = 0; 176e0dac50fSopenharmony_ci}; 177e0dac50fSopenharmony_ci 178e0dac50fSopenharmony_ci} // namespace Rosen 179e0dac50fSopenharmony_ci} // namespace OHOS 180e0dac50fSopenharmony_ci#endif // INTERFACES_INNERKITS_WINDOW_SCENE_H 181