home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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 <Bonobo_Unknown.idl>
-
- #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<WindowInfo> 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<DeviceReq> 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
-