1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 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 WINDOW_EXTENSION_CONNECTION_H 17e0dac50fSopenharmony_ci#define WINDOW_EXTENSION_CONNECTION_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <string> 20e0dac50fSopenharmony_ci#include <element_name.h> 21e0dac50fSopenharmony_ci#include <i_input_event_consumer.h> 22e0dac50fSopenharmony_ci#include <input_manager.h> 23e0dac50fSopenharmony_ci#include <key_event.h> 24e0dac50fSopenharmony_ci#include <pointer_event.h> 25e0dac50fSopenharmony_ci#include <memory> 26e0dac50fSopenharmony_ci 27e0dac50fSopenharmony_ci#include "wm_common.h" 28e0dac50fSopenharmony_ci 29e0dac50fSopenharmony_cinamespace OHOS { 30e0dac50fSopenharmony_cinamespace Rosen { 31e0dac50fSopenharmony_cinamespace { 32e0dac50fSopenharmony_ciconst std::string RECT_FORM_KEY_POS_X = "ext_pos_x"; 33e0dac50fSopenharmony_ciconst std::string RECT_FORM_KEY_POS_Y = "ext_pos_y"; 34e0dac50fSopenharmony_ciconst std::string RECT_FORM_KEY_HEIGHT = "ext_pos_heigh"; 35e0dac50fSopenharmony_ciconst std::string RECT_FORM_KEY_WIDTH = "ext_pos_width"; 36e0dac50fSopenharmony_ciconst std::string WINDOW_ID = "ext_window_id"; 37e0dac50fSopenharmony_ci} 38e0dac50fSopenharmony_ci 39e0dac50fSopenharmony_ciclass RSSurfaceNode; 40e0dac50fSopenharmony_ciclass ExtensionSession; 41e0dac50fSopenharmony_ci/** 42e0dac50fSopenharmony_ci * @class IWindowExtensionCallback 43e0dac50fSopenharmony_ci * 44e0dac50fSopenharmony_ci * @brief Callback of window extension. 45e0dac50fSopenharmony_ci */ 46e0dac50fSopenharmony_ciclass IWindowExtensionCallback : virtual public RefBase { 47e0dac50fSopenharmony_cipublic: 48e0dac50fSopenharmony_ci /** 49e0dac50fSopenharmony_ci * @brief Window ready to connect. 50e0dac50fSopenharmony_ci * 51e0dac50fSopenharmony_ci * @param rsSurfaceNode Surface node from RS. 52e0dac50fSopenharmony_ci */ 53e0dac50fSopenharmony_ci virtual void OnWindowReady(const std::shared_ptr<RSSurfaceNode>& rsSurfaceNode) = 0; 54e0dac50fSopenharmony_ci /** 55e0dac50fSopenharmony_ci * @brief Callback when window extension disconnected. 56e0dac50fSopenharmony_ci */ 57e0dac50fSopenharmony_ci virtual void OnExtensionDisconnected() = 0; 58e0dac50fSopenharmony_ci /** 59e0dac50fSopenharmony_ci * @brief Callback when receive key event. 60e0dac50fSopenharmony_ci * 61e0dac50fSopenharmony_ci * @param event Keyboard event. 62e0dac50fSopenharmony_ci */ 63e0dac50fSopenharmony_ci virtual void OnKeyEvent(const std::shared_ptr<MMI::KeyEvent>& event) = 0; 64e0dac50fSopenharmony_ci /** 65e0dac50fSopenharmony_ci * @brief Callback when receive pointer event. 66e0dac50fSopenharmony_ci * 67e0dac50fSopenharmony_ci * @param event Pointer event. 68e0dac50fSopenharmony_ci */ 69e0dac50fSopenharmony_ci virtual void OnPointerEvent(const std::shared_ptr<MMI::PointerEvent>& event) = 0; 70e0dac50fSopenharmony_ci /** 71e0dac50fSopenharmony_ci * @brief Callback when press back button. 72e0dac50fSopenharmony_ci */ 73e0dac50fSopenharmony_ci virtual void OnBackPress() = 0; 74e0dac50fSopenharmony_ci}; 75e0dac50fSopenharmony_ci 76e0dac50fSopenharmony_ci/** 77e0dac50fSopenharmony_ci * @class WindowExtensionConnection 78e0dac50fSopenharmony_ci * 79e0dac50fSopenharmony_ci * @brief Connection for window extension. 80e0dac50fSopenharmony_ci */ 81e0dac50fSopenharmony_ciclass WindowExtensionConnection : public RefBase { 82e0dac50fSopenharmony_cipublic: 83e0dac50fSopenharmony_ci /** 84e0dac50fSopenharmony_ci * @brief Constructor for WindowExtensionConnection. 85e0dac50fSopenharmony_ci */ 86e0dac50fSopenharmony_ci WindowExtensionConnection(); 87e0dac50fSopenharmony_ci /** 88e0dac50fSopenharmony_ci * @brief Deconstructor for WindowExtensionConnection. 89e0dac50fSopenharmony_ci */ 90e0dac50fSopenharmony_ci ~WindowExtensionConnection(); 91e0dac50fSopenharmony_ci /** 92e0dac50fSopenharmony_ci * @brief Deconstructor for WindowExtensionConnection. 93e0dac50fSopenharmony_ci * 94e0dac50fSopenharmony_ci * @param element Element name. 95e0dac50fSopenharmony_ci * @param rect Rect of window extension. 96e0dac50fSopenharmony_ci * @param uid User id. 97e0dac50fSopenharmony_ci * @param windowId Window id. 98e0dac50fSopenharmony_ci * @param callback Callback for window extension. 99e0dac50fSopenharmony_ci * @return ERR_OK means connect success, others means connect failed. 100e0dac50fSopenharmony_ci */ 101e0dac50fSopenharmony_ci int ConnectExtension(const AppExecFwk::ElementName& element, const Rect& rect, 102e0dac50fSopenharmony_ci uint32_t uid, uint32_t windowId, const sptr<IWindowExtensionCallback>& callback) const; 103e0dac50fSopenharmony_ci /** 104e0dac50fSopenharmony_ci * @brief Deconstructor for WindowExtensionConnection. 105e0dac50fSopenharmony_ci * 106e0dac50fSopenharmony_ci * @param element Element name. 107e0dac50fSopenharmony_ci * @param rect Rect of window extension. 108e0dac50fSopenharmony_ci * @param uid User id. 109e0dac50fSopenharmony_ci * @param windowId Window id. 110e0dac50fSopenharmony_ci * @param callback Callback for window extension. 111e0dac50fSopenharmony_ci * @param extensionSession session for extension 112e0dac50fSopenharmony_ci * @return ERR_OK means connect success, others means connect failed. 113e0dac50fSopenharmony_ci */ 114e0dac50fSopenharmony_ci int ConnectExtension(const AppExecFwk::ElementName& element, const Rect& rect, 115e0dac50fSopenharmony_ci uint32_t uid, uint32_t windowId, const sptr<IWindowExtensionCallback>& callback, 116e0dac50fSopenharmony_ci const sptr<ExtensionSession>& extensionSession) const; 117e0dac50fSopenharmony_ci /** 118e0dac50fSopenharmony_ci * @brief Disconnect window extension. 119e0dac50fSopenharmony_ci */ 120e0dac50fSopenharmony_ci void DisconnectExtension() const; 121e0dac50fSopenharmony_ci /** 122e0dac50fSopenharmony_ci * @brief Show window extension. 123e0dac50fSopenharmony_ci */ 124e0dac50fSopenharmony_ci void Show() const; 125e0dac50fSopenharmony_ci /** 126e0dac50fSopenharmony_ci * @brief Hide window extension. 127e0dac50fSopenharmony_ci */ 128e0dac50fSopenharmony_ci void Hide() const; 129e0dac50fSopenharmony_ci /** 130e0dac50fSopenharmony_ci * @brief Request focus of window extension. 131e0dac50fSopenharmony_ci */ 132e0dac50fSopenharmony_ci void RequestFocus() const; 133e0dac50fSopenharmony_ci /** 134e0dac50fSopenharmony_ci * @brief Set bounds of window extension. 135e0dac50fSopenharmony_ci * 136e0dac50fSopenharmony_ci * @param rect Window extension rect. 137e0dac50fSopenharmony_ci */ 138e0dac50fSopenharmony_ci void SetBounds(const Rect& rect) const; 139e0dac50fSopenharmony_ciprivate: 140e0dac50fSopenharmony_ci class Impl; 141e0dac50fSopenharmony_ci sptr<Impl> pImpl_; 142e0dac50fSopenharmony_ci}; 143e0dac50fSopenharmony_ci} // namespace Rosen 144e0dac50fSopenharmony_ci} // namespace OHOS 145e0dac50fSopenharmony_ci#endif // WINDOW_EXTENSION_CONNECTION_H