2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001 Sun Microsystems Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
23 #include <Bonobo_Unknown.idl>
25 #ifndef _ACCESSIBILITY_LOGIN_HELPER_IDL_
26 #define _ACCESSIBILITY_LOGIN_HELPER_IDL_
28 module Accessibility {
33 * This interface is intended for use by assistive technologies
34 * and related user-enabling services, and by applications and
35 * utilities which may wish to restrict access to certain system
36 * devices and services during security-sensitive states, e.g. when
37 * the screen is locked or during authentication into some secure
40 * Such 'applications' (for instance, screen lock dialogs and
41 * security-enabled web browsers) use the @LoginHelper client
42 * interfaces, and the bonobo-activation query service, to
43 * query for assistive technologies which advertise the @LoginHelper
44 * service. The client then queries these assistive technologies
45 * for their device I/O requirements, via the @getDeviceReqs call.
46 * The client may then issue the advisory request @setSafe (TRUE),
47 * which requests that the @LoginHelper-implementing service make a
48 * best-effort attempt to make itself more secure (for instance,
49 * an onscreen keyboard might turn off word prediction, and a
50 * screenreader may turn off keyboard echo via speech). The return
51 * value of @setSafe is an advisory indication of whether this attempt
52 * was successful (no specific guarantees are implied).
53 * Once the 'security sensitive' state is exited, the client should
54 * call @setSafe (FALSE).
56 * The return values from @getDeviceReqs inform the client of which
57 * services the @LoginHelper service (e. g. assistive technology) needs
58 * in order to do its job. The client may use this information to
59 * loosen any restrictions on access which it may currently have in
60 * place (for instance, keyboard grabs, etc.). If it does not do so,
61 * the likely outcome is that the end-user will experience loss
62 * of access to the system.
65 interface LoginHelper : Bonobo::Unknown {
69 * A structure containing info about toplevel X windows that
70 * the @LoginHelper instance wishes to have raised.
72 * @winID: The windowing-system-dependeny Window ID of the toplevel window.
78 typedef sequence<WindowInfo> WindowList;
83 * The system and device access and services which the @LoginHelper-implementing
84 * assistive technology requires in order to enable the user to use the system.
88 GUI_EVENTS, /*!<: Needs access to the GUI event subsystem (e.g. Xserver) */
89 CORE_KEYBOARD, /*!<: Needs access to the system keyboard events (read and write) */
90 CORE_POINTER, /*!<: Needs access to the onscreen pointer (e.g. mouse pointer) */
91 EXT_INPUT, /*!<: Reads XInput extended input devices */
92 POST_WINDOWS, /*!<: Posts Windows, and needs for toplevel windows to be visible */
93 AUDIO_OUT, /*!<: Writes to audio device */
94 AUDIO_IN, /*!<: Reads from audio device */
95 NETWORK, /*!<: Requires access to general network services, including remote access */
96 LOCALHOST, /*!<: Requires network services hosted on LOCALHOST only */
97 SERIAL_OUT, /*!<: Writes to a serial port */
98 SERIAL_IN /*!<: Reads from a serial port */
101 typedef sequence<DeviceReq> DeviceReqList;
106 * Request a LoginHelper to enter "safe" mode, or
107 * inform LoginHelper that "safe" mode may be exited.
108 * If @safe_mode is %TRUE, but the return value is %FALSE,
109 * the requesting client may wish to deny services to the
110 * %LoginHelper, for instance avoid raising its toplevels.
111 * The return value is purely advisory, and no guarantees are
112 * intended about what the implementing LoginHelper will do
113 * to improve security when in "safe" mode.
115 * Returns: whether the %LoginHelper is now "safe" or not.
117 boolean setSafe (in boolean safe_mode);
122 * Query a @LoginHelper for the types of
123 * device I/O it requires, in order to do its job.
124 * For instance, a @LoginHelper which needs to receive keyboard
125 * events will include
126 * Accessibility_LoginHelper_CORE_KEYBOARD in this list.
128 * Returns: A sequence of @LoginHelper_DeviceReq indicating
129 * the device I/O required in order to facilitate end-user access
132 DeviceReqList getDeviceReqs ();
137 * Get a list of window IDs that need raising on login.
139 * Returns: a sequence containing window IDS for toplevels which
140 * need to be raised/made visible during user authentication, in
141 * order for the @LoginHelper to facilitate end-user access to the
144 WindowList getRaiseWindows ();
149 * placeholders for future expansion.
151 void unImplemented ();
152 void unImplemented2 ();
153 void unImplemented3 ();
154 void unImplemented4 ();