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
IsValidWindow(int32_t windowId)130 bool AccessibilityWindowManager::IsValidWindow(int32_t windowId)
131 {
132 (void)windowId;
133 return true;
134 }
135
SetWindowSize(int32_t windowId,Rect rect)136 void AccessibilityWindowManager::SetWindowSize(int32_t windowId, Rect rect)
137 {
138 HILOG_DEBUG("SetWindowSize windowId(%{public}d)", windowId);
139
140 auto it = std::find_if(a11yWindows_.begin(), a11yWindows_.end(),
141 [windowId](const std::map<int32_t, AccessibilityWindowInfo>::value_type &window) {
142 return window.first == windowId;
143 });
144 if (it != a11yWindows_.end()) {
145 it->second.SetRectInScreen(rect);
146 }
147 }
148
ClearAccessibilityFocused()149 void AccessibilityWindowManager::ClearAccessibilityFocused()
150 {
151 }
152
GetSceneBoardElementId(const int32_t windowId,const int64_t elementId)153 int64_t AccessibilityWindowManager::GetSceneBoardElementId(const int32_t windowId, const int64_t elementId)
154 {
155 return elementId;
156 }
157
GetRealWindowAndElementId(int32_t & windowId,int64_t & elementId)158 void AccessibilityWindowManager::GetRealWindowAndElementId(int32_t& windowId, int64_t& elementId)
159 {
160 }
161
GetSceneBoardInnerWinId(int32_t windowId,int64_t elementId,int32_t & innerWid)162 void AccessibilityWindowManager::GetSceneBoardInnerWinId(int32_t windowId, int64_t elementId,
163 int32_t& innerWid)
164 {
165 }
166
InsertPair(const int32_t windowId,const int64_t elementId)167 void AccessibilityWindowManager::SceneBoardElementIdMap::InsertPair(const int32_t windowId, const int64_t elementId)
168 {
169 }
170
RemovePair(const int32_t windowId)171 void AccessibilityWindowManager::SceneBoardElementIdMap::RemovePair(const int32_t windowId)
172 {
173 }
174
Clear()175 void AccessibilityWindowManager::SceneBoardElementIdMap::Clear()
176 {
177 }
178
GetAllPairs()179 std::map<int32_t, int64_t> AccessibilityWindowManager::SceneBoardElementIdMap::GetAllPairs()
180 {
181 return std::map<int32_t, int64_t>();
182 }
183
GetFocusedWindowId(int32_t & focusedWindowId)184 RetError AccessibilityWindowManager::GetFocusedWindowId(int32_t &focusedWindowId)
185 {
186 focusedWindowId = 1;
187 return RET_OK;
188 }
189
IsInnerWindowRootElement(int64_t elementId)190 bool AccessibilityWindowManager::IsInnerWindowRootElement(int64_t elementId)
191 {
192 (void)elementId;
193 return false;
194 }
195 } // namespace Accessibility
196 } // namespace OHOS