1 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h>
2 #include <dali-toolkit-test-suite-utils.h>
3 #include <dali/devel-api/common/stage.h>
4 #include <dali/devel-api/adaptor-framework/accessibility-impl.h>
5 #include "dbus-wrapper.h"
8 namespace Accessibility {
10 using MethodType = TestDBusWrapper::MethodType;
11 using MessagePtr = DBusWrapper::MessagePtr;
13 void TestEnableSC(bool b) {
14 static bool firstTime = true;
17 auto bridge = Accessibility::Bridge::GetCurrentBridge();
18 Dali::Stage stage = Dali::Stage::GetCurrent();
19 auto accessible = Accessibility::Accessible::Get( stage.GetRootLayer() );
20 // bridge->SetApplicationChild( accessible ); // BART
21 bridge->AddTopLevelWindow( accessible ); // BART
22 bridge->SetApplicationName( "TestApp" );
25 static bool ScreenReaderEnabled = false;
26 static bool IsEnabled = false;
28 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
30 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/bus", "org.a11y.Status", "ScreenReaderEnabled", MethodType::Getter}] = [wr](const MessagePtr &m) -> MessagePtr {
31 auto reply = wr->newReplyMessage(m);
32 wr->Encode(reply, std::tuple<TestDBusWrapper::Variant<bool>>{ ScreenReaderEnabled });
35 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/bus", "org.a11y.Status", "IsEnabled", MethodType::Getter}] = [wr](const MessagePtr &m) -> MessagePtr {
36 auto reply = wr->newReplyMessage(m);
37 wr->Encode(reply, std::tuple<TestDBusWrapper::Variant<bool>>{ IsEnabled });
40 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/bus", "org.a11y.Bus", "GetAddress", MethodType::Method}] = [wr](const MessagePtr &m) -> MessagePtr {
41 auto reply = wr->newReplyMessage(m);
42 wr->Encode(reply, std::tuple<const char*>{ "bus" });
45 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible/root", "org.a11y.atspi.Socket", "Embed", MethodType::Method}] = [wr](const MessagePtr &m) -> MessagePtr {
46 auto reply = wr->newReplyMessage(m);
47 wr->Encode(reply, std::tuple<Address>{ {"bus", "root"} });
50 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Object", "PropertyChange", MethodType::Method}] =
51 [wr](const MessagePtr &m) -> MessagePtr {
52 return wr->newReplyMessage(m);
54 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Object", "StateChanged", MethodType::Method}] =
55 [wr](const MessagePtr &m) -> MessagePtr {
56 return wr->newReplyMessage(m);
58 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Object", "BoundsChanged", MethodType::Method}] =
59 [wr](const MessagePtr &m) -> MessagePtr {
60 return wr->newReplyMessage(m);
62 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Object", "ActiveDescendantChanged", MethodType::Method}] =
63 [wr](const MessagePtr &m) -> MessagePtr {
64 return wr->newReplyMessage(m);
66 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Object", "TextChanged", MethodType::Method}] =
67 [wr](const MessagePtr &m) -> MessagePtr {
68 return wr->newReplyMessage(m);
70 wr->testMethods[std::tuple<std::string, std::string, std::string, MethodType>{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Object", "TextCaretMoved", MethodType::Method}] =
71 [wr](const MessagePtr &m) -> MessagePtr {
72 return wr->newReplyMessage(m);
75 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
76 wr->fromTestChangeProperty("/org/a11y/bus", "org.a11y.Status", "ScreenReaderEnabled", b);
79 std::vector<Address> TestGetChildren(const Address &adr)
81 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
82 auto chs = wr->fromTestCall<std::vector<Address>>(adr.GetPath(), "org.a11y.atspi.Accessible", "GetChildren", std::tuple<>());
83 return std::move(std::get<0>(chs));
86 std::string TestGetName(const Address &adr)
88 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
89 auto name = wr->fromTestGet<std::string>(adr.GetPath(), "org.a11y.atspi.Accessible", "Name");
93 std::string TestGetDescription(const Address &adr)
95 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
96 auto description = wr->fromTestGet<std::string>(adr.GetPath(), "org.a11y.atspi.Accessible", "Description");
100 uint32_t TestGetRole(const Address &adr)
102 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
103 auto chs = wr->fromTestCall<uint32_t>(adr.GetPath(), "org.a11y.atspi.Accessible", "GetRole", std::tuple<>());
104 return std::move(std::get<0>(chs));
107 std::string TestGetRoleName(const Address &adr)
109 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
110 auto chs = wr->fromTestCall<std::string>(adr.GetPath(), "org.a11y.atspi.Accessible", "GetRoleName", std::tuple<>());
111 return std::move(std::get<0>(chs));
114 Address TestGetParent(const Address &adr)
116 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
117 auto chs = wr->fromTestGet< Address >(adr.GetPath(), "org.a11y.atspi.Accessible", "Parent");
121 std::string TestGetLocalizedRoleName(const Address &adr)
123 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
124 auto chs = wr->fromTestCall<std::string>(adr.GetPath(), "org.a11y.atspi.Accessible", "GetLocalizedRoleName", std::tuple<>());
125 return std::move(std::get<0>(chs));
128 std::array< uint32_t, 2 > TestGetStates(const Address &adr)
130 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
131 auto chs = wr->fromTestCall<std::array< uint32_t, 2 >>(adr.GetPath(), "org.a11y.atspi.Accessible", "GetState", std::tuple<>());
132 return std::move(std::get<0>(chs));
135 std::unordered_map< std::string, std::string > TestGetAttributes(const Address &adr)
137 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
138 auto chs = wr->fromTestCall<std::unordered_map< std::string, std::string >>(adr.GetPath(), "org.a11y.atspi.Accessible", "GetAttributes", std::tuple<>());
139 return std::move(std::get<0>(chs));
142 bool TestDoGesture(const Address &adr, Dali::Accessibility::Gesture type, int32_t xBeg, int32_t xEnd, int32_t yBeg, int32_t yEnd, Dali::Accessibility::GestureState state, uint32_t eventTime)
144 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
145 auto chs = wr->fromTestCall< bool >(adr.GetPath(), "org.a11y.atspi.Accessible", "DoGesture",
146 std::tuple< Dali::Accessibility::Gesture, int32_t, int32_t, int32_t, int32_t, Dali::Accessibility::GestureState, uint32_t >(type, xBeg, xEnd, yBeg, yEnd, state, eventTime ));
147 return std::move(std::get<0>(chs));
150 std::vector< std::tuple< uint32_t, std::vector< Dali::Accessibility::Address > > > TestGetRelationSet(const Address &adr)
152 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
153 auto chs = wr->fromTestCall< std::vector< std::tuple< uint32_t, std::vector< Dali::Accessibility::Address > > > >(adr.GetPath(), "org.a11y.atspi.Accessible", "GetRelationSet", std::tuple<>());
154 return std::move(std::get<0>(chs));
157 Address TestGetChildAtIndex(const Address &adr, int index)
159 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
160 auto chs = wr->fromTestCall< Address >(adr.GetPath(), "org.a11y.atspi.Accessible", "GetChildAtIndex", std::tuple< int >( index ));
161 return std::move(std::get<0>(chs));
164 ComponentLayer TestGetLayer(const Address &adr)
166 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
167 auto chs = wr->fromTestCall< Dali::Accessibility::ComponentLayer >(adr.GetPath(), "org.a11y.atspi.Component", "GetLayer", std::tuple<>());
168 return std::move(std::get<0>(chs));
171 int TestGetIndexInParent(const Address &adr)
173 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
174 auto chs = wr->fromTestCall< int >(adr.GetPath(), "org.a11y.atspi.Accessible", "GetIndexInParent", std::tuple<>());
175 return std::move(std::get<0>(chs));
178 bool TestGrabFocus(const Address &adr)
180 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
181 auto chs = wr->fromTestCall< bool >(adr.GetPath(), "org.a11y.atspi.Component", "GrabFocus", std::tuple<>());
182 return std::move(std::get<0>(chs));
185 bool TestGrabHighlight(const Address &adr)
187 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
188 auto chs = wr->fromTestCall< bool >(adr.GetPath(), "org.a11y.atspi.Component", "GrabHighlight", std::tuple<>());
189 return std::move(std::get<0>(chs));
192 bool TestClearHighlight(const Address &adr)
194 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
195 auto chs = wr->fromTestCall< bool >(adr.GetPath(), "org.a11y.atspi.Component", "ClearHighlight", std::tuple<>());
196 return std::move(std::get<0>(chs));
199 std::tuple< int32_t, int32_t, int32_t, int32_t > TestGetExtents(const Address &adr)
201 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
202 auto chs = wr->fromTestCall< std::tuple< int32_t, int32_t, int32_t, int32_t > >(adr.GetPath(), "org.a11y.atspi.Component", "GetExtents", std::tuple<uint32_t>(0));
203 return std::move(std::get<0>(chs));
206 int TestGetMdiZOrder(const Address &adr)
208 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
209 auto chs = wr->fromTestCall< int16_t >(adr.GetPath(), "org.a11y.atspi.Component", "GetMDIZOrder", std::tuple<>());
210 return std::move(std::get<0>(chs));
213 double TestGetAlpha(const Address &adr)
215 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
216 auto chs = wr->fromTestCall< double >(adr.GetPath(), "org.a11y.atspi.Component", "GetAlpha", std::tuple<>());
217 return std::move(std::get<0>(chs));
220 std::string TestGetActionName( const Address &adr, size_t index )
222 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
223 auto chs = wr->fromTestCall< std::string >(adr.GetPath(), "org.a11y.atspi.Action", "GetName", std::tuple< int32_t >( index ));
224 return std::move(std::get<0>(chs));
227 std::string TestGetLocalizedActionName( const Address &adr, size_t index )
229 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
230 auto chs = wr->fromTestCall< std::string >(adr.GetPath(), "org.a11y.atspi.Action", "GetLocalizedName", std::tuple< int32_t >( index ));
231 return std::move(std::get<0>(chs));
234 size_t TestGetActionCount( const Address &adr )
236 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
237 auto count = wr->fromTestGet< int32_t >(adr.GetPath(), "org.a11y.atspi.Action", "NActions");
241 bool TestDoAction ( const Address &adr, size_t index )
243 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
244 auto chs = wr->fromTestCall< bool >(adr.GetPath(), "org.a11y.atspi.Action", "DoAction", std::tuple< int32_t >( index ));
245 return std::move(std::get<0>(chs));
248 bool TestDoAction ( const Address &adr, const std::string& name )
250 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
251 auto chs = wr->fromTestCall< bool >(adr.GetPath(), "org.a11y.atspi.Action", "DoActionName", std::tuple< std::string >( name ));
252 return std::move(std::get<0>(chs));
255 std::string TestGetActionKeyBinding ( const Address &adr, size_t index )
257 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
258 auto chs = wr->fromTestCall< std::string >(adr.GetPath(), "org.a11y.atspi.Action", "GetKeyBinding", std::tuple< int32_t >( index ));
259 return std::move(std::get<0>(chs));
262 std::string TestGetActionDescription ( const Address &adr, size_t index )
264 auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
265 auto chs = wr->fromTestCall< std::string >(adr.GetPath(), "org.a11y.atspi.Action", "GetDescription", std::tuple< int32_t >( index ));
266 return std::move(std::get<0>(chs));
270 void printTree(const Address &root, size_t depth)
272 auto name = TestGetName(root);
273 printf("%10s", root.GetPath().c_str());
274 for(unsigned int i = 0; i < depth; ++i) printf(" ");
275 printf("%s\n", name.c_str());
276 auto chs = TestGetChildren(root);
278 printTree(c, depth + 1);
281 bool Find( const std::vector< std::string > &collection, const std::string &key)
283 for ( auto& it : collection)