• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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_WINDOW_MANAGER_PRIVACY_PROXY_H
17 #define OHOS_WINDOW_MANAGER_PRIVACY_PROXY_H
18 
19 #include <iremote_proxy.h>
20 
21 namespace OHOS {
22 namespace Security {
23 namespace AccessToken {
24 enum class WindowManagerAgentType : uint32_t {
25     WINDOW_MANAGER_AGENT_TYPE_FOCUS,
26     WINDOW_MANAGER_AGENT_TYPE_SYSTEM_BAR,
27     WINDOW_MANAGER_AGENT_TYPE_WINDOW_UPDATE,
28     WINDOW_MANAGER_AGENT_TYPE_WINDOW_VISIBILITY,
29     WINDOW_MANAGER_AGENT_TYPE_CAMERA_FLOAT,
30 };
31 
32 class IWindowManagerAgent : public IRemoteBroker {
33 public:
34     DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.IWindowManagerAgent");
35     enum class WindowManagerAgentMsg : uint32_t {
36         TRANS_ID_UPDATE_FOCUS  = 1,
37         TRANS_ID_UPDATE_SYSTEM_BAR_PROPS,
38         TRANS_ID_UPDATE_WINDOW_STATUS,
39         TRANS_ID_UPDATE_WINDOW_VISIBILITY,
40         TRANS_ID_UPDATE_CAMERA_FLOAT,
41     };
42 
43     virtual void UpdateCameraFloatWindowStatus(uint32_t accessTokenId, bool isShowing) = 0;
44 };
45 
46 class IWindowManager : public IRemoteBroker {
47 public:
48     DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.IWindowManager");
49 
50     enum class WindowManagerMessage : uint32_t {
51         TRANS_ID_CREATE_WINDOW,
52         TRANS_ID_ADD_WINDOW,
53         TRANS_ID_REMOVE_WINDOW,
54         TRANS_ID_DESTROY_WINDOW,
55         TRANS_ID_REQUEST_FOCUS,
56         TRANS_ID_REGISTER_FOCUS_CHANGED_LISTENER,
57         TRANS_ID_UNREGISTER_FOCUS_CHANGED_LISTENER,
58         TRANS_ID_REGISTER_WINDOW_MANAGER_AGENT,
59         TRANS_ID_UNREGISTER_WINDOW_MANAGER_AGENT,
60         TRANS_ID_GET_AVOID_AREA,
61         TRANS_ID_GET_TOP_WINDOW_ID,
62         TRANS_ID_PROCESS_POINT_DOWN,
63         TRANS_ID_PROCESS_POINT_UP,
64         TRANS_ID_MINIMIZE_ALL_APP_WINDOWS,
65         TRANS_ID_TOGGLE_SHOWN_STATE_FOR_ALL_APP_WINDOWS,
66         TRANS_ID_SET_BACKGROUND_BLUR,
67         TRANS_ID_SET_ALPHA,
68         TRANS_ID_UPDATE_LAYOUT_MODE,
69         TRANS_ID_UPDATE_PROPERTY,
70         TRANS_ID_GET_ACCESSIBILITY_WINDOW_INFO_ID,
71         TRANS_ID_GET_VISIBILITY_WINDOW_INFO_ID,
72         TRANS_ID_ANIMATION_SET_CONTROLLER,
73         TRANS_ID_GET_SYSTEM_CONFIG,
74         TRANS_ID_NOTIFY_WINDOW_TRANSITION,
75         TRANS_ID_GET_FULLSCREEN_AND_SPLIT_HOT_ZONE,
76         TRANS_ID_GET_ANIMATION_CALLBACK,
77         TRANS_ID_UPDATE_AVOIDAREA_LISTENER,
78         TRANS_ID_UPDATE_RS_TREE,
79         TRANS_ID_BIND_DIALOG_TARGET,
80         TRANS_ID_NOTIFY_READY_MOVE_OR_DRAG,
81         TRANS_ID_SET_ANCHOR_AND_SCALE,
82         TRANS_ID_SET_ANCHOR_OFFSET,
83         TRANS_ID_OFF_WINDOW_ZOOM,
84     };
85 
86     virtual bool RegisterWindowManagerAgent(WindowManagerAgentType type,
87         const sptr<IWindowManagerAgent>& windowManagerAgent) = 0;
88     virtual bool UnregisterWindowManagerAgent(WindowManagerAgentType type,
89         const sptr<IWindowManagerAgent>& windowManagerAgent) = 0;
90 };
91 
92 class WindowManagerPrivacyProxy : public IRemoteProxy<IWindowManager> {
93 public:
WindowManagerPrivacyProxy(const sptr<IRemoteObject> & impl)94     explicit WindowManagerPrivacyProxy(const sptr<IRemoteObject>& impl) : IRemoteProxy<IWindowManager>(impl) {};
95 
~WindowManagerPrivacyProxy()96     ~WindowManagerPrivacyProxy() {};
97     bool RegisterWindowManagerAgent(WindowManagerAgentType type,
98             const sptr<IWindowManagerAgent>& windowManagerAgent) override;
99     bool UnregisterWindowManagerAgent(WindowManagerAgentType type,
100         const sptr<IWindowManagerAgent>& windowManagerAgent) override;
101 
102 private:
103     static inline BrokerDelegator<WindowManagerPrivacyProxy> delegator_;
104 };
105 }
106 }
107 }
108 #endif // OHOS_WINDOW_MANAGER_PRIVACY_PROXY_H
109