Commit Graph

12 Commits

Author SHA1 Message Date
Svetoslav Ganov
00aabf7d18 Touch exploration state set to clients asynchronously and depended on talking service being enabled.
1. Upon registration of an accessibility client the latter received only
   the accessiiblity state and waiting for the touch exploration state
   to be sent by the system in async manner. This led the very first
   check of touch exploration state is checked a wrong value to be reported.
   Now a state of the accessibility layer is returned to the client
   upon registration.

2. Removing the dependency on talking accessibility service to be enabled
   for getting into touch exploration mode. What if the user wants to use
   an accessibility service that shows a dialog with the text of the touched
   view?

bug:5051546

Change-Id: Ib377babb3f560929ee73bd3d8b0d277341ba23f7
2011-07-22 17:38:54 -07:00
Svetoslav Ganov
35bfedeaba Touch exploration separate setting and API to poll the latter state.
1. Seperated touch exploration to be a seperate setting rather being
   magically enabled by the system of accessiiblity is on the there
   is at leas one accessibility service that speaks enabled. Now
   there is a setting for requesting touch exploration but still the
   system will enabled it only if that makes sense i.e. accessibility
   is on and one accessibility service that speaks is enabled.

2. Added public API for checking of touch exploration is enabled.

3. Added description attribute in accessibility service declaration
   which will be shown to the user before enabling the service.

4. Added API for quick cloning of AccessibilityNodeInfo.

5. Added clone functionality to SparseArray, SparseIntArray, and
   SparseBooleanArray.

bug:5034010
bug:5033928

Change-Id: Ia442edbe55c20309244061cd9d24e0545c01b54f
2011-07-18 12:44:08 -07:00
Svetoslav Ganov
0f55cc33f6 AccessibilityNodeInfo does not report checkable coreclty.
1. AccessibilitiyNodeInfo's checkable property was not set.

bug:5039205

Change-Id: I083d1c357c6d9875536e66e355c8a33bd580cee6
2011-07-17 10:51:54 -07:00
Svetoslav Ganov
38e8b4e5bc Updating accessibility documentation.
Change-Id: Ice8cf9ac6918b3bfa553776c68d4619fa6559cf8
2011-06-30 14:18:34 -07:00
Svetoslav Ganov
eeee4d2c01 Final polish of the interrogation feature.
1. Added a new event type for notifying client accessibilitiy
   services for changes in the layout. The event is fired at
   most once for a given time frame and is delivered to clients
   only if it originates from the window that can be interrogated.

2. Exposed the findByText functionality in AccessibilityNodeInfo.
   This is very useful for an accessibility service since it allows
   searching for something the user knows is on the screen thus
   avoiding touch exploring the content. Touch exploring is
   excellent for learning the apps but knowing them search is
   much faster.

3. Fixed a bug causing an accessibiliby service not to receive
   the event source in case of more than one service is registered
   and one of them does not have paermission to interrogate the window.
   The same event was dispatched to multiple services but if one
   of them does not have interrogation permission the event is
   modified to remove the source causing subsequent serivices not
   to get the later.

4. Moved the getSource setSource methods to AccessibilityRecord
   instead in AccessibilityEvent.

5. Hiden some protected members in AccessibilityRecod which should
   not be made public since getters exist.

6. Added the View absolute coordinates in the screen to AccessibilityNodeInfo.
   This is needed for fast computation of relative positions of
   views from accessibility - common use case for the later.

7. Fixed a couple of marshalling bugs.

8. Added a test for the object contract of AccessibilityNodeInfo.

Change-Id: Id9dc50c33aff441e4c93d25ea316c9bbc4bd7a35
2011-06-10 21:10:46 -07:00
Svetoslav Ganov
8643aa0179 Interrogation of the view hierarchy from an AccessibilityService.
1. Views are represented as AccessibilityNodeInfos to AccessibilityServices.

2. An accessibility service receives AccessibilityEvents and can ask
   for its source and gets an AccessibilityNodeInfo which can be used
   to get its parent and children infos and so on.

3. AccessibilityNodeInfo contains some attributes and actions that
   can be performed on the source.

4. AccessibilityService can request the system to preform an action
   on the source of an AccessibilityNodeInfo.

5. ViewAncestor provides an interaction connection to the
   AccessibiltyManagerService and an accessibility service uses
   its connection to the latter to interact with screen content.

6. AccessibilityService can interact ONLY with the focused window
   and all calls are routed through the AccessibilityManagerService
   which imposes security.

7. Hidden APIs on AccessibilityService can find AccessibilityNodeInfos
   based on some criteria. These API go through the AccessibilityManagerServcie
   for security check.

8. Some actions are hidden and are exposes only to eng builds for UI testing.

Change-Id: Ie34fa4219f350eb3f4f6f9f45b24f709bd98783c
2011-06-06 18:46:03 -07:00
Svetoslav Ganov
cc4053e031 Accessibility serviceconfiguration via meta-data
Note: This is a part of two CL change and contains the
      system changes without updates to the settings.

1. Added a mechanism for configuring an accessibility service via
   XML file specified in a meta-data tag (similar to IMEs).

2. Added property for specifying a settings activity for an
   accessibility service.

3. Refactored the APIs in AccessibilityManager to return
   lists of AccessiblityServiceInfo instead ServiceInfo
   since the former describes an AccessibilityService in
   particular (similar to IMEs).

Change-Id: Ie8781bb7e0cdb329e583b6702a612a507367ad7b
2011-05-31 12:04:18 -07:00
Svetoslav Ganov
9b31779eab Fix for bug 2448479 2010-02-17 16:46:42 -08:00
Dianne Hackborn
7ed6ee5692 Fix issue #1983406: Soft keyboard doesn't show up in an EditText with "digits" attribute set
Also pretend to fix #2054990 (com.android.frameworktest: java.lang.NullPointerException
at android.accessibilityservice.AccessibilityService$IEventListenerWrapper.executeMessage(
AccessibilityService.java:215))...  simply by making the variable that apparently was
null final, to assure myself that there is no possible way in the world for it to be
null. :p

Change-Id: I73e337d65b8360721896a0296691257b3e47564b
2009-09-10 18:41:28 -07:00
Charles Chen
85f6fb713f Fixing bug 2086021. AccessiblityService could sometimes get a null pointer
exception if multiple accessibility services are running and there are
several events all happening within a short period of time.
2009-08-28 11:32:23 -07:00
Dianne Hackborn
7f2054392e Updates from API review.
* AccessibilityService -- document onBind() to not be implemented.
    * GestureLibrary.getLearner() -- needs to be hidden.
    * IntentSender -- remove protected constructors, document that it is retrieved from a PendingIntent.
    * Hide permissions: SHUTDOWN, STOP_APP_SWITCHES.
    * Context -- hide BACKUP_SERVICE.
    * ContextWrapper -- hide getSharedPrefs bla h blah
    * Intent.parseUri() -- fix docs.
    * ApplicationInfo.FLAG_TEST_ONLY?!?
    * Hide MockContext.getSharedPrefs blah blah
2009-07-28 00:13:47 -07:00
svetoslavganov
75986cf9bc Accessibility feature - framework changes (replacing 698, 699, 700, 701 and merging with the latest Donut) 2009-05-14 23:47:05 -07:00