Commit Graph

3998 Commits

Author SHA1 Message Date
Svetoslav Ganov
0b0afb49a8 Adding API for refreshing the state of an AccessibilityNodeInfo.
Sometimes a client needs to hold onto an accessibility node info and
this info may get into a stale state. The clent has to be able to
request a refresh of the info. This change adds a refresh call to
AccessibilityNodeInfo.

bug:6711796

Change-Id: I580a9a5d9fd1f705ea0a2cf4d3ff65543714c9c3
2012-12-03 16:59:22 -08:00
Svetoslav Ganov
2c5f782094 Merge "Refactoring of the screen magnification feature." 2012-12-03 15:59:32 -08:00
Svetoslav Ganov
152e9bb81a Refactoring of the screen magnification feature.
1. The screen magnification feature was implemented entirely as a part of the accessibility
   manager. To achieve that the window manager had to implement a bunch of hooks for an
   external client to observe its internal state. This was problematic since it dilutes
   the window manager interface and allows code that is deeply coupled with the window
   manager to reside outside of it. Also the observer callbacks were IPCs which cannot
   be called with the window manager's lock held. To avoid that the window manager had
   to post messages requesting notification of interested parties which makes the code
   consuming the callbacks to run asynchronously of the window manager. This causes timing
   issues and adds unnecessary complexity.

   Now the magnification logic is split in two halves. The first half that is responsible
   to track the magnified portion of the screen and serve as a policy which windows can be
   magnified and it is a part of the window manager. This part exposes higher level APIs
   allowing interested parties with the right permissions to control the magnification
   of a given display. The APIs also allow a client to be registered for callbacks on
   interesting changes such as resize of the magnified region, etc. This part servers
   as a mediator between magnification controllers and the window manager.

   The second half is a controller that is responsible to drive the magnification
   state based on touch interactions. It also presents a highlight when magnified to
   suggest the magnified potion of the screen. The controller is responsible for auto
   zooming out in case the user context changes - rotation, new actitivity. The controller
   also auto pans if a dialog appears and it does not interesect the magnified frame.

bug:7410464

2. By design screen magnification and touch exploration work separately and together. If
   magnification is enabled the user sees a larger version of the widgets and a sub section
   of the screen content. Accessibility services use the introspection APIs to "see" what
   is on the screen so they can speak it, navigate to the next item in response to a
   gesture, etc. Hence, the information returned to accessibility services has to reflect
   what a sighted user would see on the screen. Therefore, if the screen is magnified
   we need to adjust the bounds and position of the infos describing views in a magnified
   window such that the info bounds are equivalent to what the user sees.

   To improve performance we keep accessibility node info caches in the client process.
   However, when magnification state changes we have to clear these caches since the
   bounds of the cached infos no longer reflect the screen content which just got smaller
   or larger.

   This patch propagates not only the window scale as before but also the X/Y pan and the
   bounds of the magnified portion of the screen to the introspected app. This information
   is used to adjust the bounds of the node infos coming from this window such that the
   reported bounds are the same as the user sees not as the app thinks they are. Note that
   if magnification is enabled we zoom the content and pan it along the X and Y axis. Also
   recomputed is the isVisibleToUser property of the reported info since in a magnified
   state the user sees a subset of the window content and the views not in the magnified
   viewport should be reported as not visible to the user.

bug:7344059

Change-Id: I6f7832c7a6a65c5368b390eb1f1518d0c7afd7d2
2012-12-03 10:38:48 -08:00
Chet Haase
3efa7b597c Fix requestLayout-during-layout problems
An earlier fix to allow requestLayout() to be called during layout
didn't handle some of the requests properly, leaving some nodes
stranded with layout requests that didn't propagate all the way
up the hierarchy. The fix is to do, on the second layout pass, exactly
what we do in a normal layout pass: run measure, then layout.

Issue #7657033 Checkboxes not being updated immediately in Settings

Change-Id: I90be3992d3441e8f43629d26c8386c81a7c31482
2012-12-03 08:41:28 -08:00
Fabrice Di Meglio
77c67665c8 Merge "resolved conflicts for merge of 8794c80d to master" 2012-11-30 18:44:21 -08:00
Svetoslav Ganov
01a9adde7a Merge "Adding pool management via the poolable APIs to some classes." 2012-11-30 17:16:54 -08:00
Svetoslav Ganov
be922dc976 Adding pool management via the poolable APIs to some classes.
1. Removed the support for infinite pool size which nobody was using and
   does not make sense.

2. Update some classes in ViewGroup to use the poolable APIs.

Change-Id: Ifdb8c10968cd06fe53085ec9d3d649f7c9a944b7
2012-11-30 17:16:17 -08:00
Fabrice Di Meglio
5412ba1cb9 resolved conflicts for merge of 8794c80d to master
Change-Id: I61313a3dd4cd0bcbf04c16dc17996a997b43fe0c
2012-11-30 17:08:26 -08:00
Romain Guy
53018e520d Merge "Apply dev. settings at runtime Bug #7434649" 2012-11-30 17:00:10 -08:00
Fabrice Di Meglio
8794c80dd7 am a9854ce9: am ce463847: Merge "Fix bug #7651552 resetRtlProperties() is called way too often" into jb-mr1.1-dev
* commit 'a9854ce9dfac086533e9d49ac75076bcc579303b':
  Fix bug #7651552 resetRtlProperties() is called way too often
2012-11-30 16:46:00 -08:00
Fabrice Di Meglio
a9854ce9df am ce463847: Merge "Fix bug #7651552 resetRtlProperties() is called way too often" into jb-mr1.1-dev
* commit 'ce463847db68afbb796377c6a55209e102774f8c':
  Fix bug #7651552 resetRtlProperties() is called way too often
2012-11-30 16:41:12 -08:00
Fabrice Di Meglio
ce463847db Merge "Fix bug #7651552 resetRtlProperties() is called way too often" into jb-mr1.1-dev 2012-11-30 16:37:17 -08:00
Romain Guy
5bb3c730f5 Apply dev. settings at runtime
Bug #7434649

Change-Id: I16f00eaa8a5eefd9f9849e196cf2cb1659215390
2012-11-30 16:29:33 -08:00
Fabrice Di Meglio
cb5f9db47a Fix bug #7651552 resetRtlProperties() is called way too often
- remove unnecessary calls to resetRtlProperties().
- now reset of RTL properties will only be done when adding a View
(and no more when removing it)

Change-Id: I0d42128c9f7df6085fb92bb5af5c9bd4d1ba88a3
2012-11-30 15:32:56 -08:00
Svetoslav Ganov
488c2d274b am d902dbb2: am ed734d98: am 0e7adaff: am 438a3b35: Merge "Cannot move edit text cursor to first position using character granularity." into jb-mr1-dev
* commit 'd902dbb2ea7fa3cf50e89d84d1758bac4738e0e1':
  Cannot move edit text cursor to first position using character granularity.
2012-11-30 13:26:06 -08:00
Svetoslav Ganov
d902dbb2ea am ed734d98: am 0e7adaff: am 438a3b35: Merge "Cannot move edit text cursor to first position using character granularity." into jb-mr1-dev
* commit 'ed734d98d014945cf28aa5e49ba1fd2ff5c82c01':
  Cannot move edit text cursor to first position using character granularity.
2012-11-30 13:21:53 -08:00
Svetoslav Ganov
ed734d98d0 am 0e7adaff: am 438a3b35: Merge "Cannot move edit text cursor to first position using character granularity." into jb-mr1-dev
* commit '0e7adaff99778c596bfd3f4c1e42710592c472a2':
  Cannot move edit text cursor to first position using character granularity.
2012-11-30 13:17:08 -08:00
Svetoslav Ganov
0e7adaff99 am 438a3b35: Merge "Cannot move edit text cursor to first position using character granularity." into jb-mr1-dev
* commit '438a3b35f7a6184a19919de90f733be82e21a84c':
  Cannot move edit text cursor to first position using character granularity.
2012-11-30 12:40:37 -08:00
Adam Powell
b34aedcf68 am 8912a72c: am 46263369: am 66cedab6: Merge "Fix time-related ScaleGestureDetector methods" into jb-mr1.1-dev
* commit '8912a72cb2e97f595d3026da973ae99db1bb64b9':
  Fix time-related ScaleGestureDetector methods
2012-11-29 14:33:06 -08:00
Adam Powell
8912a72cb2 am 46263369: am 66cedab6: Merge "Fix time-related ScaleGestureDetector methods" into jb-mr1.1-dev
* commit '462633695774a3cfd84b5c729266d039ec686a64':
  Fix time-related ScaleGestureDetector methods
2012-11-29 14:27:01 -08:00
Romain Guy
a4caee0115 Merge "Cleanup: remove unused property" 2012-11-29 13:15:22 -08:00
Romain Guy
215dcb1caa Merge "Fire view removed event *after* a View is removed" 2012-11-29 13:05:21 -08:00
Romain Guy
1741d73441 Cleanup: remove unused property
Change-Id: I09b418ef8888c42a876cb9014b22231ec31ca7eb
2012-11-29 13:05:16 -08:00
Romain Guy
d075031944 Improve profiling by using Choreographer
This will avoid jank and lead to better measurements.

Change-Id: Id18587a0a0b7d45adb3a65dfc427800565cc5d0b
2012-11-29 11:34:43 -08:00
Romain Guy
6fb05630cf Fire view removed event *after* a View is removed
Change-Id: Ia4066002b19c438c90a57ef9c513d82564425640
2012-11-29 10:50:33 -08:00
Adam Powell
4626336957 am 66cedab6: Merge "Fix time-related ScaleGestureDetector methods" into jb-mr1.1-dev
* commit '66cedab63bf0c17e59a5815200bd9200164d89ec':
  Fix time-related ScaleGestureDetector methods
2012-11-28 19:50:46 -08:00
Adam Powell
7232b0ad67 Fix time-related ScaleGestureDetector methods
Bug 7626515

Change-Id: Ie7abf9c166284a74b4e7bcf9de25520cf08e3b2d
2012-11-28 18:29:22 -08:00
Svetoslav Ganov
f4782ec9c5 Switching the accessibility poolable classes to the new pool management APIs.
The pool management APIs were simplified and using them requires much less
code than implementing your own pooling. Using common pooling logic is
also less error prone. This change swithces AccessibilityEvent and
AccessibilityNodeInfo to the new APIs.

Change-Id: I2dcfe2e1b0b0be5f89bd92359766ae3d6f8a143b
2012-11-28 09:11:51 -08:00
Svetoslav Ganov
abae2a1b89 Simplification of the poolable management utils.
Before to implement a pool of objects, the pooled class had to implement an
   interface which was leaking the pool management APIs. This requires
   hiding APIs - inconvenient at best. Further, each client had to
   implement the chaining of pooled instances which means adding a couple
   of member variables which are manipulated by the implemented interface
   methods. As a consequence the client is aware of how pooling is
   implemented which is error prone and breaks encapsulation. Now the
   pool objects are responsible for managing pooling state via reusable
   wrapper objects and the clients are oblivious of how pooling is done.
   Creating a thin cached wrapper for each pooled object has minimal
   performance impact while making the code more maintainable. Actually
   implementing of the old version of the APIs was taking as much code
   as implementing the pooling yourself.

   Also clients had to implement a poolable manager whose responsibility
   was to create new instances and provide callbacks when an instance
   is added to or removed from the pool. Now, the clinet class should
   create a static member for the pool and expose obtain/aquire and
   release/recycle methods in which it should create a new instance if
   the pool did not return one and clear the state of the host when
   it is returned to the pool. Updated the JavaDoc with a best practice.

   The pooling was composed of several interfaces and classes scattered
   over a few files, now all this is in a single small file.

   Update all usages of the pooling APIs in the framework.

Also one had to write a poolable
   manager which

Change-Id: Ib8dc286040eb3d7cb7d9668ba76fead05cb97647
2012-11-27 19:10:51 -08:00
Romain Guy
f6ae4b897b Reset stored background resource when setting a bg color
This sequence of operations would prevent the background from
changing:

setBackgroundResource(R.something)
setBackgroundColor(aColor)
setBackgroundResource(R.something)

The last call would be no-oped.

Change-Id: I436a33599c88e35f6f36bdd63e9c256c9219e052
2012-11-27 13:57:27 -08:00
Svetoslav Ganov
02c6fca90a Cannot move edit text cursor to first position using character granularity.
Navigating over text backwards by character does not allow the cursor to get
at the beginning of the text and it stops one position before the start. Now
the cursor can get to index zero which is before the first character.

bug:7307336

Change-Id: I109b579835cc080907b20b01e0cf07811e962c6c
2012-11-26 17:52:06 -08:00
Chet Haase
60b5509ff1 Merge "Fix layout-in-layout logic" 2012-11-26 07:20:16 -08:00
Svetoslav Ganov
6ce77cdd6a Adding dump support for the accessibility manager service.
Change-Id: Ibc8d9eac3be065f1a753e1401568b8f93263b051
2012-11-21 16:38:50 -08:00
Chet Haase
d5a835259d Fix layout-in-layout logic
Fix to allow requestLayout() during layout needs to disable
the "currently doing layout" flag while it processes the requests
that came in during layout to allow these initial requests to go
through unhindered.

Change-Id: Ied5ff1589224792f153cc10f65e004f14724523d
2012-11-21 16:30:07 -08:00
Fabrice Di Meglio
b920b40510 am e784ae8e: am d689e8c3: am b0f895b3: Merge "Fix Javadoc for View layoutDirection / textDirection / textAlignment" into jb-mr1.1-dev
* commit 'e784ae8e6a0eab3d29afc9b19f65714e7b268b97':
  Fix Javadoc for View layoutDirection / textDirection / textAlignment
2012-11-19 15:17:30 -08:00
Fabrice Di Meglio
e784ae8e6a am d689e8c3: am b0f895b3: Merge "Fix Javadoc for View layoutDirection / textDirection / textAlignment" into jb-mr1.1-dev
* commit 'd689e8c3a05f3b200d19879bdc169e6ad6e0436b':
  Fix Javadoc for View layoutDirection / textDirection / textAlignment
2012-11-19 15:14:02 -08:00
Fabrice Di Meglio
d689e8c3a0 am b0f895b3: Merge "Fix Javadoc for View layoutDirection / textDirection / textAlignment" into jb-mr1.1-dev
* commit 'b0f895b330d0d2b6725e7deee158ff20ed9155f8':
  Fix Javadoc for View layoutDirection / textDirection / textAlignment
2012-11-19 14:31:02 -08:00
Fabrice Di Meglio
7d529cd6eb Fix Javadoc for View layoutDirection / textDirection / textAlignment
Change-Id: I2fa2f02bd2f59ee93ccd56fc6bd28b93e4713cc4
2012-11-14 18:09:30 -08:00
Justin Koh
14b46b1583 am 674db142: am 44643269: Merge "Make tap events less sensitive." into jb-mr1-aah-dev
* commit '674db142c56f01e581f7df4f3013e22f0922b21f':
  Make tap events less sensitive.
2012-11-12 10:26:29 -08:00
Justin Koh
674db142c5 am 44643269: Merge "Make tap events less sensitive." into jb-mr1-aah-dev
* commit '446432692a2a7e60c7f547d6c7436922eb571d8e':
  Make tap events less sensitive.
2012-11-12 10:24:21 -08:00
Ben Pietrzak
ffb5bdef63 Make tap events less sensitive.
Change-Id: I4d6f70b56373fbc51a414510897854078eeb0c40
2012-11-12 10:11:52 -08:00
Jim Miller
08bb2316f1 am 061b4fae: am a2bf6181: am 2c29deaa: am 6be441c5: Merge "Add mechanism to kick keyguard to show the assistant" into jb-mr1-lockscreen-dev
* commit '061b4fae3daf40c90b46e16b12e7f22142eb498c':
  Add mechanism to kick keyguard to show the assistant
2012-11-08 15:58:03 -08:00
Justin Koh
9d0640cfb6 am 3e94c562: am cd38c32d: Merge "Catch exception of nonfound activities" into jb-mr1-aah-dev
* commit '3e94c56215fa540ca722ab7b23710b82c08d20a4':
  Catch exception of nonfound activities
2012-11-08 15:55:14 -08:00
Jim Miller
061b4fae3d am a2bf6181: am 2c29deaa: am 6be441c5: Merge "Add mechanism to kick keyguard to show the assistant" into jb-mr1-lockscreen-dev
* commit 'a2bf6181dfca0f93461fc041f2bd2444551a4515':
  Add mechanism to kick keyguard to show the assistant
2012-11-08 15:47:04 -08:00
Justin Koh
3e94c56215 am cd38c32d: Merge "Catch exception of nonfound activities" into jb-mr1-aah-dev
* commit 'cd38c32d85c13fde87ca7bee501cbe35230078b6':
  Catch exception of nonfound activities
2012-11-08 15:43:34 -08:00
Jim Miller
d97b09b0f3 am bef82757: am c7dc250d: am fe7e94a0: am 088fb915: Merge "Add isSafeModeEnabled() API to WindowManagerService" into jb-mr1-lockscreen-dev
* commit 'bef827572ce9644253ea42ab91b11b8107d2300f':
  Add isSafeModeEnabled() API to WindowManagerService
2012-11-08 15:37:01 -08:00
Jim Miller
bef827572c am c7dc250d: am fe7e94a0: am 088fb915: Merge "Add isSafeModeEnabled() API to WindowManagerService" into jb-mr1-lockscreen-dev
* commit 'c7dc250d5a3dab93ff87e9986a71ae58ff124399':
  Add isSafeModeEnabled() API to WindowManagerService
2012-11-08 15:32:09 -08:00
Jean-Baptiste Queru
7c8d2b63c0 Merge from jb-mr1-dev-plus-aosp
Change-Id: I28afbc0b04c22b9416973dc4d37783404997a4a3
2012-11-08 15:19:11 -08:00
Jean-Baptiste Queru
c23cfe57a9 Merge remote-tracking branch 'goog/jb-mr1-dev-plus-aosp' into HEAD 2012-11-08 14:48:54 -08:00
Jean-Baptiste Queru
40a419c2a5 Merge commit '58ed5d748c0b9b64845975ef5844ad313de7c3f6' into HEAD 2012-11-08 14:44:35 -08:00