• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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