Commit Graph

217 Commits

Author SHA1 Message Date
Phil Weaver
b0f9f77768 Fix crash when user changes after a11yservice dies am: e797b84ed2 am: 575e714616
am: ecf0962a64

Change-Id: I138041bd7f6781fd4ceaec52dff5e2bb9125574a
2016-08-29 21:52:48 +00:00
Phil Weaver
e797b84ed2 Fix crash when user changes after a11yservice dies
We were failing to create a death link for the service that
replaces the crashed a11y service. Adding an invariant that
mService is always linked to death if it is non-null.

Bug: 31044551
Change-Id: I98b6a3969cfacb0309e19938899a51c809249d6b
2016-08-24 17:30:46 -07:00
Phil Weaver
0dbf913d78 Merge ag/1290921 to master.
Original commit:
Dispatch a11y events in separate thread.

Moves the IPCs into a separate thread, where they should affect
jank a lot less.

Bug: 30183085
Change-Id: I7bc8a777fe76dd76f661cc3e3e1d45a2a28df0d2
2016-08-23 09:27:04 -07:00
Phil Weaver
c34649411d Dispatch a11y events in separate thread.
Moves the IPCs into a separate thread, where they should affect
jank a lot less.

Bug: 30183085
Change-Id: Ib76159d158e7a867e76cdd5c8ea3a318949fcc5b
2016-08-19 09:22:10 -07:00
Phil Weaver
669340c785 Merge "Add null check in key event handling." 2016-08-18 15:50:37 +00:00
Phil Weaver
7f7588d3fb Restart accessibility services after they update. am: 1e6695bbd4 am: fff4a144de
am: f49d1bab46

Change-Id: I27d86acb98d9cf19f89af036202af9b0a911eea6
2016-08-18 01:01:17 +00:00
Phil Weaver
771f9aefdc Add null check in key event handling.
Bug: 30866905
Change-Id: I4bc4c984026d7d2be594b816e3d6de60410970ef
2016-08-17 17:52:38 -07:00
Chong Zhang
921f8e35d8 resolve merge conflicts of 9391bc5 to master
Change-Id: I6de231781233826b399688dc8ead70ba515b1ccb
2016-08-17 14:38:12 -07:00
Phil Weaver
fff4a144de Restart accessibility services after they update.
am: 1e6695bbd4

Change-Id: I10714ce8ebc0b9ca6dd206a4a11e283704d668ae
2016-08-17 20:56:02 +00:00
Phil Weaver
ee4ff424ea Merge "Restart accessibility services after they update." into nyc-mr1-dev 2016-08-17 20:52:06 +00:00
Chong Zhang
5e09ceb641 Add new window type TYPE_DRAWN_APPLICATION
am: fea963edee

Change-Id: If7acf1349b87d4be88a9b4f9fbd984bbd4aca8ad
2016-08-17 17:16:18 +00:00
Phil Weaver
1e6695bbd4 Restart accessibility services after they update.
In ag/1273924, we stopped restarting services that were
still bound. When the package changes, however, the system
unbinds from a service and has no way to tell us that it is
not going to restart it (as it would if the service
crashed.)

Now we listen for package updates and unbind affected
services. The services will then be restarted as there will
be enabled services that are no longer bound.

Bug: 30866905
Change-Id: I375edfd6a37ed25f959ec354930cec8f288deb6b
2016-08-16 16:51:45 -07:00
Chong Zhang
f925b8df92 Merge "Add new window type TYPE_DRAWN_APPLICATION" into nyc-mr1-dev 2016-08-16 19:49:29 +00:00
Phil Weaver
2a0e48aaf5 Add null check to KeyEventDispatcher.
Make sure we don't try to dispatch key events to services
that have died. Doing so crashes the device.

Bug: 30866905
Change-Id: I1cc0515cca8924b0c2744de98ac75a901b94246d
2016-08-15 17:49:55 -07:00
Chong Zhang
fea963edee Add new window type TYPE_DRAWN_APPLICATION
This type behaves like a normal TYPE_APPLICATION, except that WM
will always wait for it to be drawn before starting a transition.

WM always waits for TYPE_BASE_APPLICATION (main window), but for
TYPE_APPLICATION, it only waits if the window relayouts to visible
and gets a surface before the main window is drawn. If main window
itself is ready very fast, transition could start without the other
window.

bug: 30830849
Change-Id: Ife71a9812db7c8eba6ee4ead10ce4f31d9e93b40
2016-08-15 17:36:40 -07:00
Phil Weaver
30cf918c4b Limit capabilities of a11y gesture dispatch. am: a8918f23c7 am: 0e97bb6c1a
am: 3d40beacfd

Change-Id: I006b848679d7e605740e1e1e9eecddad7878873b
2016-08-11 21:11:57 +00:00
Phil Weaver
0e97bb6c1a Limit capabilities of a11y gesture dispatch.
am: a8918f23c7

Change-Id: I8c14c8b8ada7e7c53b17be2df63c14c4e0e10c83
2016-08-11 20:53:44 +00:00
Phil Weaver
364580d20a Merge "Limit capabilities of a11y gesture dispatch." into nyc-mr1-dev 2016-08-11 20:35:12 +00:00
Phil Weaver
a8918f23c7 Limit capabilities of a11y gesture dispatch.
Changing the service side to accept descriptions of
motion events, not motion events themselves, so we can
control their creation.

Bug: 30647115
Change-Id: Ia6772a1fc05df91818e3f88959d1e2b4a35fe0cc
2016-08-08 10:23:17 -07:00
Phil Weaver
ba5b372d96 Improve handling of crashing a11y services. am: a8cfb3733d am: 32c6f10a7f
am: 5468790629

Change-Id: I34570f56688194857b61cf7163dfcf5494019c2a
2016-08-05 23:55:25 +00:00
Phil Weaver
32c6f10a7f Improve handling of crashing a11y services.
am: a8cfb3733d

Change-Id: I303d1dfdb328b787b4315d846dfb4d9bbc747b75
2016-08-05 23:44:40 +00:00
Phil Weaver
f861b916e4 Merge "Improve handling of crashing a11y services." into nyc-mr1-dev 2016-08-05 23:28:48 +00:00
Phil Weaver
0b59a14311 Only filter a11y motion events if needed. am: dc5dedeaa2 am: a83d1ca796
am: 7bd4a5a36f

Change-Id: I6bffe258d2e7cdfb78070a242b37f34da38c5287
2016-08-05 01:14:40 +00:00
Phil Weaver
dc5dedeaa2 Only filter a11y motion events if needed.
We've seen some jitter in motion events with accessibility
enabled. We can eliminate it by not passing motion events
through the filter if we know they won't be affected.

Bug: 30183085

Change-Id: I0ecc8d5a39c8e370fc3a8ab85c6357251a31f8ad
2016-08-04 15:58:44 -07:00
Phil Weaver
a8cfb3733d Improve handling of crashing a11y services.
We were confusing handling of services that were unbound with
those that had crashed. We would lose track of services that
has crashed, start new ones, and then when the system restarted
a killed services we would have multiple instances running. It
was possible for this to get very out of hand.

Bug: 30306689
Change-Id: I4e63d25b6d2fec3ec68f450a4602898c43a2b2ad
2016-08-04 15:45:13 -07:00
Phil Weaver
140df85b13 Merge "Add tests for accessibility motion event injector." 2016-07-20 16:45:47 +00:00
Svetoslav Ganov
f6d56f92ff Merge "Update windows before sending a window state change event" 2016-07-18 21:54:14 +00:00
Phil Weaver
a7dcedc65f Add tests for accessibility motion event injector.
Change-Id: If871f0a67d9265683fcbbabea382d54f3898a4c5
2016-07-15 14:35:35 -07:00
Justin Klaassen
290c38567e Merge \\"Refactor display color transforms\\" into nyc-mr1-dev am: 94673f0b7c
am: 5f3bf63121

Change-Id: I06a60ef4a1fa23e0c1f5b6ab97462811b6aaf239
2016-07-14 20:09:52 +00:00
Justin Klaassen
22eb19939d Refactor display color transforms
- Removed Secure.ACCESSIBILITY_DISPLAY_COLOR_MATRIX, it's not desirable
  to persist the actual color transformation matrix.
- Refactored all SurfaceFlinger transforms to DisplayTransformManager,
  which allows color transforms to be set independently from the a11y
  manager service.

Bug: 30042357
Change-Id: Iefa477dedb66aac90e1218e327802a3fab6899ed
2016-07-14 11:28:07 -07:00
Svetoslav Ganov
fd138896d5 Update windows before sending a window state change event
Change-Id: Ie25b75ccc739dcacbbffd2b3a32fe65086882c64
2016-07-14 01:24:37 +00:00
Phil Weaver
8c1e36b440 Add tests for KeyEventDispatcher.
Some minor but needed changes to the class under test to
gain visibility for tests to do things like make events
on Handlers happen on demand to verify various event ordering.

Change-Id: I5096de697906f8d28b47f47dc2be2f8199ee4e19
2016-07-01 15:57:42 -07:00
Phil Weaver
ee77b881a4 Report all content changes to a11y services.
Changes were discarded if they arrived too quickly in
A11yManagerService. Excuse content change events from
throttling at this level.

Bug: 29355115
Change-Id: Ifd9da07315ce0c18f59c1dad6a621110ad48343b
2016-06-22 12:35:26 -07:00
Zachary Kuznia
ec1783828e Ensure MotionEvent.split() won't be given an invalid value.
b/27496784

Change-Id: I28bb4ac5bb8a705e7af9b22b2b56cd4061aa06a0
2016-05-25 12:38:58 -07:00
Phil Weaver
37fc1c1ce4 Don't disrupt a11y state when user is unlocked.
AccessibilityManagerService#unlockUser was assuming that we should
switch to the unlocked user's state. If that user is a new work
profile, this transition disables all accessibility features.

Bug: 28726050
Change-Id: I3797d34b580d00642b204fff3fc9a07b720738e0
2016-05-11 16:24:13 -07:00
Phil Weaver
2fbdd48682 Reduce cost of a11y services with magnification.
Services that declare that they can control magnification,
but never actually make a change or register a listener
waste cycles as we compute magnification data they never use.

Avoid registering for magnification callbacks unless magnification
gestures are enabled, a service is listening for magnification
changes, or a service has changed magnification.

Bug: 28425922
Change-Id: I114a833669bd53b2cd757c94ea52b65a2f838a08
2016-05-09 16:21:29 -07:00
Phil Weaver
0f36545bb8 Re-enable accessibility when UiAutomation closed.
We need to read the settings when UiAutomation closes in order to
configure other accessibility features from settings.

Bug: 28461805
Bug: 28460671
Change-Id: I030761922ec4acfa2d916e171c39e9dc2deb85a2
2016-05-02 11:36:00 -07:00
Jeff Sharkey
ce18c81677 Introduce "unlocking" vs "unlocked" nuance.
There is a narrow window of time during user unlock where we're
reconciling user storage and dispatching the "unlock" status to
various internal system services.  While in this "unlocking" state,
apps need to be told that the user still isn't actually "unlocked"
so they don't try making calls to AccountManager, etc.

The majority of internal services are interested in merging together
both the "unlocking" and "unlocked" state, so update them.

Clarify naming in AccountManagerService to make it clear that a local
list is being used, which mirrors the naming in MountService.

To match UX/PM requested behavior, move PRE_BOOT_COMPLETED dispatch
after the user is unlocked, but block BOOT_COMPLETED dispatch until
after all PRE_BOOT receivers are finished to avoid ANRs.

Bug: 28040947, 28164677
Change-Id: I57af2351633d9159f4483f19657ce0b62118d1ce
2016-04-28 10:51:39 -06:00
Phil Weaver
1f70f0b7d6 Merge "Fix several accessibility magnification issues." into nyc-dev 2016-04-27 22:50:37 +00:00
Phil Weaver
70439244ba Fix several accessibility magnification issues.
Clarifying region used for magnification as "magnificationRegion",
both in the public API and in the code. There's been significant
confusion about what "magnfifiedRegion" means. Removing
"availableRegion" from everywhere except where it's required, as
that region was identical to magnified/magnification region.

Trying to shut down magnification was a complex situation where
animations in progress and new magnification requests were tricky to
handle correctly. It was not possible to guarantee that the
magnification callbacks were unregistered consistently. There were
at least two situations that led to phone restarts:
1. If a triple tap was detected between unregistering the callbacks
and shutting down the input filter. In this case the magnification
request would go through.
2. If an animation had just started when magnification was turned
off, so the current magnification was 1.0 but the animator was
about to change it. In this case the callbacks would be unregistered,
and then the animator would start changing the magnification.

This change makes registering and unregistering magnification atomic.
It also makes MagnificationController stick around indefinitely once it
is created, registering and unregistering as needed to support
magnification gestures and services that control magnification. Services
that merely query the status of magnification no longer register for
callbacks.

One part of shutting down is turning off the animation and guaranteeing
that it won't try to make further changes. Adding a flag to
SpecAnimationBridge and a lock in that class so we can guarantee that
nothing happens when we aren't registered for magnification callbacks.

Also reconfiguring all accessibility options when a service stops to
make sure that only the features required by the current configuration
are enabled.

Bug: 27497138
Bug: 27821103
Change-Id: If697cbd34b117d82c8eee1ba7d0254089ee4241d
2016-04-27 13:57:43 -07:00
Phil Weaver
4b88bddb12 Merge "Fix a11y key event handling from multiple devices." into nyc-dev 2016-04-21 01:38:49 +00:00
Phil Weaver
698c96dbd2 Fix a11y key event handling from multiple devices.
For M, we ignored device type entirely, but with ag/760625 we started
paying attention to it, which rejects events when keys from different
devices are pressed simultaneously. Since the volume keys show up as
different devices, the new behavior disrupted the event stream when
both volume keys were pressed.

Now tracking each device separately, which restores the old behavior
but still takes the device id into account. Holding down two keys
when enabling an accessibility service, however, always has and still
can produce an invalid event stream. It doesn't seem worth the
overhead, however, to track each key separately.

Bug: 28091773
Change-Id: I8d30de1f5e05f779b6fe305856d42f209ff8b038
2016-04-20 13:08:35 -07:00
Phil Weaver
b72c30653d Merge "Clear calling identity when binding a11y services" into nyc-dev 2016-04-20 16:33:28 +00:00
Phil Weaver
13ce4693d3 Clear calling identity when binding a11y services
When a UiAutomation is destroyed, accessibility services may get
enabled as a side effect. That was causing these services to be
enabled in a binder thread, which threw a SecurityException.

Bug: 28268310
Bug: 28163652
Change-Id: Ie25ab05569b5b21b5f30e7d7eed24ef73b7ba159
2016-04-19 17:07:20 -07:00
Adrian Roos
f2efdd8c7c Fix unprotected StatusBarManagerService calls
Some Binder calls in StatusBarManagerService were
left unprotected. They had no business being binder
calls in the first place, so they got moved to
StatusBarManagerInternal.

Bug: 28222649
Change-Id: Ib26dcca413eb642ba8cd6a4482bf13071f8bd3ab
2016-04-18 13:36:40 -07:00
Svetoslav Ganov
7d477d4845 Properly notify magnification listener
bug:28088856

Change-Id: Iffd848082f035319aab3af177921bb3085844ab0
2016-04-15 14:30:47 -07:00
Svetoslav Ganov
33f576b9e9 Merge "Ensure injected gestures respect magnification" into nyc-dev 2016-04-13 22:09:18 +00:00
Svetoslav Ganov
416bba7b46 Ensure injected gestures respect magnification
Change-Id: Ie828f4be4eb1ec620549c1346ec7cc335908612f
2016-04-13 15:03:51 -07:00
Svetoslav Ganov
0a59531581 Fix a regression in magnification center x,y
bug:28133561

Change-Id: If37baa5f2ebe5840b50ca845bf81ce70cedf0412
2016-04-12 18:02:54 -07:00
Phil Weaver
af93306a3d Merge "Reduce unnecessary accessibility cache clearing." into nyc-dev 2016-04-08 22:33:33 +00:00