/* * AT-SPI - Assistive Technology Service Provider Interface * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) * * Copyright 2001 Sun Microsystems Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include #ifndef _ACCESSIBILITY_LOGIN_HELPER_IDL_ #define _ACCESSIBILITY_LOGIN_HELPER_IDL_ module Accessibility { /** * @brief An interface for use by assistive technologies by which * they can access system information and services on a 'need to know' * basis while the screen is locked, during user authentication, or * during other sensitive operations. * * This interface is intended for use by assistive technologies * and related user-enabling services, and by applications and * utilities which may wish to restrict access to certain system * devices and services during security-sensitive states, e.g. when * the screen is locked or during authentication into some secure * service. * * Such 'applications' (for instance, screen lock dialogs and * security-enabled web browsers) use the ::LoginHelper client * interfaces, and the bonobo-activation query service, to * query for assistive technologies which advertise the ::LoginHelper * service. The client then queries these assistive technologies * for their device I/O requirements, via the ::getDeviceReqs call. * The client may then issue the advisory request ::setSafe (TRUE), * which requests that the ::LoginHelper -implementing service make a * best-effort attempt to make itself more secure (for instance, * an onscreen keyboard might turn off word prediction, and a * screenreader may turn off keyboard echo via speech). The return * value of ::setSafe is an advisory indication of whether this attempt * was successful (no specific guarantees are implied). * Once the 'security sensitive' state is exited, the client should * call ::setSafe (FALSE). * * The return values from ::getDeviceReqs inform the client of which * services the ::LoginHelper service (e. g. assistive technology) needs * in order to do its job. The client may use this information to * loosen any restrictions on access which it may currently have in * place (for instance, keyboard grabs, etc.). If it does not do so, * the likely outcome is that the end-user will experience loss * of access to the system. * **/ interface LoginHelper : Bonobo::Unknown { /** * A structure containing info about toplevel X windows that * the ::LoginHelper instance wishes to have raised. * * @param winID: The windowing-system-dependeny Window ID of the toplevel window. */ struct WindowInfo { /* string display; */ /* short screen; */ long winID; }; typedef sequence WindowList; /* * DeviceReq: * * The system and device access and services which the LoginHelper-implementing * assistive technology requires in order to enable the user to use the system. * */ enum DeviceReq { GUI_EVENTS, /*!<: Needs access to the GUI event subsystem (e.g. Xserver) */ CORE_KEYBOARD, /*!<: Needs access to the system keyboard events (read and write) */ CORE_POINTER, /*!<: Needs access to the onscreen pointer (e.g. mouse pointer) */ EXT_INPUT, /*!<: Reads XInput extended input devices */ POST_WINDOWS, /*!<: Posts Windows, and needs for toplevel windows to be visible */ AUDIO_OUT, /*!<: Writes to audio device */ AUDIO_IN, /*!<: Reads from audio device */ NETWORK, /*!<: Requires access to general network services, including remote access */ LOCALHOST, /*!<: Requires network services hosted on LOCALHOST only */ SERIAL_OUT, /*!<: Writes to a serial port */ SERIAL_IN /*!<: Reads from a serial port */ }; typedef sequence DeviceReqList; /** * setSafe: * @param safe_mode: \c TRUE if the client is requesting that 'safe mode' be * initiated, \c FALSE if the client is advising that 'safe mode' may be * exited, i.e. normal operation may be resumed. * * Request a LoginHelper to enter "safe" mode, or * inform LoginHelper that "safe" mode may be exited. * If \a safe_mode is \c TRUE, but the return value is \c FALSE, * the requesting client may wish to deny services to the * ::LoginHelper, for instance avoid raising its toplevels. * The return value is purely advisory, and no guarantees are * intended about what the implementing LoginHelper will do * to improve security when in "safe" mode. * * @returns: whether the ::LoginHelper is now "safe" or not. **/ boolean setSafe (in boolean safe_mode); /** * getDeviceReqs: * * Query a ::LoginHelper for the types of * device I/O it requires, in order to do its job. * For instance, a ::LoginHelper which needs to receive keyboard * events will include * Accessibility_LoginHelper_CORE_KEYBOARD in this list. * * @returns: A sequence of ::LoginHelper_DeviceReq indicating * the device I/O required in order to facilitate end-user access * to the system. **/ DeviceReqList getDeviceReqs (); /** * getRaiseWindows: * * Get a list of window IDs that need raising on login. * * @returns: a sequence containing window IDS for toplevels which * need to be raised/made visible during user authentication, in * order for the ::LoginHelper to facilitate end-user access to the * system. **/ WindowList getRaiseWindows (); /** * \cond * unImplemented: * * placeholders for future expansion. */ void unImplemented (); void unImplemented2 (); void unImplemented3 (); void unImplemented4 (); /** \endcond */ }; }; #endif