Bug: 18521508
Fix an issue where an RNA's native object was destroyed
before the java-side object was started
Change-Id: I487fb476e0ecdf7000515f4f7320e8cfbc50a52b
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
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
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
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
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
Previously, the computation was double-counting the left and top padding
because it was treating the third and fourth Rect.intersect() arguments
as width and height rather than right and bottom.
BUG: 18418091
Change-Id: I2ab669ee5060372ae11cfe804dcc05c7426be1ec
The display setting saved to disk were using a localized name for
the key. This is an issue if the user changes languages after the
display settings have been saved. We now use the non-localized
name for the display to access the settings if it is available,
else we fall back on the localized name.
Bug: 18190800
Change-Id: I837c06a8935df10727229a1aa2bb6eeb3953707f
Bug: 18204974
Even if we are canceling or ending an animation
nStart() *must* be called, otherwise the native-side listener
is not attached (lazy-attached for JNI cyclic reference reasons),
and then Animator::callOnFinishedListener() no-ops as there's
no listener set
Add a lifecycle verifier to ensure that nStart is always
called on animators that are attached and get finished
Change-Id: Ibc345b5be97b6d3f95a11c361ebe020d030fd3b6
Bug: 18403246
Surface#isValid() is used throughout ViewRootImpl to
determine Surface validity. However, this will return true
until Surface#release() is called, even if the underlying
BufferQueue is abandoned. We have a very strong signal
from EGL that the Surface is now dead, so use that signal
to call Surface#release() so ViewRootImpl's isValid() usage
will be valid.
Change-Id: Ib355560ef4ca7625c3c784174863d2d55267d93d