Bug 1700051: part 36) Reduce accessibility of `SoftText::mBegin` to `private`. r...
[gecko.git] / accessible / atk / nsMaiInterfaceAction.cpp
blob73636181cde978fa93956bfabd0b174dce559ad1
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "InterfaceInitFuncs.h"
9 #include "LocalAccessible-inl.h"
10 #include "nsMai.h"
11 #include "Role.h"
12 #include "mozilla/Likely.h"
13 #include "RemoteAccessible.h"
14 #include "nsString.h"
16 using namespace mozilla::a11y;
18 extern "C" {
20 static gboolean doActionCB(AtkAction* aAction, gint aActionIndex) {
21 AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aAction));
22 if (accWrap) {
23 return accWrap->DoAction(aActionIndex);
26 RemoteAccessible* proxy = GetProxy(ATK_OBJECT(aAction));
27 return proxy && proxy->DoAction(aActionIndex);
30 static gint getActionCountCB(AtkAction* aAction) {
31 AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aAction));
32 if (accWrap) {
33 return accWrap->ActionCount();
36 RemoteAccessible* proxy = GetProxy(ATK_OBJECT(aAction));
37 return proxy ? proxy->ActionCount() : 0;
40 static const gchar* getActionDescriptionCB(AtkAction* aAction,
41 gint aActionIndex) {
42 nsAutoString description;
43 AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aAction));
44 if (accWrap) {
45 accWrap->ActionDescriptionAt(aActionIndex, description);
46 } else if (RemoteAccessible* proxy = GetProxy(ATK_OBJECT(aAction))) {
47 proxy->ActionDescriptionAt(aActionIndex, description);
48 } else {
49 return nullptr;
52 return AccessibleWrap::ReturnString(description);
55 static const gchar* getActionNameCB(AtkAction* aAction, gint aActionIndex) {
56 nsAutoString autoStr;
57 AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aAction));
58 if (accWrap) {
59 accWrap->ActionNameAt(aActionIndex, autoStr);
60 } else if (RemoteAccessible* proxy = GetProxy(ATK_OBJECT(aAction))) {
61 proxy->ActionNameAt(aActionIndex, autoStr);
62 } else {
63 return nullptr;
66 return AccessibleWrap::ReturnString(autoStr);
69 static const gchar* getKeyBindingCB(AtkAction* aAction, gint aActionIndex) {
70 nsAutoString keyBindingsStr;
71 AccessibleWrap* acc = GetAccessibleWrap(ATK_OBJECT(aAction));
72 if (acc) {
73 AccessibleWrap::GetKeyBinding(acc, keyBindingsStr);
74 } else if (RemoteAccessible* proxy = GetProxy(ATK_OBJECT(aAction))) {
75 proxy->AtkKeyBinding(keyBindingsStr);
76 } else {
77 return nullptr;
80 return AccessibleWrap::ReturnString(keyBindingsStr);
84 void actionInterfaceInitCB(AtkActionIface* aIface) {
85 NS_ASSERTION(aIface, "Invalid aIface");
86 if (MOZ_UNLIKELY(!aIface)) return;
88 aIface->do_action = doActionCB;
89 aIface->get_n_actions = getActionCountCB;
90 aIface->get_description = getActionDescriptionCB;
91 aIface->get_keybinding = getKeyBindingCB;
92 aIface->get_name = getActionNameCB;