Commit Graph

6186 Commits

Author SHA1 Message Date
John Reck
862540cdb1 Merge "Revert "DO NOT MERGE Backport of limited jank-tracking metrics"" into lmp-mr1-dev 2015-05-14 00:40:45 +00:00
John Reck
25607a6642 Revert "DO NOT MERGE Backport of limited jank-tracking metrics"
This reverts commit 2614bd225f.

Change-Id: I344b4cbaa0bb0caf50bceb806d1446ee27ea52d8
2015-05-13 21:42:28 +00:00
John Reck
69355eaa1c Merge "DO NOT MERGE Backport of limited jank-tracking metrics" into lmp-mr1-dev 2015-05-13 21:42:13 +00:00
Svetoslav
37661db7fa AccessibilityNodeInfo refresh returns a stale state. - DO NOT MERGE
AccessibilityNodeInfo refresh was getting the latest cached
state but this is not good enough as an accessibility service
can execute an action on the node and then refresh it to get
the new state.

bug:16954787

Change-Id: I004b4987b8dc423a2ab7031a4fbfe64365ddd7fe
(cherry picked from commit 5738fec00d)
2015-03-31 01:25:35 +00:00
John Reck
2614bd225f DO NOT MERGE Backport of limited jank-tracking metrics
Bug: 19821830

Cherry-pick of ba6adf66d3
Cherry-pick of e70c5754d0

Change-Id: Id342fa0ab345f204bec58acf45ce72f6de950cfb
2015-03-18 14:22:01 -07:00
Svetoslav
27ad2e95b4 Accessibility: Ensure fresh accessilbity focused and input focused nodes.
Change-Id: Ia3c84284843a415cdbbc2b6a9b06d9ddffbe0e04
2015-02-13 01:59:11 +00:00
Svetoslav
c73cfa0ffb Accessibiltiy: missed update to the previous patch.
Change-Id: I4c47d38f5e137dcc1c6db0561b3824a26572027d
2015-02-09 18:33:07 -08:00
Svet Ganov
f33fe1f486 Accessibility: Handle a missed case when clicking focused views.
The special logic for clicking on views in accessibility mode should not
prevent event interception and if a view interceptes the gesture we must
clear the special flag and do normal event dispatch. Also once we have a
view handling the touch gesture we do not need the special flag as we
know what will handle the event. This tightly follows standard event
dispatching.

bug:19252492

Change-Id: I0c9764c5050ec73f5f7980f3f0340dd9509a725a
2015-02-07 10:36:59 -08:00
Svet Ganov
34123f1ce8 Merge "Accessibility: ignore children of a view with node provider." into lmp-mr1-dev 2015-02-06 21:49:02 +00:00
Svet Ganov
55bdb10c16 Accessibility: ignore children of a view with node provider.
A view that has an accessibility node provider should not have real children
since the provider is responsible to generate the node infos for the subtree
rooted at its hosting view. This is how the APIs are designed to work. However,
it is a common mistake and if this occurs the accessibility services
introspecting the screen get into an infinite loop.

The framework now does not add the real children of a view with a node provider
to the list of accessibility children. If the developer wants them exposed they
have to do that via the provider APIs as per contract.

bug:19297093

Change-Id: I1b01b1e4a85e1c397886fcd2506b434beb063687
2015-02-06 12:41:21 -08:00
Svet Ganov
0a2cceebd5 Accessibility: Handle a missed case when clicking focused views.
The clicking logic was missing the case where a child of the accessibility
focused view reacts to the injected down up events for clicking. This
results of a whole class of views being non-interactive. Now if an event
is targeting accessibility focus and the dispatching view group has this
focus, we clear the flag before dispatching to children, so they can
handle the event rather ignoring it becuase they are not accessibility
focused.

bug:19252492

Change-Id: I6ac25bb7a50b35bb638ca4bfb9fc4198d08c2d4d
2015-02-06 10:23:33 -08:00
Alan Viverette
f8512ce081 Mutate scroll bar drawables
Bug: 19285726
Change-Id: I4bb596433c1fa1cc4e2fa53d0cdae992f9add858
2015-02-05 15:58:56 -08:00
George Mount
c3a043cf0e Fix TODO in javadoc for FEATURE_CONTENT_TRANSITIONS.
Bug 19254085

Change-Id: I22d4c4e3d1d754ab96741eb0e0290d1ecfc05552
2015-02-04 15:27:56 -08:00
Svetoslav
ded133c446 Fix broken activation of the selected view in accessibility mode.
We were using an approximation to determine where to send a pair of down
and up events to click on the view that has accessibility focus. We were
doing reverse computation to figuring out which portion of the view is
not covered by interactive views and get a point in this region. However,
determining whether a view is interactive is not feasible in general since
for example may override onTouchEvent. This results in views not being
activated or which is worse wrong views being activated.

This change swithes to a new approach to activate views in accessibility
mode which is guaranteed to always work except the very rare case of a
view that overrides dispatchTouchEvent (which developers shouldn't be
doing). The new approach is to flag the down and up events pair sent
by the touch explorer as targeting the accessibility focused view. Such
events are dispatched such that views predecessors of the accessibility
focus do not handle them guaranteeing that these events reach the accessibiliy
focused view. Once the accessibiliy focused view gets such an event it clears
the flag and the event is dispatched following the normal event dispatch
semantics.

The new approach is semantically equivalent to requesting the view to perform
a click accessiblitiy action but is more generic as it is not affected by
views not implementing click action support correctly.

bug:18986806
bug:18889611

Change-Id: Id4b7b886c9fd34f7eb11e606636d8e3bab122869
2015-02-02 23:17:17 +00:00
Svetoslav
197adec365 Merge "Accessibility: Ignore overlapping siblings when computing a click location" into lmp-mr1-dev 2015-01-27 04:23:44 +00:00
Chris Craik
c43a820945 Invalidate outline on padding update
bug:19113359

Ensures that ViewOutlineProvider#PADDED_BOUNDS is always kept up to
date with the view's padding.

Change-Id: I5e090bd8272e89d6b8b9055dbe95ef3d45333fcb
2015-01-26 14:40:29 -08:00
Svetoslav
a1ac6a0925 Accessibility: Ignore overlapping siblings when computing a click location
To click a view we were computing a click location by ignoring overlapping
views that are actionable. However, detection whether a view is actionable
is not always possible as the view may handle touch events directly. This
leads to unhandled edge cases. We are taking a conservative approach and
ignore all overlapping siblings regardless if clickable. This is also has
limitations but hopefully less frequent edge cases.

bug:18889611

Change-Id: Icea0b7b3e2d4ed53e50e01cb6a99b880be560b14
2015-01-23 16:13:43 -08:00
Svetoslav
41fceb462b Accessibilty: Cannot click on views in a scrollable container covered by the toolbar.
In accessibility mode we calculate a point where to click in the accessibility
focused view as a bridge-gap solution before switching to accessibility click
actions. We cannot detect whether a view is covered by another one that consumes
all touch events, and therefore we may click on the wrong target. This was the
case with the toolbar. As a result a partially scrolled view in a scrollable
container covered by a toolbar cannot be activated and this is not an edge case.

bug:18986806

Change-Id: Ib41470c39806cec13e9b00b319879cd7f3412ab5
2015-01-22 18:51:47 -08:00
Bryce Lee
9320e9f0a6 Merge "Update javadoc for DEFAULT_FEATURES deprecation." into lmp-mr1-dev 2015-01-13 18:59:36 +00:00
Adam Powell
69c22e82e9 Merge "Add API for nested pre-processing of a11y events; fix ResolverDrawerLayout" into lmp-mr1-dev 2015-01-13 18:57:33 +00:00
Bryce Lee
aa1008cba4 Update javadoc for DEFAULT_FEATURES deprecation.
Bug: 18983343
Change-Id: I10936e292edf9146e7acca231632fb704054215c
2015-01-13 09:26:46 -08:00
Alan Viverette
71922de6c8 Update docs for Window.setElevation(), apply changes immediately
BUG: 18983689
Change-Id: I471104092d6296dc0ba2689da96783be088fbce8
2015-01-12 16:14:02 -08:00
Wale Ogunwale
74bf065e43 Don't allow windows with invalid types to be added.
Bug: 18950225
Change-Id: Ia7ead72d036c7628e0a97f8fe9fef2a35525e4df
2015-01-12 14:01:25 -08:00
Adam Powell
b6ab098bad Add API for nested pre-processing of a11y events; fix ResolverDrawerLayout
Add API for handling nested pre-processing of accessibility events
similar to nested pre-scroll or pre-fling. This allows custom views to
delegate a nested scroll to a parent via the accessibility system.

Use this functionality to allow opening the ResolverDrawerLayout via
accessibility commands.

Bug 18827274

Change-Id: Icd5a502605b78a861bb03e7b11923841a72eb9ab
2015-01-07 17:00:12 -08:00
Filip Gruszczynski
8c6b59f46d Merge "Add system api for disabling touch events in wallpaper behind the window." into lmp-mr1-dev 2015-01-05 22:46:14 +00:00
Alan Viverette
b15703c9b4 Avoid double-translating View background
Reverse-translate the canvas before passing to Drawable.draw() so that
we don't double-apply the drawable's translation.

BUG: 18904688
Change-Id: I8450de9b240ddeae887b4e1003c0608da814a001
2015-01-05 14:20:42 -08:00
Filip Gruszczynski
fe56835934 Add system api for disabling touch events in wallpaper behind the window.
Bug: 18721756
Change-Id: I40b749a9916536d52042e5dd49a23575bedad754
2015-01-05 12:57:19 -08:00
Svetoslav
e5ea48a7fe Fix a race in accessibility manager.
The accessibility manager has APIs for clients to observe changes
in accessibility, touch exploration, and high contrast states. The
notification of the listeners has to be done with no lock held but
in an attempt to do that the code was incorrectly iterating over
the copy on write collection.

bug:18840784

Change-Id: I6803ff1657fbf6b0cc7936671d5bbdebb5cbf6bb
2014-12-29 09:40:46 -08:00
Svet Ganov
257ffbda60 Remove a bad heuristic when determining click location for accessibility.
As a bride-gap solution to click on partially covered views in accessibility
mode we compute a point on the screen where to send a down/up event pair.
A heuristic we used was that if the action target is covered by a view that
that has a touch listener we consider the target obscured by the one with
the listener. However, this generates false positives, for example the target
is covered by a view that observers touches for scrolling but not clicking.

bug:18782023

Change-Id: I31ff34011d45667f1eddda47373ec00e4a23dbf6
2014-12-19 11:59:21 -08:00
Alan Viverette
9973643bfc Merge "Give accessibility delegate the first pass at handling ACTION_CLICK" into lmp-mr1-dev 2014-12-15 17:27:24 +00:00
Alan Viverette
cd305ae3ce Give accessibility delegate the first pass at handling ACTION_CLICK
Delegation is broken for widgets, but this fixes the most egregious issue
where TextViews that are top-level list items weren't handling CLICK
actions correctly. This will still need work, since now the focus action
won't run, but it's an improvement.

BUG: 18736135
Change-Id: I808ef628198946cc87f13c53d6245cd162a1e517
2014-12-12 14:13:24 -08:00
Svet Ganov
7486bc1f5a Merge "Fix an edge case in computing click location in accessibility mode." into lmp-mr1-dev 2014-12-12 20:48:09 +00:00
Svet Ganov
9fc96c5371 Fix an edge case in computing click location in accessibility mode.
In accessibility mode to click a view we computed a point where to send
down and up touch events. The logic that computes where to send the
events was not clipping the bounds of the child to these of the parent.
As a result we wrongly computed we can send the events in a location
of the child that is outside of its parent, thus the click having no
effect or clicking the wrong thing.

bug:18672945

Change-Id: If9c452e7e5b196f699db33d37dbc6775d5d1622a
2014-12-11 22:33:48 -08:00
Adam Powell
35da41e6c3 Have ViewGroups without a parent clip child visible rects to bounds
getChildVisibleRect was enhanced to obey the official contracts for
clipping children and clip to padding. Unfortunately this meant that
ViewGroups with no parent have no way of checking if they will be
clipped to their own bounds and therefore should clip a child rect.

Treat orphaned view subtrees as entities that clip to the root view
bounds to preserve prior CTS guarantees.

Bug 18642973

Change-Id: I9fcbeb0e92cd6715cd9184183d36889614ed0bed
2014-12-10 18:59:34 -08:00
John Reck
4f1942d999 Merge "Teach AssetAtlas about more drawables" into lmp-mr1-dev 2014-12-09 23:12:42 +00:00
John Reck
dad7d84c04 Teach AssetAtlas about more drawables
Bug: 18317479

Change-Id: I16868ee204d24af72af9a2efc987f7e9eb1d266b
2014-12-09 14:18:33 -08:00
John Reck
c47c98be04 Fix issue with RNA destruction mid-animation
Bug: 18521508

Fix an issue where an RNA's native object was destroyed
before the java-side object was started

Change-Id: I487fb476e0ecdf7000515f4f7320e8cfbc50a52b
2014-12-09 12:35:12 -08:00
Svet Ganov
381a423634 Merge "When accessibility on cannot click on a view covered by a HorizontalScrollView" into lmp-mr1-dev 2014-12-08 21:28:19 +00:00
Svet Ganov
e232d4a6aa Merge "Clear clicked nodes from the accessibiliy cache." into lmp-mr1-dev 2014-12-08 21:08:36 +00:00
Alan Viverette
b942b6f15c Fix hotspot coordinate propagation in ViewGroup and AbsListView
There was a weird disconnect between setPressed() and hotspot propagation
behavior. This makes hotspot propagation work like setPressed(). Also
fixes ripple animation during drag-to-open.

BUG: 18631557
BUG: 18593243
Change-Id: Id4adf5d815e4d426b4182aac4d0c780f04472ae4
2014-12-08 10:37:39 -08:00
Svet Ganov
0322100598 Clear clicked nodes from the accessibiliy cache.
Nodes that are clicked can change state as a result of a click,
e.g. a check box. The accessibility service may decide to get the
source node from the click event to probe its state and get a
cached state since the window content changed event is after the
click one. Therefore, we have to clear the state of the click
event's source from the cache to ensure the client can query the
latest state of that source.

bug:18625975

Change-Id: I9e339c2fdcf74f260bb8ad86b9b873f7ddd75f19
2014-12-05 16:52:31 -08:00
Svet Ganov
b3fa2787ea When accessibility on cannot click on a view covered by a HorizontalScrollView
In accessibility mode we send down and up events activate a view. We will later
switch to accessibility actions but for now as a bridge-gap we compute a point on
the screen where to click for activating the view. The heuristic we use has edge
cases such as a view that handles all touch events but does not have any listeners.
In this case we do not ignore the target view's area covered by a view that handles
all touch events. As a result we click on the wrong target. While we cannot solve
this generically, in the case of standard components such as HorizontalScrollView
we can.

bug:18612258

Change-Id: If8482aac0d0ea53c5c90367d099d1b8d3a4559ed
2014-12-05 13:13:15 -08:00
Filip Gruszczynski
26af8c197c am 26b18771: Merge "Private Window flag to disable touch events in WallpaperService." into lmp-sprout-dev
* commit '26b187711fdf6224e14df465a58f30f510011b49':
  Private Window flag to disable touch events in WallpaperService.
2014-12-05 02:34:26 +00:00
Svetoslav
3a0d878ab5 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
2014-12-05 00:37:38 +00:00
Filip Gruszczynski
b8c0694ae8 Private Window flag to disable touch events in WallpaperService.
Change-Id: I18b46340f89cbea0b6daeb1efe9c31656f4e1a5d
2014-12-04 15:02:18 -08:00
Derek Sollenberger
4d9da135ca Merge "Update AndroidPixelRef to prevent VM from cleaning up memory prematurely." into lmp-mr1-dev 2014-12-04 13:04:52 +00:00
John Reck
01a5ea35fb Resume RT-animations after a pauseSurface
Bug: 18203577

The issue occurs as a result of performTraversals() both doing
a window relayout call *and* early-returning because it's not dirty.

To fix this pauseSurface() returns whether or not the RT-side is
"dirty" to force ViewRootImpl to do a draw even if mDirty is
otherwise empty.

Change-Id: I534f367e75d18d273ebf14df3927f5c464ef6bef
2014-12-03 13:03:59 -08:00
Derek Sollenberger
f29d5a5b21 Update AndroidPixelRef to prevent VM from cleaning up memory prematurely.
bug:18306529
Change-Id: I1ea94df1dcaf4fcf248b63dc8b0a13f36412570a
2014-12-03 13:43:30 -05:00
Chris Craik
81defc6a84 Merge "Sync ViewOverlay size init with RenderNode" into lmp-mr1-dev 2014-12-02 16:59:21 +00:00
Chris Craik
2180ba7abd Sync ViewOverlay size init with RenderNode
bug:18381202

Setting mRight/mBottom must be accompanied by updating the RenderNode.

Change-Id: I4dae06a5ca43247b0b3642d85808e2724e486692
2014-12-01 17:55:37 -08:00