• 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 #include "accessibility_window_manager.h"
17 #include "accessibility_ut_helper.h"
18 #include "accessible_ability_manager_service.h"
19 #include "hilog_wrapper.h"
20 
21 namespace OHOS {
22 namespace Accessibility {
23 namespace {
24     constexpr int32_t TOP_X  = 0;
25     constexpr int32_t TOP_Y = 100;
26     constexpr int32_t BOTTOM_X = 800;
27     constexpr int32_t BOTTOM_Y = 400;
28 } // namespace
29 
AccessibilityWindowManager()30 AccessibilityWindowManager::AccessibilityWindowManager()
31 {
32 }
33 
~AccessibilityWindowManager()34 AccessibilityWindowManager::~AccessibilityWindowManager()
35 {
36 }
37 
Init()38 bool AccessibilityWindowManager::Init()
39 {
40     return true;
41 }
42 
DeInit()43 void AccessibilityWindowManager::DeInit()
44 {
45     a11yWindows_.clear();
46     activeWindowId_ = INVALID_WINDOW_ID;
47     a11yFocusedWindowId_ = INVALID_WINDOW_ID;
48 }
49 
RegisterWindowListener(const std::shared_ptr<AppExecFwk::EventHandler> & handler)50 void AccessibilityWindowManager::RegisterWindowListener(const std::shared_ptr<AppExecFwk::EventHandler> &handler)
51 {
52     (void)handler;
53 }
54 
DeregisterWindowListener()55 void AccessibilityWindowManager::DeregisterWindowListener()
56 {
57 }
58 
OnWindowUpdate(const std::vector<sptr<Rosen::AccessibilityWindowInfo>> & infos,Rosen::WindowUpdateType type)59 void AccessibilityWindowManager::OnWindowUpdate(const std::vector<sptr<Rosen::AccessibilityWindowInfo>>& infos,
60     Rosen::WindowUpdateType type)
61 {
62     HILOG_DEBUG("start");
63     (void)infos;
64     (void)type;
65 }
66 
ConvertToRealWindowId(int32_t windowId,int32_t focusType)67 int32_t AccessibilityWindowManager::ConvertToRealWindowId(int32_t windowId, int32_t focusType)
68 {
69     (void)windowId;
70     (void)focusType;
71     int32_t realId = AccessibilityAbilityHelper::GetInstance().GetRealId();
72     return realId;
73 }
74 
ConvertWindowType(Rosen::WindowType type)75 AccessibilityWindowType ConvertWindowType(Rosen::WindowType type)
76 {
77     (void)type;
78     AccessibilityWindowType winType = TYPE_WINDOW_INVALID;
79 
80     if (type < Rosen::WindowType::SYSTEM_WINDOW_BASE) {
81         winType = TYPE_APPLICATION;
82     } else if ((type >= Rosen::WindowType::SYSTEM_WINDOW_BASE) && (type <= Rosen::WindowType::SYSTEM_WINDOW_END)) {
83         winType = TYPE_SYSTEM;
84     } else {
85         HILOG_ERROR("ConvertWindowType Unknown windowType[%{public}d]", type);
86     }
87     return winType;
88 }
89 
CreateAccessibilityWindowInfo(const sptr<Rosen::AccessibilityWindowInfo> windowInfo)90 AccessibilityWindowInfo AccessibilityWindowManager::CreateAccessibilityWindowInfo(
91     const sptr<Rosen::AccessibilityWindowInfo> windowInfo)
92 {
93     (void)windowInfo;
94     AccessibilityWindowInfo info;
95     info.SetWindowId(0);
96     info.SetAccessibilityWindowType(ConvertWindowType(Rosen::WindowType::SYSTEM_WINDOW_BASE));
97     info.SetFocused(true);
98     Rect bound(TOP_X, TOP_Y, BOTTOM_X, BOTTOM_Y);
99     info.SetRectInScreen(bound);
100     return info;
101 }
102 
SetActiveWindow(int32_t windowId,bool isSendEvent)103 void AccessibilityWindowManager::SetActiveWindow(int32_t windowId, bool isSendEvent)
104 {
105     activeWindowId_ = windowId;
106     (void)isSendEvent;
107 }
108 
SetAccessibilityFocusedWindow(int32_t windowId)109 void AccessibilityWindowManager::SetAccessibilityFocusedWindow(int32_t windowId)
110 {
111     (void)windowId;
112 }
113 
GetAccessibilityWindows()114 std::vector<AccessibilityWindowInfo> AccessibilityWindowManager::GetAccessibilityWindows()
115 {
116     std::vector<AccessibilityWindowInfo> windows;
117     return windows;
118 }
119 
GetAccessibilityWindow(int32_t windowId,AccessibilityWindowInfo & window)120 bool AccessibilityWindowManager::GetAccessibilityWindow(int32_t windowId, AccessibilityWindowInfo& window)
121 {
122     HILOG_DEBUG("start windowId(%{public}d)", windowId);
123     if (a11yWindows_.count(windowId)) {
124         window = a11yWindows_[windowId];
125         return true;
126     }
127     return false;
128 }
129 
SetEventInfoBundleName(const AccessibilityEventInfo & uiEvent)130 void AccessibilityWindowManager::SetEventInfoBundleName(const AccessibilityEventInfo& uiEvent)
131 {
132     std::string windowsBundleNameCache = "";
133     const_cast<AccessibilityEventInfo&>(uiEvent).SetBundleName(windowsBundleNameCache);
134 }
135 
IsValidWindow(int32_t windowId)136 bool AccessibilityWindowManager::IsValidWindow(int32_t windowId)
137 {
138     (void)windowId;
139     return true;
140 }
141 
SetWindowSize(int32_t windowId,Rect rect)142 void AccessibilityWindowManager::SetWindowSize(int32_t windowId, Rect rect)
143 {
144     HILOG_DEBUG("SetWindowSize windowId(%{public}d)", windowId);
145 
146     auto it = std::find_if(a11yWindows_.begin(), a11yWindows_.end(),
147         [windowId](const std::map<int32_t, AccessibilityWindowInfo>::value_type &window) {
148             return window.first == windowId;
149         });
150     if (it != a11yWindows_.end()) {
151         it->second.SetRectInScreen(rect);
152     }
153 }
154 
ClearAccessibilityFocused()155 void AccessibilityWindowManager::ClearAccessibilityFocused()
156 {
157 }
158 
GetSceneBoardElementId(const int32_t windowId,const int64_t elementId)159 int64_t AccessibilityWindowManager::GetSceneBoardElementId(const int32_t windowId, const int64_t elementId)
160 {
161     return elementId;
162 }
163 
GetRealWindowAndElementId(int32_t & windowId,int64_t & elementId)164 void AccessibilityWindowManager::GetRealWindowAndElementId(int32_t& windowId, int64_t& elementId)
165 {
166 }
167 
GetSceneBoardInnerWinId(int32_t windowId,int64_t elementId,int32_t & innerWid)168 void AccessibilityWindowManager::GetSceneBoardInnerWinId(int32_t windowId, int64_t elementId,
169     int32_t& innerWid)
170 {
171 }
172 
InsertPair(const int32_t windowId,const int64_t elementId)173 void AccessibilityWindowManager::SceneBoardElementIdMap::InsertPair(const int32_t windowId, const int64_t elementId)
174 {
175 }
176 
RemovePair(const int32_t windowId)177 void AccessibilityWindowManager::SceneBoardElementIdMap::RemovePair(const int32_t windowId)
178 {
179 }
180 
Clear()181 void AccessibilityWindowManager::SceneBoardElementIdMap::Clear()
182 {
183 }
184 
GetAllPairs()185 std::map<int32_t, int64_t> AccessibilityWindowManager::SceneBoardElementIdMap::GetAllPairs()
186 {
187     return std::map<int32_t, int64_t>();
188 }
189 
GetFocusedWindowId(int32_t & focusedWindowId)190 RetError AccessibilityWindowManager::GetFocusedWindowId(int32_t &focusedWindowId)
191 {
192     focusedWindowId = 1;
193     return RET_OK;
194 }
195 
IsInnerWindowRootElement(int64_t elementId)196 bool AccessibilityWindowManager::IsInnerWindowRootElement(int64_t elementId)
197 {
198     (void)elementId;
199     return true;
200 }
201 
GetActiveWindowId()202 int32_t AccessibilityWindowManager::GetActiveWindowId()
203 {
204     return activeWindowId_;
205 }
206 
InsertTreeIdWindowIdPair(int32_t treeId,int32_t windowId)207 void AccessibilityWindowManager::InsertTreeIdWindowIdPair(int32_t treeId, int32_t windowId)
208 {
209     (void)treeId;
210     (void)windowId;
211 }
212 
RemoveTreeIdWindowIdPair(int32_t treeId)213 void AccessibilityWindowManager::RemoveTreeIdWindowIdPair(int32_t treeId)
214 {
215     (void)treeId;
216 }
217 
FindTreeIdWindowIdPair(int32_t treeId)218 int32_t AccessibilityWindowManager::FindTreeIdWindowIdPair(int32_t treeId)
219 {
220     (void)treeId;
221     return 0;
222 }
223 } // namespace Accessibility
224 } // namespace OHOS