History log of /frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
155edc693eecb64d821a95567e719d0de7ee9c85 09-Jun-2016 Phil Weaver <pweaver@google.com> Improve accessibility window title behavior

Un-reverts ag/1057448, but uses a version of Resources#getText
that returns null rather than throw an exception when no title
is available. This is the same call made before, so this change
should be safer.

Bug: 28744278
Change-Id: I8c123f4f6d74f796ab9e8ffcf955aaf881770da1
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
266ed9acc396ff007b75b8356429d703117de2d7 08-Jun-2016 Phil Weaver <pweaver@google.com> Revert "Improve accessibility window title behavior"

Bug: 29127065

This reverts commit 2a7e4442bf9892842e0fc7eba9296e8fcf9f8ea5.

Change-Id: Ibc5527cfedd49c685ffd1b8ae59e87ed99c93d39
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
2a7e4442bf9892842e0fc7eba9296e8fcf9f8ea5 20-May-2016 Phil Weaver <pweaver@google.com> Improve accessibility window title behavior

Suppress the default, unlocalized strings from being read as title.

Bug: 28744278
Change-Id: Iea0f7d8fed3d6428ada725cf3ffa077ba974b74a
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
70439244ba1abc4f32357d2ee8ff38f73158fe37 11-Mar-2016 Phil Weaver <pweaver@google.com> 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
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
9be3c7bdc7d49e9f99861d20fb134799291f20df 08-Apr-2016 Phil Weaver <pweaver@google.com> Eliminate side effects of a11y window title.

ag/898112 added passing the window title to accessibility. To do that,
it also updated copy of the title in WindowManager.LayoutParams. That
was a behavior change, and the change broke cts tests that enforce that
the title in LayoutParams matches its expected format.

This change restores the previous behavior and adds a separate field to
LayoutParams to old an up-to-date title to pass to accessibility.

Bug: 28002185
Change-Id: Ia5b549113600b7c4fcc80b76c3f3a944dddaf483
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
d4a19326085f2a68d568dfa754c29fd0ac49d193 04-Apr-2016 Phil Weaver <pweaver@google.com> Merge "Add accessibility window title and anchor." into nyc-dev
65c067083e663805ed41ca0ae787345d186b0624 15-Mar-2016 Phil Weaver <pweaver@google.com> Stop non-touchable regions affecting magnification

A window's magnifiability only applies to its touchable regions, so a
non-touchable shadow over an IME won't affect the IME's magnifiability.

Bug: 27179277
Change-Id: I86076e001035678c73973d7a98e0dcac6143553e
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
396d549113bc633f719acc643c7dfc5f2a8fae4e 23-Mar-2016 Phil Weaver <pweaver@google.com> Add accessibility window title and anchor.

Plumbing through the title of windows so support multiwindow
accessibility.

Adding ability to determine the anchor of a pop-up window so the pop-up
can be traversed as part of its anchor.

Bug: 27687627
Bug: 8449376

Change-Id: I59e98a29fb90029407a26de5bf3d900fed5dd627
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
59e53a164e1e8d19830f16b6e3a743c7ebe0c1aa 28-Mar-2016 Alan Viverette <alanv@google.com> Various fixes for MagnificationController

- Ensure initial magnified and available regions are set
- Correctly offset magnified bounds by left coordinate
- Cancel ongoing animations before unregistering callbacks

Bug: 22718911
Bug: 27871383
Change-Id: Iaff63be856598d1f8edb2d94158bbd75045c86ec
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
f20ac2c1b86b56e763c6436effdea7f6c46e022b 12-Feb-2016 Allen Hair <allenhair@google.com> Limit modal windows to only hide windows in the same task.

Bug: 26560078
Change-Id: Ic3bd8d06ed0d8d44a8e7f0faaba31a762a9bfef3
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
0bd180d8880b3d1b9677f154c034a2af840b4796 08-Dec-2015 Filip Gruszczynski <gruszczy@google.com> Improve debugging setup for window manager package.

This moves debug flags to a dedicated class and also provides a
mechanism to either have fine grained tags or one common tag for easier
grepping the logcat. This mimicks the approach in activity manager
package.

Change-Id: Ie8c08b9a3d8b182335ee5547ee05d21b5933db6b
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
8f7f3184d55850b1c4d2036319794151f564e9c0 18-Nov-2015 Jason Monk <jmonk@google.com> Allow QS tiles to open dialogs

Add a TYPE_QS_DIALOG window type, that is in the same layer as
apps and dialogs and such. It is guarded by having a token
that is granted by SysUI after a click has occured. If the
app shows a dialog before listening finishes (QS closes) then
the token will stay granted until the tile is removed by the
user, otherwise the token will be removed immediately to avoid
later dialogs.

Also fix a couple tiny TileService issues:
- Stop/Start listening reversed
- Fix javadoc referencing wrong action

Change-Id: Iedcdd5fd9a2af2b33eb7f6f17bb0e6c997879876
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
214fb68767502f5fede643a062c1dc5975d75b27 17-Nov-2015 Alan Viverette <alanv@google.com> APIs for querying and controlling display magnification

Also separates magnification state and touch event handling. Moves
callbacks for window manager changes and display state changes into
the magnification controller.

Bug: 22718911
Change-Id: I3a8ba060a07d8f1f51856855a5f85601766fd45d
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
2a6a2c2de8ce2743679f488f056f22cd1adfd726 14-Oct-2015 Filip Gruszczynski <gruszczy@google.com> Change WindowState.mShownFrame to WindowState.mShownPosition.

We never use this field as a rectangle, we only depend on its left-top
corner. Using a frame is only confusing about the purpose of this field.

Change-Id: I5d6e6321db4fa3203bb7e0f1975ae6ddd1ec09bb
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
f83e824216435e45f36a3587e269888f791b2a01 20-May-2015 Selim Cinek <cinek@google.com> Fixed that touches where incorrectly consumed when fullscreen

The fake window that was added when View.SYSTEM_UI_FULL_SCREEN was
set consumed all touches, even those going to the SystemUI and not
just those of windows below. The input consumer is now correctly
positioned in the window order to only capture the right touches.
Clicks to the volume panel and the heads up now correctly go to the
right place instead of just unhiding the SystemUI bars.

Bug: 21089476
Change-Id: Ib53dfc0b33b70084ca607d0f044db30b6e6c91d6
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
01f280d376218c5a007fc29f70b876375ad24204 19-May-2015 Adam Powell <adamp@google.com> Migrate uses of config_windowIsRound to Configuration.isScreenRound

Move existing code that previously relied on config_windowIsRound to
use the new Configuration.isScreenRound() method. Also move the system
property override for emulators over to the initial setup of a Display
so that the configuration property is consistent with existing
expectations.

Remove config_windowIsRound from symbols.xml. The symbol now only
exists as a default value redirect for overlays already configured to
supply this value.

Change-Id: I24e6564030a6051c3ac7262868983b43e13eee65
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
0a4dc2258fa8216920e1a0b83cbf7d3729386e2f 14-Apr-2015 Wale Ogunwale <ogunwale@google.com> Added TYPE_APPLICATION_ABOVE_SUB_PANEL window type.

TYPE_APPLICATION_ABOVE_SUB_PANEL will be displayed on top of their
attached window and any TYPE_APPLICATION_SUB_PANEL panels.

Bug: 20135562
Change-Id: I711de3c19c01432c44de205bf09934a8b23b53fd
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
4a357cd2e55293402d7172766f7f9419815fc1e8 19-Mar-2015 Alan Viverette <alanv@google.com> Replace usages of deprecated Resources.getColor() and getColorStateList()

Change-Id: I8f64fe6c4c44a92ff6d07250223ba590a1d691b0
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
032559650e4ac9844f92b0b746735d09a11f82dd 13-Feb-2015 Casey Burkhardt <caseyburkhardt@google.com> am 6f2dd8a9: Merge "Support circular magnification frame on circular devices" into lmp-mr1-modular-dev
automerge: d1a5b5d

* commit 'd1a5b5dc07dc3798ae13a5a9538b5e5bbbeb8058':
Support circular magnification frame on circular devices
d29a1e47d44ac072502342c3b9f55e9870e914ba 12-Feb-2015 Casey Burkhardt <caseyburkhardt@google.com> Support circular magnification frame on circular devices

The magnification viewport expects its boundary to be a rectangular region,
and always draws it as such. This change causes the indicator to draw as a
circle on devices with circular displays. This also refactors the width of
the indicator's frame to use a proper dimension resource and updates the
width to 4dip.

Bug:18242438
Change-Id: I1d86647b6d1ef84f5dd506f4141223ec050a79b5
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
165be0c70d128f0ece876d54e1c7e95ef04c6960 28-Jan-2015 Craig Mautner <cmautner@google.com> Remove TYPE_UNIVERSE_BACKGROUND from system

An experiment that is over and has been occupying space.

Fixes bug 18088522 item #7

Change-Id: Ib0fcaa24243ed9b0581143e1d5114c1fd2b0aa6e
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
3a0d878ab56475276c61d574af7651820a5cea5a 04-Dec-2014 Svetoslav <svetoslavganov@google.com> Ensure all events from a showing window are dispatched.

Accessibility services may opt-in to introspect the interactive
windows on the screen. If window introspection is enabled there
is a case where some events from a showing window are received
before the updated window state from the window manager. Now the
window manager sends over the windows before notifying the app
for the focus change.

bug:18625996

Change-Id: Ic481e01efbe12dc92f090f799feeb236672fc7b3
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
d0c73f49b72a4801fc19d2bda2b9239c34c6fa06 18-Nov-2014 Alan Viverette <alanv@google.com> Don't ignore accessibility overlays during visibility computation

Just don't use then to compute unaccounted space. This is a partial
revert of commit 9538eea5ff6f8e2183ced81b5b8eac60b0e774ea.

Change-Id: Ie2e29c8934da8ef707d20db1333abd4e240cd213
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
9538eea5ff6f8e2183ced81b5b8eac60b0e774ea 13-Nov-2014 Alan Viverette <alanv@google.com> Ignore accessibility overlays during visible window computation

Previously, the conditional for checking the layer type before
accounting for the window bounds was incorrectly inverted, but
we can simplify by just skipping accessibility overlay windows
completely.

BUG: 18358878
BUG: 18359820
BUG: 18359788
Change-Id: I9ba1e43a0fef4fa40693bd8c7e883c2ef45b4c4d
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
3a5c721072c60c7ed9c8a95d0a65d0e3cb4eb9bb 14-Oct-2014 Svetoslav <svetoslavganov@google.com> APIs for an accessibility service to put interaction tracking overlays.

An accessibility service may register to observe the interactive windows
on the primary display. These windows are the one that has input focus and
ones a sighted user can touch. It is sometimes beneficial for an
accessibility service to overlay a window to intercept user interaction
and based on that introspect and perform an action on the windows that
are on the screen. This is problematic as overlaying a full screen window
that is touchable prevents the accessibility service to introspect the
content under this window.

This change adds a special type of window that only an accessibility service
can place which does not affect what an accessibility service can "see" on
the screen. Hence, even putting such a window full screen the service will
be able to interact with the other interactive windows it covers.

Change-Id: I053ccc3a5c6360a98dc40bdb172b54dab35d8b31
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
9a64513c7fccc2a9cf331a384906a7669b29b3f4 08-Oct-2014 Adrian Roos <roosa@google.com> Retire RecentApplicationsDialog

Bug: 5162991
Change-Id: I429da977502f33e2091496f3a075b2c507a88e1f
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
b21df801f43a979290092b0f50011370fa1b6ac0 02-Sep-2014 Svet Ganov <svetoslavganov@google.com> Magnification bounds not always animated on a looper thread.

In display manigfication mode we are showing a frame around the
magnified region. Showing and hiding this frame is animated. In
some cases the code calling into the display magnifier is not
running on a looper thread which leads to a crash when interacting
with the property animator. Now the animation is explicitly handled
in a dedicated handler that runs on the window manager's handler
looper thread.

bug:15506701

Change-Id: I3fada775c9fac8820599dd31ac80720021c70cb3
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
7505e3315cb997165035f3bcc736d9d257b1fe3c 22-Aug-2014 Svetoslav <svetoslavganov@google.com> Fix jank in when drawing magnification bounds

There was an off-by-one error in computing the invalidated
rectangle when drawing the magnified region border.

bug:17199352

Change-Id: Id0a1af092b7124bbdca316534c035ed9af829326
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
6170cca05eb13cfb44c8d13e7a447cd24f27a62c 17-Jun-2014 Svetoslav <svetoslavganov@google.com> Not touchable windows should not hide windows behind

When computing which windows to report for accessibility we were not
reporting windows behind non touchable ones. However, if a window is
not-touchable the touch events go to the window behind it. Hence, a
not-touchable window should not affect the reproted windows for
accessibility.

Change-Id: I213a32b33b0986a73d8bbdf0a3e40e6ca6e4261b
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
f7174e87b6007000777b0124de9cef70d8618788 12-Jun-2014 Svetoslav <svetoslavganov@google.com> Fix backwards compatibility for introspected windows.

1. The APIs for introspecting interactive windows were reporting only
the touchable windows but were missing the focused window. The user
can interact with the latter by typing, hence it should always be
reported. Also this was breaking backwards compatibility as if the
focused window is covered by a modal one, the focused window was not
reporeted and this was putting the active window in a bad state as
the latter is either the focused window or the one the user is touching.

2. Window change events are too frequent as on window transition things
are chanign a lot. Now we are trottling the windows changed events
at the standard recurring accessibility event interval.

3. Fixed a wrong flag comparison and removed some unneded code.

buy:15434666
bug:15432989

Change-Id: I825b33067e8cbf26396a4d38642bde4907b6427a
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
4604abc97d7dd757bb76ff9b7fcf343dc4a15212 11-Jun-2014 Svetoslav <svetoslavganov@google.com> Moving and resizing windows not reported propely for accessibility.

When the position and size of a window changes we have to report that
to the accessibility layer if the window introspection is enabled.

bug:15569915

Change-Id: I3f869e0a582592bfa5f3743d5c2133ee8cb39b34
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
eb94fa7975b1e8742f3b00cec6bd4f9d6b329e3a 04-Jun-2014 Dianne Hackborn <hackbod@google.com> Improvements to low power mode.

Add new public API for monitoring low power mode.

BatteryService now puts device in to low power mode when
battery level is low.

Window manager now watches low power mode to turn off
animations.

Modifying the animator scale now gets propagated to all
processes.

Change-Id: I8fa566994764ddd4e1977631e28381ab9409f8ee
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java
8e3feb15c5aec2c72b0ef120a1da325e1e8f0dda 24-Feb-2014 Svetoslav <svetoslavganov@google.com> Added accessibility APIs for introspecting interactive windows.

1. The old introspection model was allowing querying only the active window
which is the one the user is touching or the focused one if no window is
touched. This was limiting as auto completion drop downs were not inspectable,
there was not way to know when the IME toggles, non-focusable windows were
not inspectable if the user taps them as until a screen-reader starts
introspecting the users finger is up, accessibility focus was limited to
only one window and the user couldn't use gestures to visit the whole UI,
and other things I can't remember right now.

The new APIs allow getting all interactive windows, i.e. ones that a
sighted user can interact with. This prevents an accessibility service
from interacting with content a sighter user cannot. The list of windows
can be obtained from an accessibility service or the host window from an
accessibility node info. Introspecting windows obey the same rules for
introspecting node, i.e. the service has to declare this capability
in its manifest.

When some windows change accessibility services receive a new type
of event. Initially the types of windows is very limited. We provide
the bounds in screen, layer, and some other properties which are
enough for a client to determined the spacial and hierarchical
relationship of the windows.

2. Update the documentation in AccessibilityService for newer event types.

3. LongArray was not removing elements properly.

4. Composite accessibility node ids were not properly constructed as they
are composed of two ints, each taking 32 bits. However, the values for
undefined were -1 so composing a 64 long from -1, -1 prevents from getting
back these values when unpacking.

5. Some apps were generating inconsistent AccessibilityNodeInfo tree. Added
a check that enforces such trees to be well formed on dev builds.

6. Removed an necessary code for piping the touch exploration state to
the policy as it should just use the AccessibilityManager from context.

7. When view's visibility changed it was not firing an event to notify
clients it disappeared/appeared. Also ViewGroup was sending accessibility
events for changes if the view is included for accessibility but this is
wrong as there may be a service that want all nodes, hence events from them.
The accessibility manager service takes care of delivering events from
not important for accessibility nodes only to services that want such.

8. Several places were asking for prefetching of sibling but not predecessor
nodes which resulted in prefetching of unconnected subtrees.

9. The local AccessibilityManager implementation was relying on the backing
service being ready when it is created but it can be fetched from a context
before that. If that happens the local manager was in a broken state forever.
Now it is more robust and starts working properly once the backing service
is up. Several places were lacking locking.

bug:13331285

Change-Id: Ie51166d4875d5f3def8d29d77973da4b9251f5c8
/frameworks/base/services/core/java/com/android/server/wm/AccessibilityController.java