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 #ifndef OHOS_ROSEN_WINDOW_SCENE_SESSION_INTERFACE_H 17 #define OHOS_ROSEN_WINDOW_SCENE_SESSION_INTERFACE_H 18 19 #include <iremote_broker.h> 20 #include "interfaces/include/ws_common.h" 21 #include "common/include/window_session_property.h" 22 #include "session/container/include/zidl/session_stage_interface.h" 23 #include "session/container/include/zidl/window_event_channel_interface.h" 24 #include "session_info.h" 25 26 namespace OHOS::AAFwk { 27 class Want; 28 } 29 namespace OHOS::Rosen { 30 class RSSurfaceNode; 31 class ISession : public IRemoteBroker { 32 public: 33 DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.ISession"); 34 35 enum class SessionMessage : uint32_t { 36 // Base 37 TRANS_ID_CONNECT = 0, 38 TRANS_ID_FOREGROUND, 39 TRANS_ID_BACKGROUND, 40 TRANS_ID_DISCONNECT, 41 TRANS_ID_ACTIVE_PENDING_SESSION, 42 TRANS_ID_UPDATE_ACTIVE_STATUS, 43 TRANS_ID_TERMINATE, 44 TRANS_ID_EXCEPTION, 45 46 // Scene 47 TRANS_ID_SESSION_EVENT = 100, 48 TRANS_ID_UPDATE_SESSION_RECT, 49 TRANS_ID_CREATE_AND_CONNECT_SPECIFIC_SESSION, 50 TRANS_ID_DESTROY_AND_DISCONNECT_SPECIFIC_SESSION, 51 TRANS_ID_RAISE_TO_APP_TOP, 52 TRANS_ID_BACKPRESSED, 53 TRANS_ID_MARK_PROCESSED, 54 TRANS_ID_SET_MAXIMIZE_MODE, 55 TRANS_ID_GET_MAXIMIZE_MODE, 56 TRANS_ID_NEED_AVOID, 57 TRANS_ID_GET_AVOID_AREA, 58 TRANS_ID_UPDATE_WINDOW_SESSION_PROPERTY, 59 TRANS_ID_SET_ASPECT_RATIO, 60 TRANS_ID_UPDATE_WINDOW_ANIMATION_FLAG, 61 TRANS_ID_UPDATE_CUSTOM_ANIMATION, 62 TRANS_ID_RAISE_ABOVE_TARGET, 63 64 // Extension 65 TRANS_ID_TRANSFER_ABILITY_RESULT = 500, 66 TRANS_ID_TRANSFER_EXTENSION_DATA = 501, 67 TRANS_ID_NOTIFY_REMOTE_READY = 502, 68 TRANS_ID_NOTIFY_EXTENSION_DIED = 503 69 }; 70 virtual WSError Connect(const sptr<ISessionStage>& sessionStage, const sptr<IWindowEventChannel>& eventChannel, 71 const std::shared_ptr<RSSurfaceNode>& surfaceNode, SystemSessionConfig& systemConfig, 72 sptr<WindowSessionProperty> property = nullptr, sptr<IRemoteObject> token = nullptr) = 0; 73 virtual WSError Foreground(sptr<WindowSessionProperty> property) = 0; 74 virtual WSError Background() = 0; 75 virtual WSError Disconnect() = 0; 76 virtual WSError PendingSessionActivation(const sptr<AAFwk::SessionInfo> abilitySessionInfo) = 0; 77 virtual WSError UpdateActiveStatus(bool isActive) = 0; 78 virtual WSError TerminateSession(const sptr<AAFwk::SessionInfo> abilitySessionInfo) = 0; 79 virtual WSError NotifySessionException(const sptr<AAFwk::SessionInfo> abilitySessionInfo) = 0; 80 81 // scene session 82 virtual WSError OnSessionEvent(SessionEvent event) = 0; 83 virtual WSError RaiseToAppTop() = 0; 84 virtual WSError UpdateSessionRect(const WSRect& rect, const SizeChangeReason& reason) = 0; 85 virtual WSError CreateAndConnectSpecificSession(const sptr<ISessionStage>& sessionStage, 86 const sptr<IWindowEventChannel>& eventChannel, const std::shared_ptr<RSSurfaceNode>& surfaceNode, 87 sptr<WindowSessionProperty> property, int32_t& persistentId, sptr<ISession>& session, 88 sptr<IRemoteObject> token = nullptr) = 0; 89 virtual WSError DestroyAndDisconnectSpecificSession(const int32_t& persistentId) = 0; 90 virtual WSError OnNeedAvoid(bool status) = 0; 91 virtual AvoidArea GetAvoidAreaByType(AvoidAreaType type) = 0; 92 virtual WSError RequestSessionBack() = 0; 93 virtual WSError MarkProcessed(int32_t eventId) = 0; 94 virtual WSError SetGlobalMaximizeMode(MaximizeMode mode) = 0; 95 virtual WSError GetGlobalMaximizeMode(MaximizeMode& mode) = 0; 96 virtual WSError UpdateWindowSessionProperty(sptr<WindowSessionProperty>) = 0; 97 virtual WSError SetAspectRatio(float ratio) = 0; 98 virtual WSError UpdateWindowAnimationFlag(bool needDefaultAnimationFlag) = 0; 99 virtual WSError UpdateWindowSceneAfterCustomAnimation(bool isAdd) = 0; 100 virtual WSError RaiseAboveTarget(int32_t subWindowId) = 0; 101 102 // extension session 103 virtual WSError TransferAbilityResult(uint32_t resultCode, const AAFwk::Want& want) = 0; 104 virtual WSError TransferExtensionData(const AAFwk::WantParams& wantParams) = 0; 105 virtual void NotifyRemoteReady() = 0; 106 virtual void NotifyExtensionDied() = 0; 107 }; 108 } // namespace OHOS::Rosen 109 #endif // OHOS_ROSEN_WINDOW_SCENE_SESSION_INTERFACE_H 110