History log of /frameworks/base/core/java/android/view/ViewRootImpl.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
32f37ab0237df02dc1cb3b342860699587800db7 15-Jun-2017 Robert Carr <racarr@google.com> ViewRootImpl: More null checks for performTraversals.

Let's first understand how mView could become null. Notice
at the beginning of performTraversals, there is a check that
mView != null, and so it is nulled while we are in the function.
mView is package private and there are only two places which assign
to it, ViewRootImpl#setView and ViewRootImpl#doDie. setView is guarded
by mView == null. But mView was not null (per the check at the beginning
of performTraversals) and so mView is being nulled by doDie().

doDie() only has 3 callpoints:
1. ViewRootImpl#die(). Here though, calling it is guarded by
!mIsInTraversal. !mIsInTraversal is unconditionally set at the
beginning of performTraversals, and so this isn't our caller.
2. ViewRootHandler, handling MSG_DIE. This runs on the same thread
as performTraversal, and so it can't be our nuller.
3. WindowManagerGlobal#addView. This must be our nuller.

We see WindowManagerGlobal#addView will call doDie in the case that
we attempt to add a view which we had previously set to be removed
but deferred removal of. Now we can construct a reasonable sequence
for getting here:
1. requestLayout(). Perform traversals ends up on handler.
2. removeView(). MSG_DIE ends up on handler, View ends up in mDyingViews
3. performTraversals is executed by the handler
4. From a callback initiated by performTraversals (e.g. measure)
the client calls WindowManagerGlobal#addView on the view which
was just removed.
5. We are still in performTraversals so MSG_DIE hasn't been processed
yet. This means that WindowManagerGlobal will perform the doDie
immediately nulling mView.
6. We return to performTraversals and crash.

We can see shortly after the offending call to doDie, a new ViewRoot will be
constructed and so whatever traversal we are doing on the old one doesn't
seem particularly important. It doesn't seem that we can do any better
than letting it fall through without crashing.

Bug: 38421184
Test: go/wm-smoke. Feed to the monkeys.
Change-Id: I55f310a3533175c9df4a82878be5a60fd01b80c1
/frameworks/base/core/java/android/view/ViewRootImpl.java
46b01655b3448706797dfadc3d9a7c6495bb6e5c 08-Jun-2017 Bryce Lee <brycelee@google.com> Revert "Coordinate configuration changes and window frame size."

This reverts commit afb45bba8379df530182dae882ec70329423dcfe.

Bug: 32839232
Fixes: 62424393
Change-Id: Ifaa0176e18100ec85b8c81268a26fb16ffe9b5f3
/frameworks/base/core/java/android/view/ViewRootImpl.java
afb45bba8379df530182dae882ec70329423dcfe 27-Apr-2017 Bryce Lee <brycelee@google.com> Coordinate configuration changes and window frame size.

Previously, it was possible for the view hierarchy to be measured,
laid out, and drawn around a window frame size that did not match
the current configuration. This stems from new configurations not
always propagating back from WindowSession#relayout, which is
called from ViewRootImpl.

This changelist makes WindowManagerService#relayoutWindow always
return the latest configuration. It also adds rotation to the
configuration.

Fixes: 32839232
Test: go/wm-smoke
Test: Open Camera while rotating phone to landscape. Added
temporary logs to detect inconsistencies between measurements
and reported rotation on draw.
Change-Id: I39daca338b4f87eff1a509eb99493f01e710ced1
/frameworks/base/core/java/android/view/ViewRootImpl.java
3e04f091365294a7eea927d6b1c138f126f77c5d 03-Jun-2017 John Reck <jreck@google.com> Workaround glitches from SOFT_INPUT_ADJUST_PAN

Change-Id: I1ee0c7d434eb03667bd5e838ea891db73651a994
Fixes: 62073166
Test: Repro app in bug
/frameworks/base/core/java/android/view/ViewRootImpl.java
49cd9f882c3853a615c517b00311a9512d68edf9 26-May-2017 Robert Carr <racarr@google.com> ViewRootImpl: More careful draw accounting.

The strategy of beginning the count at 1 isn't enough
and we need to explicitly debt each request to report
draw. Imagine the case where a ViewRootImpl reports draw
multiple times, while we are waiting for a SurfaceView draw
completion callback. Without the explicit draw debt, the ViewRoot
would be counted as drawing for the SurfaceView and we could
notify the WM too early.

Test: Open Chrome a few hundred times. go/wm-smoke.
Bug: 38324871
Change-Id: I5762a98d1cc808125033ba3d1db8a3ea39a9e071
/frameworks/base/core/java/android/view/ViewRootImpl.java
4bc839e2670d326d42400b51cbc0652361cc7072 17-May-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "ViewRootImpl: Guard against null in performMeasure" into oc-dev
001e55a17a8ff58ae80409369601ba860f8e8832 16-May-2017 Robert Carr <racarr@google.com> ViewRootImpl: Guard against null in performMeasure

In particular we are seeing this in the call sites from performTraversals
in monkey crashes. I don't have exact repro but it seems like a feasible
state to get in to...for example...WindowManagerGlobal#addView can trigger
removal of a dying view immediately without respect for the mIsInTraversal
flag when it calls doDie(). This means we can dispatch detached from window
setting mView == null while performing a traversal. There's some question
about why this doDie is even required but...seems a little nerve wrecking
to change at the moment and it seems best to just guard against null for now.

Test: Monkeys will test.
Bug: 37343098
Change-Id: I94f2569c1ef70819c083f2b2b34b59622e6c6260
/frameworks/base/core/java/android/view/ViewRootImpl.java
f5b6818009a70d77a272ca9b7b2aa167507dfd07 16-May-2017 Rob Carr <racarr@google.com> Merge "Preserve non-floating state when entering pinned stack." into oc-dev
63e4503991b52862efb17d42950d986dca90976b 11-May-2017 Phil Weaver <pweaver@google.com> Add null check to a11y call.

No good will come from posting that a null View has
changed. Adding a null check so the failure will happen
when the bad call is made, rather than later when we
try to act on it in a handler.

Bug: 38122973
Test: Ran accessibility unit and cts tests.
Change-Id: I1e9aaf2a18180fcdfd0fbc0e5b716eb96446af33
/frameworks/base/core/java/android/view/ViewRootImpl.java
18f622f08ce84bfb1a6cf19bca33d3ef0ad4aca9 08-May-2017 Robert Carr <racarr@google.com> Preserve non-floating state when entering pinned stack.

When transitioning between the fullscreen and pinned states
we often have a situation where we go from having a navigation and
status bar in the window to not. We'd like to use the source bounds
animation to crop these out rather than a sudden jump or scaling
but in order to do so we need to ensure they last until the end
of the animation. We track this state, and return the appropriate
value from isFloating. Furthermore, we add support to the bounds
animation to use the content frame as a source bounds when there
is no source bounds present, this means that we can crop out the
navigation and status bar so they will be invisible by the end of
the animation.

Bug: 37531386
Test: Manual
Change-Id: I72c549e3a3318534428d17b68ebee5832c32e6d7
/frameworks/base/core/java/android/view/ViewRootImpl.java
26d709fdfa473f1722b1ee08562262cb4cfeaaac 21-Apr-2017 Phil Weaver <pweaver@google.com> Allow a11y listeners to specify handlers

This follows recommended practice for listeners, and also
allows ViewRootImpl to register for callbacks on its own
handler, which can prevent crashes in apps that have
different threads managing the UI at different times (for
example the system process).

Bug: 37542371
Test: Adding CTS tests for new APIs. A11y CTS still passes.
Change-Id: I65db025275e153c20b20567346246d5bc13bf418
/frameworks/base/core/java/android/view/ViewRootImpl.java
f4c31bf67b60e24dfd56249bbcfdc640f2d842ce 19-Apr-2017 Evan Rosky <erosky@google.com> Merge "Handle edge-case where no focusables exist" into oc-dev
5b860719a30862a457f8c8aa9222272a3b43a433 18-Apr-2017 Evan Rosky <erosky@google.com> Handle edge-case where no focusables exist

cluster navigation was previously crashing if there was
nothing focusable..

Bug: 37438383
Test: Added CTS: ContentPaneFocusTest#testNoFocusablesInContent
Ran against support-v7-demos Toolbar demos to verify
crash didn't occur

Change-Id: Ia1382cec138a948d080aeded4d38735983df2152
/frameworks/base/core/java/android/view/ViewRootImpl.java
8802eac3d8831e7af867f19d0bb1df3daa603140 17-Apr-2017 Winson Chung <winsonc@google.com> Account for content insets in source rect hint for transition into PiP

- As a part of transitioning into PiP, we remove the content insets, and
as a result, we also need to adjust the source hint rect for the change
in insets as well.

Bug: 37418994
Test: Enter PiP from YT, ensure no jump at the end

Change-Id: I74219b05c91d3c8b8466dd8fff4d6dd692f08725
/frameworks/base/core/java/android/view/ViewRootImpl.java
414ebc6ac8dcc972cc97f637e21ac09e59bef112 12-Apr-2017 Robert Carr <racarr@google.com> ViewRoot: More surgically fix child-life time.

A more targeted version of "ViewRootImpl: Fix child lifetime".
In this version we avoid hijacking the window visibility callback
and introduce a new path.
Our contract has been that at any time after returning from
onStop, the WindowManager may destroy the clients Surface. We
see in setWindowStopped, we set the stopped state on the hardware
renderer in order to prevent further use of the Surface. However
there is nothing synchronously dispatching this change to child views
and so SurfaceView is not necessarily informed to release it's Surface
in time. Typically SurfaceView will be informed through the
onWindowVisibilityChanged callback. The signal producing this
is emitted from SystemServer prior to onStop but has to pass
through the clients handler thread. It seems this has always been
broken, and we have always had intermittent reports of EGL_BAD_ALLOC
scenarios. I speculate that elevation of WindowManager scheduling during
app close scenarios is perhaps making this more severe, as it seems to
ensure the WindowManger will win the race to destroy the Surface before
the client handler thread process onWindowVisibilityChanged (unless
the FIFO timeout is surpassed).

Test: Put Chrome in PiP. Turn screen off. No Crash!
Bug: 36561071
Change-Id: I9233ba8151c7f577b1d1044afc0c2ac3a65be4b4
/frameworks/base/core/java/android/view/ViewRootImpl.java
16e5089eb5b58fb065ec05ee8a6afe229f48bf50 11-Apr-2017 Bryce Lee <brycelee@google.com> Revert "ViewRootImpl: Fix child lifetime."

This reverts commit ba29dbc3b38d9efb743d6fa7f9f8c4bb75c38b28.

The original commit causes apps such as phone and clock to not wake the
device.

Fixes: 37197491
Change-Id: I1b45cafbcbf12991d8e1e716e4d1751cd077c556
/frameworks/base/core/java/android/view/ViewRootImpl.java
ba29dbc3b38d9efb743d6fa7f9f8c4bb75c38b28 07-Apr-2017 Robert Carr <racarr@google.com> ViewRootImpl: Fix child lifetime.

As far as I can tell this has always been broken. We've always had
intermittent reports of buffer-queue-abandoned as well (a recent bug
came with some reports from N). During onStop SurfaceView relies on
onWindowVisibilityChanged, to trigger a visibility change. At this
point SurfaceView will emit the SurfaceDestroyed callback in order to
stop the client from further use of the Surface. The contract we've
been using with ViewRootImpl is at any point following
Activity.performStop returning the WindowManager was free to destroy
the Surfaces. This is why in setWindowsStopped we destroy the hardware
resources for the ViewRoot. However we aren't dispatching anything to
the SurfaceView. The WindowManager will send an app visibility
notification, but that would go through the handler. This means by the
time we return from Stop, there is no guarantee that the
onWindowVisibilityChanged callbacks have been invoked at all. It
seemed most sensible to dispatch the visibility callbacks directly. We
also ensure that getHostVisibility will return false after this point,
so that performTraversals will not reverse our visibility request if
it occurs again prior to the window visibility notification from the
WindowManager. We also guard against emitting a second window
visibility changed callback in the traversals. I don't know at this
point what value the window visibility notification provides but I
don't feel excited about removing it in this CL at this point in
the development cycle.

Test: Put Chrome in PiP. Turn screen off. No Crash!
Bug: 36561071
Change-Id: Id1673561b2299d477b2761b3ac6afa14eabbf7fb
/frameworks/base/core/java/android/view/ViewRootImpl.java
baa9a3f4b9d7390ef8ad41cb4ae7f97b09b0caf3 04-Apr-2017 Evan Rosky <erosky@google.com> Merge "More finishing-up of cluster implementation" into oc-dev
cdc8ada9c91ff593ed480a48ae8cd6a1c529924a 30-Mar-2017 Wale Ogunwale <ogunwale@google.com> Fix issue with not forwarding config. changes on the window size

Coding error inroduced in ag/1965162 where we were no longer setting
the config. if the dispatchResized() call originated from a different
process.

Fixes: 36544847
Test: Change languages and confirm that the status bar changed to the
new language.

Change-Id: I91d73c9f506f28cf1ba13a55f86f87a1aff80e0b
/frameworks/base/core/java/android/view/ViewRootImpl.java
01f46a29cee4f77a4f349879a7a01cc704cf3ba9 17-Mar-2017 Evan Rosky <erosky@google.com> Expose initial focus feature flag for testing

Bug: 34520588
Test: View_FocusHandlingTest
Change-Id: I7a20a6e9c57fc61bd2562307f4e7f8dee1979a40
(cherry picked from commit 9a0ea38671f1721b940e0a1ba94226d1ebae397d)
/frameworks/base/core/java/android/view/ViewRootImpl.java
bd10c52f5efc73f7ffdd611beb14cdd7ce785016 28-Mar-2017 Evan Rosky <erosky@google.com> More finishing-up of cluster implementation

Implemented the nextClusterForward attribute (didn't do anything
before).
Fleshed out javadoc links.
Clusters now share sorting with normal focus.
Added sound on cluster navigation.

Bug: 34362469
Bug: 34363357
Bug: 34362653
Bug: 34361907
Bug: 34363159
Test: Added CTS to verify clusters behave the same as normal focus
wrt user-specified ordering. Tested manually that cluster-
nav generates sound.

Change-Id: I810acc058d9c1fad4a085d9b7f267e9ec14b33e7
/frameworks/base/core/java/android/view/ViewRootImpl.java
76d779374a92f502579e72f822cf815e54be33ea 29-Mar-2017 Rob Carr <racarr@google.com> Merge "SurfaceView: Make surfaceRedrawNeededAsync work with WM bypass." into oc-dev
8508bb2f10f8da49fff402d04ee81b2fba15ad19 28-Mar-2017 Robert Carr <racarr@google.com> SurfaceView: Make surfaceRedrawNeededAsync work with WM bypass.

Prior to SurfaceView bypassing the WM, the WM would see that
the app had multiple windows and wait for them all
to finish drawing before beginning any animation, or similar operations.
Now that SurfaceView is invisible to the WM we have to replicate this
two-way latching in ViewRootImpl.

Bug: 36492285
Test: Launch Chrome over and over.
Change-Id: Ie72c2d394f1bb0eb8551e6f63bb1c19a5df43afd
/frameworks/base/core/java/android/view/ViewRootImpl.java
e5c58eefb1c28d56e6b4768cf624af137a867d21 28-Mar-2017 Andrii Kulian <akulian@google.com> Add Configuration param to onMovedToDisplay

To be consistent with other multi-window callbacks adding
Configuration param to the onMovedToDisplay, so that app
developer can handle configuration change at the same time
when it receives a notification about move.

Bug: 36649499
Test: android.server.ActivityManagerDisplayTests
Test: #testOnMovedToDisplayCallback
Change-Id: I80c765473bfc09ea1fb7aa4e2e77baf3b21606b8
(cherry picked from commit 2c32a11a71e2a1602b188b710b1916d919d99edb)
/frameworks/base/core/java/android/view/ViewRootImpl.java
42b0676d616e306c6c5f6325b27b401fc7e32c8c 17-Mar-2017 Alan Viverette <alanv@google.com> Merge "Revert "Changing initial and default focus behavior""
cfd6c85d4203ca2530ddff048654b365b346eefd 17-Mar-2017 Evan Rosky <erosky@google.com> Revert "Changing initial and default focus behavior"

This is a soft revert.

This reverts commit 37df2dbab124452e04bf14784df9ab5c2f64e434

Change-Id: I7ac08c0ef514f7ce7a0b750e501a5333f4ffb6d2
/frameworks/base/core/java/android/view/ViewRootImpl.java
446079600ece83b22cb91865bcbeb694292b0108 16-Mar-2017 Andrii Kulian <akulian@google.com> Separate global and override config sent to client

There is some flakiness in View#onConfigurationChanged callback -
if ViewRootImpl receives config update earlier than ActivityThread,
it may not detect the configuration change and skip inner updates.
Also now ViewRootImpl assumes that it receives the global config as
a param, but instead it gets merged config from WM. This means that
ViewRootImpl#sConfigCallbacks was sending incorrect values to the
recipients.

This CL switches to sending global and override configuration to the
client separately. Also in case if there is a corresponding activity,
it first updates it and waits for update callback to ViewRootImpl.
This way global config and override config for activity will always
be set first and resources will be updated before inner state of
ViewRootImpl is updated.

Bug: 35870157
Bug: 34164473
Test: android.server.cts.ActivityManagerDisplayTests
Test: testOnMovedToDisplayCallback
Change-Id: Ic9e7541cf25ecfac6ec90e48f7efb0ece91f657e
/frameworks/base/core/java/android/view/ViewRootImpl.java
42794029ce95b44abd04c8b73353cedfd6d7b531 15-Mar-2017 Evan Rosky <erosky@google.com> Merge "Changing initial and default focus behavior"
f00cd14f17c0acd6bffe78947d32ea0a2900d139 03-Mar-2017 Phil Weaver <pweaver@google.com> Basic accessibility support for picture-in-picture

Exposing actions from the PIP InputConsumer to accessibility,
stripping all actions from a covered PIP app, and adding the
InputConsumer's actions on the PIP app's root view.

We were also using an "undefined" accessibility ID to mean
three different things: a root view, a host view of a virtual
view hierarchy, and a truly undefined view. I've introduced
new values for cases where the id could be defined.

Also gathering all window IDs into one place to reduce the
chance of collisions.

Bug: 34773134
Test: In progress. Current cts passes.
Change-Id: I97269741a292cf406272bf02359c76c396f84640
/frameworks/base/core/java/android/view/ViewRootImpl.java
d5c7dd6da810a6b89151b337bea79fd817e6b72a 08-Mar-2017 Robert Carr <racarr@google.com> Modify SurfaceView to use SurfaceFlinger child surfaces.

Here we have SurfaceView bypass the WindowManager and speak
directly to SurfaceFlinger using child surfaces. We also
implement some logic in the WM to handle child surfaces
in various Surface replacement scenarios.

For those following along in the revert Saga, this
also includes the follow up CLs to the original CL.
- Surface inset calculation
- Animation fixes.

The error causing the revert was an incorrect JNI signature
around deferTransactionUntilSurface. I've noted it inline.

Bug: 28858420
Bug: 31518219
Bug: 34888808
Bug: 35588318
Bug: 35396882
Test: Existing tests still pass (except for the ones that don't and will be deleted).
Change-Id: Ie56b6f7ab16f32d7fc459b8eba26594337ad55de
/frameworks/base/core/java/android/view/ViewRootImpl.java
5aec7b90310ba05f9816fd89030ba41ce48c568e 08-Mar-2017 Wonsik Kim <wonsik@google.com> Revert "Modify SurfaceView to use SurfaceFlinger child surfaces."

This reverts commit cd4aeef88052571365d4e193a2c41e2e6d145491.

Bug: 36027342
Bug: 36015884
Change-Id: Ifd5b69caf64d65a8cd6570b7fe1fb6abe90e30b8
/frameworks/base/core/java/android/view/ViewRootImpl.java
cd4aeef88052571365d4e193a2c41e2e6d145491 03-Mar-2017 Robert Carr <racarr@google.com> Modify SurfaceView to use SurfaceFlinger child surfaces.

Here we have SurfaceView bypass the WindowManager and speak
directly to SurfaceFlinger using child surfaces. We also
implement some logic in the WM to handle child surfaces
in various Surface replacement scenarios.

For those following along in the revert Saga, this
also includes the follow up CLs to the original CL.
- Surface inset calculation
- Animation fixes.

The error causing revert was a deferTransactionUntil(-1)...-1
cast to uint, defer transaction until MAX_UINT.

Bug: 28858420
Bug: 31518219
Bug: 34888808
Bug: 35588318
Bug: 35396882
Test: Existing tests still pass (except for the ones that don't and will be deleted).
Change-Id: Ib37236950a1dd3c4f9f4b58fd41ef9003c0557ef
/frameworks/base/core/java/android/view/ViewRootImpl.java
3896db14751f16f4053e8fa4a82c3d6803054e5b 03-Mar-2017 Jeff Tinker <jtinker@google.com> Revert "Modify SurfaceView to use SurfaceFlinger child surfaces."

This reverts commit 693f3432ae77d1fcfaaf9d168de861192aacb4c4.

P0: When playing encrypted content the Fugu displays a blank screen.

Test: with topic "surfaceview-without-wm" reverted, encrypted playback
works on ToT oc-release. See repro steps in 35917840#12.

bug:35917840

Change-Id: I37fa1e427daff3a1c18ed1c92d035421d891f67c
/frameworks/base/core/java/android/view/ViewRootImpl.java
37df2dbab124452e04bf14784df9ab5c2f64e434 25-Jan-2017 Evan Rosky <erosky@google.com> Changing initial and default focus behavior

This changes initial focus behavior such that by default,
nothing is focused; and, if nothing is focused, the first focus
navigation will send focus to the default focus rather than
whatever happens to be in the upper-left. This also slightly
tweaks the behavior of the <requestFocus /> tag to make it
easier to use.

This addresses a common problem where developers create dummy
focusable views or make viewgroups focusable(InTouchmode) to
prevent other views from gaining focus on activity start.

In order to have something focused at activity start, developers
now must explicitly provide a <requestFocus /> tag. However,
this tag now requests "default" focus so that, when used in
tandem with the focusedByDefault attribute(s), it can be placed
at the root of the hierarchy to mimic the initial focus behavior
before this CL.

This will only take effect when targetApi >= 26.

Bug: 34520588
Bug: 33016720
Test: Added/Updated CTS tests. Also built some test-apps to verify.

Change-Id: I3e7fb7289f6dd53023ec24087f84c41526eaab2e
/frameworks/base/core/java/android/view/ViewRootImpl.java
693f3432ae77d1fcfaaf9d168de861192aacb4c4 19-Dec-2016 Robert Carr <racarr@google.com> Modify SurfaceView to use SurfaceFlinger child surfaces.

Here we have SurfaceView bypass the WindowManager and speak
directly to SurfaceFlinger using child surfaces. We also
implement some logic in the WM to handle child surfaces
in various Surface replacement scenarios.

Bug: 28858420
Bug: 31518219
Bug: 34888808
Bug: 35588318
Bug: 35396882
Test: Existing tests still pass (except for the ones that don't and will be deleted).
Change-Id: Icb7259365b51ebe8c7f6c7cd4f9ba29f9fce08a4
/frameworks/base/core/java/android/view/ViewRootImpl.java
956545b07ff921b281401049a971e19ad01a4cc9 27-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Exit touch mode on mouse/stylus click"
b2048d4247806dc0c12314e65e36561bd1bb47c4 24-Feb-2017 Evan Rosky <erosky@google.com> Merge "Add focusdirection annotations to cluster methods"
609bf65668181d93502a57575f6f20281f2494b8 10-Feb-2017 Bryce Lee <brycelee@google.com> Update DisplayAdjustments in Display from Resources.

Previously, a copy of DisplayAdjustments was provided during Display
construction. If the Display instance is held, the adjustments would
not update. However, the DisplayInfo would, leading to a mismatch.

This changelist adds a reference to the Resources, which can be
queried to provide the latest adjustments.

Fixes: 33430498
Test: manual from bug repro steps.
Test: make -j32 cts; cts-tradefed; run cts --module CtsAppTestCases --test android.app.cts.DisplayTest#testRotation

Change-Id: Ida2ed3990add885d06b011494af24b055343f3fa
/frameworks/base/core/java/android/view/ViewRootImpl.java
5722331efeaa362e27585026e953c2fda677c516 08-Feb-2017 Evan Rosky <erosky@google.com> Add focusdirection annotations to cluster methods

Bug: 34361917
Test: Still compiles
Change-Id: I47b5e9472524708544d567444b3fbcc93bc45119
/frameworks/base/core/java/android/view/ViewRootImpl.java
7614cdf9c39039e6aaf5a896006445046003215a 21-Feb-2017 Vladislav Kaznacheev <kaznacheev@google.com> Exit touch mode on mouse/stylus click

Bug: 35625345
Test: android.cts.view.ViewTest#testTouchMode
Change-Id: Ib31425c3da2c42a4df91735be4057d2aa8db7480
/frameworks/base/core/java/android/view/ViewRootImpl.java
df1742ed47da1e9b61afeae16fa448d5302a8aa0 20-Jan-2017 John Reck <jreck@google.com> Overhaul GraphicsStatsService

* LRU cache of recently-used is dead, replaced
disk storage
* ASHMEM size is read from native by the system service,
no longer requires keeping a sizeof() in sync with a
constant in Java
* Supports dumping in proto format by passing --proto
* Rotates logs on a daily basis
* Keeps a history of the most recent 3 days

Bug: 33705836
Test: Manual. Verified log rotating works by setting it up to
rotate every minute instead of day. Confirmed /data/system/graphicsstats
only has the most recent 3 entries after several minutes

Change-Id: Ib84bafb26c58701cc86f123236de4fff01aaa4aa
/frameworks/base/core/java/android/view/ViewRootImpl.java
1228e2cb8350ba202836660927c194f39e074e6f 17-Feb-2017 Evan Rosky <erosky@google.com> Merge "Fixed default-cluster and empty-cluster navigation behavior"
b047b8bd7e363081e91ba6cbc8d09cd355624584 09-Feb-2017 Andrii Kulian <akulian@google.com> Report move to display for activities that handle config changes

When activity that is moved between displays handles all configuration
changes, it won't be restarted. This CL adds a callback to the client
to notify it about display change. Usually it will be followed by
onConfigurationChanged, except when configuration didn't actually change.
When activity is recreated, it won't receive onMovedToDisplay.

Bug: 34862802
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testOnMovedToDisplayCallback
Change-Id: I9a9501cab788623ada15a31efb53e4b2378639fe
/frameworks/base/core/java/android/view/ViewRootImpl.java
3ac6463724734b983170328ea0e6cad40eb79502 14-Feb-2017 Evan Rosky <erosky@google.com> Fixed default-cluster and empty-cluster navigation behavior

Cluster navigation would get stuck if:
- there was an empty cluster (nothing to focus)
- there were views NOT in a cluster and the global
default-focused view was in a cluster.

This will skip over empty clusters during cluster navigation
and when the default "cluster" is active, it will try to
focus a non-clustered focusable instead of the global default
(and if there aren't any non-clustered focusables, it will
skip over the default "cluster" as it now does with actual
clusters.

Bug: 35273052
Bug: 34361282
Test: Added/Updated CTS tests and checked behavior in a test app.
Change-Id: I0b4d55707203f6a0453f25313f940927d59a9b31
/frameworks/base/core/java/android/view/ViewRootImpl.java
a21f3e782a977c86d0a750b8cbc0a3ba49e8f569 13-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Do not enter touch mode on non-touchscreen events"
75e5029e4659d4a286c89bc9bc1981cc196028e6 13-Feb-2017 Vladislav Kaznacheev <kaznacheev@google.com> Do not enter touch mode on non-touchscreen events

Currently ACTION_DOWN and ACTION_SCROLL cause
entering touch mode regardless of the event source.
This is especially awkward for mouse.

This should only happen when the event source is
SOURCE_TOUCHSCREEN.

Bug: 35314124
Test: android.cts.view.ViewTest#testTouchMode
Change-Id: I2205d4240be4afcbd9a3ac5558e701f7cac51926
/frameworks/base/core/java/android/view/ViewRootImpl.java
22dac1c8df4ec212e8195a69d2de15d313d724fb 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Introduce @SoftInputModeFlags annotation

Doing this allows us to annotate integer values that should corresponds
to WindowManager.LayoutParams#softInputMode.

Test: There should be no behavior change. RetentionPolicy.SOURCE
annotation should change nothing in production code.
Test: checkbuild
Bug: 32784563
Bug: 35079353
Change-Id: I96300b090edce327d0515c740183abe91ded6bac
/frameworks/base/core/java/android/view/ViewRootImpl.java
651ea36f5aaf5751b16bc98899c31fe2ef3cd5c3 09-Feb-2017 Peeyush Agarwal <apeeyush@google.com> Merge "Extend MenuItem to allow modifier keys for shortcut"
f10db8e444b4ce70e2324429ad342c4e6f0674e0 08-Feb-2017 Evan Rosky <erosky@google.com> Merge "Separate cluster-focus and default-focus."
e631e32a1a771a36267af3f8af8b64e9365bc19e 19-Oct-2016 Peeyush Agarwal <apeeyush@google.com> Extend MenuItem to allow modifier keys for shortcut

Before this, CTRL was the default modifier for MenuItem shortcuts.
Now, It's possible to specify the modifier in XML or via MenuItem
methods.
The modifier list includes META, CTRL, ALT, SHIFT, SYM and FUNCTION.

WIP on support library implementation

Bug: 32165848
Test: Run the tests using following commands:
> cts-tradefed run cts-dev -m CtsViewTestCases -t
> android.view.cts.MenuTest#testPerformShortcut
> cts-tradefed run cts-dev -m CtsViewTestCases -t
> android.view.cts.MenuInflaterTest#testInflateShortcutModifiersFromXml

Change-Id: I7db4607d4657451934761914efe4c250de109653
/frameworks/base/core/java/android/view/ViewRootImpl.java
c2e28932d22faece6e7179c78d4e7656dc63052c 08-Dec-2016 Phil Weaver <pweaver@google.com> Provide text locations to accessibility services.

Bug: 30170631
Test: New CTS tests on linked CL.
Change-Id: I723e3777189c8df71c59dada00abdf339ebc983d
/frameworks/base/core/java/android/view/ViewRootImpl.java
53fcf11cf5a308ef68fc852f971f12e3afcf04d9 26-Jan-2017 Evan Rosky <erosky@google.com> Separate cluster-focus and default-focus.

Now properly cleans-up cluster-focus and default-focus chains
on view-removal (was only cleaning 1 level previously).
Separated cluster-focus and default-focus concepts.
Made default-focus robust to changes in default-focusable
views (previously un-marking a default focus wouldn't reassign
default focus to still-existing default focusables).
Cluster-focus falls back on default-focus when no saved
cluster-focus exists.

Bug: 34394367
Test: Associated CTS tests.
Change-Id: I903c22ded5643d0d4ca3bc5427b38833742aa354
/frameworks/base/core/java/android/view/ViewRootImpl.java
b27aba9a92a023386fb25a85a989f5a0f7a18aaa 31-Jan-2017 Chris Craik <ccraik@google.com> Merge "Replace invalidateChild/invalidateChildInParent"
9de95db4f28f88c37b1443d20b308ce02407fd74 19-Jan-2017 Chris Craik <ccraik@google.com> Replace invalidateChild/invalidateChildInParent

Fixes: 34361503
Test: CTS: android.view.cts.ViewGroupTest
APCT: android.view.ViewInvalidateTest

Simplify and unify HW accelerated invalidate/damage codepaths, since
both simply walk up to ViewRootImpl and schedule a traversal.

Adds a new overridable method 'onDescendantInvalidated' for observing
subtree rendering updates.

Change-Id: I7ef1f914c3411317692451787b3810b23e019591
/frameworks/base/core/java/android/view/ViewRootImpl.java
3787de16d24001eeb452e1c711d4290a396e67c9 21-Dec-2016 Vladislav Kaznacheev <kaznacheev@google.com> Implement pointer capture API

When in pointer capture mode, mouse pointer disappears and
further mouse events are dispatched to the focused view
in the window which has requested capture.

The captured events have the source SOURCE_MOUSE_RELATIVE
belonging to SOURCE_CLASS_TRACKBALL. They are
dispatched through dispatchCapturedPointerEvent /
onCapturedPointerEvent. There is also a new listener.

Pointer capture mode may only be granted to a currently
focused window, and will be canceled upon a window focus change.

Test: cts-tradefed ... --test android.view.cts.PointerCaptureTest
Bug: 30897034
Change-Id: I6e5934aa415ac2b6dda1cee173d0f23e5021af84
/frameworks/base/core/java/android/view/ViewRootImpl.java
516f9e68f37fee8d87d02445e43637ed9874de6c 24-Jan-2017 Evan Rosky <erosky@google.com> Changed cluster kb navigation shortcut to meta+[shift]+tab

Bug: 34509826
Test: Verified new shortcut worked in test app
Change-Id: I2e454a1291dbee9f6ca549d6ed2973248ff24d15
/frameworks/base/core/java/android/view/ViewRootImpl.java
b5ced2200767280026ee57857edaebc02d081216 18-Jan-2017 Vadim Tryshev <vadimt@google.com> Eliminating sections.

Per new UX spec, sections are eliminated, and clusters change
their behavior. Full list of their properties:
* They serve as stops in cluster-navigation loop
* There exists a default cluster (which is the unmarked space)
* Default/stored focus is local to a cluster
* Initial focus search can enter a cluster
* Tab/arrow navigation is not affected by clusters

Bug: 32151632
Test: Manual and CTS tests.
Change-Id: Iacc4f37aec3dc61a6f6ce35681fa6b8fa974f0ed
/frameworks/base/core/java/android/view/ViewRootImpl.java
6c7dcd8a46f1c43257512451a773ae53a3de4336 17-Jan-2017 Andrii Kulian <akulian@google.com> Merge "Relayout window when rotated landscape <-> seascape"
b2e37802995e710c4a4d7b28e35c0b584ad2be7a 11-Jan-2017 Andrii Kulian <akulian@google.com> Relayout window when rotated landscape <-> seascape

When 180 degree rotation happens there is no real configuration
change, so an application window could miss an update, which
caused visual artifacts.
In this CL layout is forced when rotation changes.

Test: Unit tests in ag/1778638.
Bug: 33607506
Change-Id: Ia1e3375212bade9061d6e1d9679604e67c50da20
/frameworks/base/core/java/android/view/ViewRootImpl.java
393a954d5fe885bbe08e1816a50da41c4d9eed50 12-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "API for setting default focus per cluster."
5ca739817dbd7d73f1d232597c0e2898cbee79c7 05-Jan-2017 Vadim Tryshev <vadimt@google.com> API for setting default focus per cluster.

UX spec requires us to allow apps to specify default focus per
cluster.

This change introduces a boolean attribute for Views to do so.

API is designed for cases when the view hierarchy is inflated,
manually constructed, as well as for hybrid scenarios.

The implementation piggybacks the recently introduced logic for
saving/restoring last focus in a cluster. To accommodate new needs,
the focus-saving were rename-generalized in this CL.

Bug: 32151632
Test: Manual checks; CTS are coming after feature freeze.
Change-Id: Ia92600c3a886db9a0d4df9dd9fd0e3479e68e7a4
/frameworks/base/core/java/android/view/ViewRootImpl.java
5df7f1ab6183d5abe50b1bfe00cc86eec23f8cf0 10-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Provide non-blocking SurfaceView draw notification path."
6f225cae06a49bf2c34716b3418d7b64d0feb232 10-Jan-2017 Chris Craik <ccraik@google.com> Merge "Revert "Revert "Fast-path for ViewGroup#invalidateChild, invalidate tests"""
25cfa134835e3791bdb6572f5e25cf4599015678 16-Nov-2016 Robert Carr <racarr@google.com> Provide non-blocking SurfaceView draw notification path.

SurfaceView needs to notify the window manager that
drawing has been completed, so that animations and such
can begin. Currently this is implemented through
having the SurfaceView user block in surfaceRedrawNeeded
(called from UI thread) until a frame has been completed.
This blocking can be unnecessary serialization during startup, and
also clumsy to implement for some users.

Test: GLSurfaceView and takeSurface API Demos, android.server.cts.SurfaceViewTests
Bug: 31850030
Change-Id: Idda02098a635f25cf392f2d59a3abbe54a1d64d4
/frameworks/base/core/java/android/view/ViewRootImpl.java
3f06c6de08b9e0c7ab1fd1774783ca355e994f06 09-Jan-2017 Chris Craik <ccraik@google.com> Revert "Revert "Fast-path for ViewGroup#invalidateChild, invalidate tests""

Bug: 33797688

This reverts commit 1cb8b08ae459fddc860e5863b0ec30a70682654e.

Change-Id: I322b550d65d48be4a99faf1790d138d26a996d7e
/frameworks/base/core/java/android/view/ViewRootImpl.java
311a5b54979afee7e07bf31600182584fde15b4f 06-Jan-2017 Vadim Tryshev <vadimt@google.com> Using official names for clusters and sections.

Per the bug, “clusters” and “sections” are already the official names,
and for a general name for both, we use “keyboard navigation
groups”.

Bug: 33708251
Test: N/A.
Change-Id: Ieb1d2e8a1ad758f902b0a925fbe5d187e0f7ea06
/frameworks/base/core/java/android/view/ViewRootImpl.java
c587433dd178b634f4f7a0453d192bb8b47b37da 04-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Introducing teleportation between sections."
8957f2ddda08e891475e64552ffa225ca2fccedb 22-Dec-2016 Vadim Tryshev <vadimt@google.com> Introducing teleportation between sections.

The key combos differ from the ones in the spec because key combos
including Meta key don’t get delivered to apps. To fix this, I’ll
implement necessary plumbing after the feature freeze. Meanwhile,
temporary combos are used.

Given that the section and cluster teleportation have a lot in common,
I’m not introducing new methods, but adding a param to the cluster
teleportation ones. I should have also changed the names to something
like findNextKeyboardNavigationCluster => findNextFocusGroup, where
“FocusGroup” is a generalized name for clusters and sections.
However, that name depends on b/33708251, so I’m not doing it now. I
don’t rename existing identifiers, and using “focusGroup” for new
ones. Admittedly, this creates mess that will be resolved based on
the outcome of the mentioned bug.

Bug: 32151632
Test: Manual checks; CTS are coming after feature freeze
Change-Id: I01b5d6e5a9689b8f643fa4af695d2ce61265f374
/frameworks/base/core/java/android/view/ViewRootImpl.java
e40fb27f32bc3717c006267f48231c4e62d7bb07 04-Jan-2017 Vladislav Kaznacheev <kaznacheev@google.com> Fix custom pointer icon caching in ViewRootImpl

Currently if the pointer leaves a window which has
a custom pointer icon, the pointer icon is not updated
upon re-entry.

Bug: 33824962
Test: manual
Change-Id: I3e40413117b8aa2a1bde47394ef9318a03a7e135
/frameworks/base/core/java/android/view/ViewRootImpl.java
01d8c49e040b223d2c4961eb65b5e00f1a967ecf 15-Dec-2016 Vadim Tryshev <vadimt@google.com> Restoring last focused view when teleporting to a cluster.

The UX spec requires each cluster to remember which view was last
focused in it, and focus on it upon the teleportation to this
cluster.

This CL implements saving and restoring the focus.
It also introduces a public API so that an app could switch to a
cluster as if it was teleported to.

Bug: 32151632
Test: Manual checks; CTS are coming after feature freeze.
Change-Id: I0dc816776386015a7f1235f93e3dd9c03dfffcd6
/frameworks/base/core/java/android/view/ViewRootImpl.java
01b0c9ed4e173f0c140a6575049e2964ae1a919f 22-Nov-2016 Vadim Tryshev <vadimt@google.com> Teleportation between clusters.

Per the UX spec, key combos for quickly jumping between clusters are
Meta+Right and Meta+Left. However, these events don’t get delivered
to the app, and I’ll have to implement this plumbing after the
feature freeze. For now, the temporary combos are Ctrl-Shift-”-”
and Ctrl-Shift-”+”.

In addition to the key combo processing, the CL adds public APIs for
teleportation; they are similar to the API for moving the focus.

Bug: 32151632
Test: Manually checking that teleportation works. CTS test will be
added after the feature freeze.

Change-Id: I622156b9e4cc7c44e61623081d6d079bbe04fd02
/frameworks/base/core/java/android/view/ViewRootImpl.java
f847ee3c3d68e58b0a1a545bd7358ebb32f6948a 21-Nov-2016 Vladislav Kaznacheev <kaznacheev@google.com> Implement tooltip support in View

Adding View.setTooltip/getTooltip and 'tooltip' layout attribute.
Following Material Design spec for styles and behavior.

Bug: 31515376
Test: cts-tradefed run singleCommand cts -m CtsViewTestCases
--test android.view.cts.TooltipTest

Change-Id: I2d2527f642cd7446ffc88d4beffc7b81d7a2f6d6
/frameworks/base/core/java/android/view/ViewRootImpl.java
dc589ac82b5fe2063f4cfd94c8ae26d43d5420a0 11-Nov-2016 Sudheer Shanka <sudheersai@google.com> Update usage of ActivityManagerNative.

- Remove references to ActivityManagerProxy.
- Add isSystemReady to ActivityManager.

Bug: 30977067
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test android.server.cts
adb shell am instrument -e class com.android.server.am.ActivityManagerTest,com.android.server.am.TaskStackChangedListenerTest \
-w com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
Change-Id: I07390b6124fb1515821f5c0b37baf6ae74adc8fa
/frameworks/base/core/java/android/view/ViewRootImpl.java
964c68e03a3a5034ab2a3533be450cc9abf9b2cb 28-Oct-2016 Phil Weaver <pweaver@google.com> Send accessibility event on window title change.

Forcing the layout params to be sent to
WindowManagerService, and from there to accessibility
to generate the event.

Bug: 27857482
Test: Adding corresponding CTS.
Change-Id: I24fc97e16b95799259e4c472b6f1052a1dd00a56
/frameworks/base/core/java/android/view/ViewRootImpl.java
c7c4dbb1475378eb3bc17819188b91a2ab1253bf 28-Oct-2016 Winson Chung <winsonc@google.com> Removing forced layout when the window is translated.

Test: Manual, ensure that the accessibility focus is still visible on
a moved window (enable talkback, focus a view, then move the
window).
Change-Id: Ifd67afe355cac2f1df01ddd16f960282f4d36132
/frameworks/base/core/java/android/view/ViewRootImpl.java
c097209f919123558857ad1a10de90e43ee24d6a 03-Oct-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Making old apps passing null ClipData to startDrag work again."
697331784b0988b9691d78aacb18ff825504d4cd 01-Oct-2016 Vadim Tryshev <vadimt@google.com> Making old apps passing null ClipData to startDrag work again.

This is for compatibility; see the bug.

Bug: 31865195
Test: manually rant an old app
Change-Id: If2f55ffd424b31f18610b96dd30bca87408e3df0
/frameworks/base/core/java/android/view/ViewRootImpl.java
a61efa4c3364846b022d87a3c95f5f570a61aec6 29-Sep-2016 Vadim Tryshev <vadimt@google.com> Some fixes in ClipData and ClipDescription delivery.

See the bug.

Bug: 31809803
Test: Ran Drag/Drop CTS
Change-Id: Ie48a172bc465cd33e176801865e54e8aded4ce55
/frameworks/base/core/java/android/view/ViewRootImpl.java
0f986b51fcba714ac4c014b83d9a7c3ffb06b6ff 21-Sep-2016 Vadim Tryshev <vadimt@google.com> For pre-N apps, cascade LOCATION and DROP events. am: 45bee6b24c am: 140adada42
am: 1b060c3ab5

Change-Id: I1a450cf52cc0715092e1578454c4a4bb8a857ba7
1ee3bfb798f28f8ece43cd13e0747bc23a540150 21-Sep-2016 Vadim Tryshev <vadimt@google.com> For pre-N apps, keep entered all parents of an drag-entered child. am: ef12811560 am: f0550a6bd1
am: 72193e13c5

Change-Id: I27ce678e332e9caa5e977e40d18aabf6d9c76b55
45bf9dee0d7dc49ebfecbe73efd8dc55be98b27e 21-Sep-2016 Vadim Tryshev <vadimt@google.com> Eliminating the black hole effect with location/drop events. am: 1edc6daf1d am: 32394cee01
am: 416384e06d

Change-Id: I6d9ea65abf3bcaa3150e6c0f26d2ff184efda095
140adada42088665894097e9e9985a9eb88a5880 21-Sep-2016 Vadim Tryshev <vadimt@google.com> For pre-N apps, cascade LOCATION and DROP events.
am: 45bee6b24c

Change-Id: Ib9a0e17fcc1d76911ee89dda46d99de1449ff295
f0550a6bd141ccd75c22a01254fa25e5df977f98 20-Sep-2016 Vadim Tryshev <vadimt@google.com> For pre-N apps, keep entered all parents of an drag-entered child.
am: ef12811560

Change-Id: Ia086b1525d658d3374174e11a0a06551b8e4910a
32394cee01e509347339312711cffdd471b9777b 20-Sep-2016 Vadim Tryshev <vadimt@google.com> Eliminating the black hole effect with location/drop events.
am: 1edc6daf1d

Change-Id: Ib32d77e7c28867753827a5d8100e628d6d8ee963
45bee6b24c8d181eafce339dc90d11b5e1bec74e 19-Sep-2016 Vadim Tryshev <vadimt@google.com> For pre-N apps, cascade LOCATION and DROP events.

To restore the pre-N behavior, if a view returns false from its
LOCATION or DROP event handler, the event goes to its parent.

Bug: 31559942
Change-Id: I322099ae1e8a5cbbcf8814f2cd274fbae53b6848
/frameworks/base/core/java/android/view/ViewRootImpl.java
ef12811560d4fcce3410eaa4d972dc39001efd4d 16-Sep-2016 Vadim Tryshev <vadimt@google.com> For pre-N apps, keep entered all parents of an drag-entered child.

The bug complains that parents of a view under the drag location
don’t get drag events.
This is first of a 2 CLs that will restore the old functionality
(modulus fixing bugs) for pre-N apps.

This CL restores pre-N "nested" model of the entered state for
pre-N apps. It also makes possible restoring "nested" model for
LOCATION and DROP (implemented in a follow-up CL)

The CL replaces (for pre-N) generation of ENTER/EXIT events that
happens at the moment of changing the drag focus with generation
folowing the recursive delivery of coordinate-bearing events.

Bug: 31559942
Change-Id: Iead6bde9c1f88819b30afc78c1f424f7c1b64d51
/frameworks/base/core/java/android/view/ViewRootImpl.java
1edc6daf1d13ec472da2aae2a2a88d130c495cb7 16-Sep-2016 Vadim Tryshev <vadimt@google.com> Eliminating the “black hole” effect with location/drop events.

Currently, a container view that doesn’t accept events, but has a
child that accepts events, prevents its parent from receiving
LOCATION/DROP events while the drag is over the container (but not
the child). This is a bug.

With this fix, such a container will prevent the parent from
invoking a (second) LOCATION/DROP event only if the event was really
delivered to any of its descendants.

To know whether the event was delivered, I added
DragEvent.mEventHandlerWasCalled member.

EXITED/ENTERED events are now generated upon delivery of the event
that has coordinates in it.

Current view that has drag focus is now global to reflect the fact
that it’s one per process.

Bug: 31469490
Change-Id: I248e8d1de87b7734853136eb4719f7571cea91d5
/frameworks/base/core/java/android/view/ViewRootImpl.java
d94094e06277e002c2eb8bfd2ffd1e0bb98833d4 08-Sep-2016 John Reck <jreck@google.com> Illegal behavior -> Exception

Throw an IllegalStateException if the contract
of OnDrawListener is violated.

Change-Id: Ic86f6a0c8cd69ee7a8daa0ba135a3df76f56a213
/frameworks/base/core/java/android/view/ViewRootImpl.java
93521c004356fda4da7eac12cd2c5cde40778d4d 06-Sep-2016 Phil Weaver <pweaver@google.com> Stop double notifying a11y about Toasts. am: 532c7999c5 am: de13bcf08b
am: 6e56bb4c14

Change-Id: Ia95d2eb44f3deee794986a420a622fb1c7de9e15
de13bcf08bb04f2c83f9db5d36db65e6a6120c87 06-Sep-2016 Phil Weaver <pweaver@google.com> Stop double notifying a11y about Toasts.
am: 532c7999c5

Change-Id: If8d025884b8a941386cd472403c1c93fee5a70af
85d18cce6d023afcdcb5de482a384c593a58a578 06-Sep-2016 Phil Weaver <pweaver@google.com> Merge "Stop double notifying a11y about Toasts." into nyc-mr1-dev
8c52bf51a2682c1a1faf3a134ce603edc0837884 31-Aug-2016 Adam Powell <adamp@google.com> Fixes for ImageView drawable visibility dispatch am: 06f9eb8b62 am: fd86f7fdfd am: ee2f4d890e
am: 393279da8f

Change-Id: I7e42805b096de31e388cd86ee87b44f312841aed
532c7999c52ed41bcc83461608044b799b6317d2 30-Aug-2016 Phil Weaver <pweaver@google.com> Stop double notifying a11y about Toasts.

TalkBack was speaking all Toasts twice because we were
sending both NOTIFICATION and a WINDOW_STATE_CHANGE events
when Toasts were displayed.

Stop sending the WINDOW_STATE_CHANGE event for toasts.
Bug: 30570188
Change-Id: I26c6dc50350dfd4daf2a706b94fadcf5d1e03557
/frameworks/base/core/java/android/view/ViewRootImpl.java
ee2f4d890e8efcc3971853fd9b6638cec045bff2 27-Aug-2016 Adam Powell <adamp@google.com> Fixes for ImageView drawable visibility dispatch am: 06f9eb8b62
am: fd86f7fdfd

Change-Id: I155ed970c7f58895419778f01eebc5babb141c33
06f9eb8b621550ae1d39822fda38011a3ed5bdb9 25-Aug-2016 Adam Powell <adamp@google.com> Fixes for ImageView drawable visibility dispatch

Some apps rely on their drawables not getting not-visible hints via
setVisible when the window visibility changes. This manifests as
additional animations, such as crossfading from placeholders when the
window becomes visible again.

Apps should be able to handle this case in the future now that we have
more detailed reporting via onVisibilityAggregated, but to keep
existing apps working as-is, ImageView now operates in a compatibility
mode for targetSdkVersion < N and will only dispatch visibility
signals based on the same triggers used in M. New apps get the more
detailed signals.

Fix a bug where window visibility dispatch via onVisibilityAggregated
would double-dispatch "not visible" when the window is transitioning
from GONE => INVISIBLE or INVISIBLE => GONE.

Make the growing set of compatibility check fields in ImageView
static, matching the pattern from View.

Bug 30216207

Change-Id: I88875260bf6aaa23687c7d51353de8d633383531
/frameworks/base/core/java/android/view/ViewRootImpl.java
10b133cc9e6392e4a6acd7f85d90ede464c3e957 23-Aug-2016 Adam Powell <adamp@google.com> Only dispatch window visibility aggregation for targetSdk >= N am: 64e1ba4398 am: 02abbe8d4c am: ca3a267478
am: 7cc5539a03

Change-Id: I241adaa27bb952d2b826721100944d569ac57149
ca3a2674786de6c03742accc3e7776d19ed60e4d 23-Aug-2016 Adam Powell <adamp@google.com> Only dispatch window visibility aggregation for targetSdk >= N am: 64e1ba4398
am: 02abbe8d4c

Change-Id: I66f8610e52f2aaf06b02fa8d369692fc2f89ee17
64e1ba4398aad1b08a24b15a1d094eb2e9cc1e61 22-Aug-2016 Adam Powell <adamp@google.com> Only dispatch window visibility aggregation for targetSdk >= N

Some existing apps treat drawable visibility notifications as a signal
to crossfade from a placeholder to the new image for the purposes of
scrolling onscreen via a recycling collection view or similar. Since
dispatchVisibilityAggregated is now called for window visibility
changes and ImageView informs its drawable of the visiblity change,
the extra call triggers a repeat fade-in in some existing apps when
you return them to visibility.

These apps should pay attention to the second parameter of
Drawable#setVisible, which signals that animations should not restart
in response to a visibility change. Updating to targetSdkVersion=24+
will enable the new behavior.

Bug 30216207

Change-Id: I27ce9f09bc7544863f7f7980c273650949db21cc
/frameworks/base/core/java/android/view/ViewRootImpl.java
854d3f2ec2c50769b0ded4053c461c0a971a840f 11-Aug-2016 Vladislav Kaznacheev <kaznacheev@google.com> Enable StrictMode.detectFileUriExposure() for drag and drop

Call ClipData.prepareToLeaveProcess/prepareToEnterProcess
at appropriate moments to check for StrictMode violations.

Bug: 30772435
Change-Id: I5c84c6c7b3d04094563623156616390d3df6879e
/frameworks/base/core/java/android/view/ViewRootImpl.java
e481885e18a7c4b8748c2fc43a96874f936f8775 31-Jul-2016 Prashant Malani <pmalani@google.com> Let Rotary encoder events skip IME am: fecbc67e0d
am: a6bc98c003

Change-Id: Iecf4f32e56e3fac398b8ded665285af5e3632d2f
fecbc67e0d39bc3b575be83d1bfc27de0504b47a 23-Jul-2016 Prashant Malani <pmalani@google.com> Let Rotary encoder events skip IME

Rotary Encoder input events don't need to go through the IME, and hence
should skip it. This will save IPC round trip time, and cut down on
latency.

Bug: 29207649
Change-Id: I8b5062b9c409b338b2254232a2e0f7819d9b71de
/frameworks/base/core/java/android/view/ViewRootImpl.java
cd84cfab79ac01b4329846b11136ca9e7c107d92 27-Jul-2016 Vladislav Kaznacheev <kaznacheev@google.com> Make DragEvent.getClipDescription() return null for ACTION_DRAG_ENDED

This is required to bring the DragEvent behavior in line with JavaDoc.


Bug: 30407098
Change-Id: I87b7f3ed3fe56681ca54a44e5cdeaf32966ad495
/frameworks/base/core/java/android/view/ViewRootImpl.java
f2034d645524d50914972653a7260adb98b64846 15-Jul-2016 Vladislav Kaznacheev <kaznacheev@google.com> Merge \\"Always return valid ClipDescription for ACTION_DRAG_EXITED\\" into nyc-mr1-dev am: 278676bdeb
am: b604ade452

Change-Id: Ie779f0a6ca15f6f190a6361bddc4982b522004cd
7fe1f798bf45da33fa8012d9b28ffccebde32076 15-Jul-2016 Vladislav Kaznacheev <kaznacheev@google.com> Always return valid ClipDescription for ACTION_DRAG_EXITED

Bug: 30148704
Change-Id: I5f5cbb35a343e6ef61bed9ff92e3921a4ecce0c0
/frameworks/base/core/java/android/view/ViewRootImpl.java
0aaf42755056778c3b950efb99b9124b50755c79 25-Jun-2016 Phil Weaver <pweaver@google.com> Behave if the same view gets a11y focus twice.

In some corner cases, ViewRootImpl#setAccessibilityFocus
can be called twice for the same view. Make sure we're
actually changing views before clearing accessibility focus
to avoid inconsistent state.

Bug: 29637593
Change-Id: I5dc6f05bdeaec55c352417bfca92c11bd03c3c10
(cherry picked from commit da4692774c74b51818a2df1dc7534d8d13d62634)
/frameworks/base/core/java/android/view/ViewRootImpl.java
9c68b2b076286ef2f1fe3355755e53aa341fbef7 13-Jul-2016 Chong Zhang <chz@google.com> Merge \\"Revert changes to force layout after insets changes\\" into nyc-mr1-dev am: 185131442b
am: 12fad318b1

Change-Id: I881ff5642a7b1b748d948345728acd3ceb4b9855
75eccbd0ff315ee02890d22917801151c779cfb1 13-Jul-2016 Chong Zhang <chz@google.com> Revert changes to force layout after insets changes

Alternative fix for b/29391054 ag/1152795 sends an MOVE message to
client which also force a layout, so we no longer need to force
it after the insets change in the traversal.

Reverting the following two related fixes as it does more
measures than necessary.

bug: 29391054
bug: 29533997
bug: 29634368

Revert "Fix layout issue after insets changed"

This reverts commit 76fdbb72c93a431e14357e0ea3d5a83edfa75c5e.

Revert "Do a forceLayout if pending insets is changed after relayout window"

This reverts commit 71f2c31469ed9628d744d20b86eaf188cfdf686d.
/frameworks/base/core/java/android/view/ViewRootImpl.java
45faba516e200760e977e8ceb76f079ee8aa7415 28-Jun-2016 Stan Iliev <stani@google.com> Fix wording regarding ThreadedRenderer

ThreadedRenderer is not synonymous with hardware rendering, so
remove references to hardware rendering when referring to
ThreadedRenderer.

Change-Id: Ic66a482ccf05f556ebe6ec194ce4f858f75bbb8b
/frameworks/base/core/java/android/view/ViewRootImpl.java
4192eac03a125ae8d6437a2c5097844b9d72a82e 27-Jun-2016 Phil Weaver <pweaver@google.com> Merge "Behave if the same view gets a11y focus twice."
da4692774c74b51818a2df1dc7534d8d13d62634 25-Jun-2016 Phil Weaver <pweaver@google.com> Behave if the same view gets a11y focus twice.

In some corner cases, ViewRootImpl#setAccessibilityFocus
can be called twice for the same view. Make sure we're
actually changing views before clearing accessibility focus
to avoid inconsistent state.

Bug: 29637593
Change-Id: I5dc6f05bdeaec55c352417bfca92c11bd03c3c10
/frameworks/base/core/java/android/view/ViewRootImpl.java
9a327642df3992708a9b03b84562d7a420834a76 25-Jun-2016 Adam Powell <adamp@google.com> Merge \\"Fix layout issue after insets changed\\" into nyc-dev am: 119f1715b3
am: 242a44395e

Change-Id: Iab3e11ed6346ed538f3206faa32d15e6e227efef
c43c9e052e0928abd9648a442a5b1acfa21a8fc7 25-Jun-2016 Adam Powell <adamp@google.com> Merge \"Fix layout issue after insets changed\" into nyc-dev
am: 119f1715b3

Change-Id: I343dc8ad193ad83a8c0628c104836bd392cd07d5
76fdbb72c93a431e14357e0ea3d5a83edfa75c5e 24-Jun-2016 Adam Powell <adamp@google.com> Fix layout issue after insets changed

Fix a regression where a change in insets would forceLayout on the
view hierarchy but not run the measure/layout as a result. This would
cause layout requests to become stalled until a window-level relayout
event.

Bug 29634368

Change-Id: Ia3f32f5891c8b32c06c13f95ebd0572233572b04
/frameworks/base/core/java/android/view/ViewRootImpl.java
ce71c120df5386401ddaec61030e24fe8b398c1a 22-Jun-2016 Adam Lesinski <adamlesinski@google.com> Merge \\"ContextImpl: Keep DisplayAdjustments and Display in sync\\" into nyc-dev am: 0bf31c3fa6
am: a72a6aae37

Change-Id: I8c85a4bb67d470c5bba5bcf81915e4684019027b
e894efa9b6b40865d6d5666a5d776ba4e7185156 22-Jun-2016 Adam Lesinski <adamlesinski@google.com> Merge \"ContextImpl: Keep DisplayAdjustments and Display in sync\" into nyc-dev
am: 0bf31c3fa6

Change-Id: Id0d16d2f9d69b87d4b4c01370eeceafe329d1817
4ece3d6bb18a609afcd0e82f0340b7d36ba24eea 17-Jun-2016 Adam Lesinski <adamlesinski@google.com> ContextImpl: Keep DisplayAdjustments and Display in sync

Make sure that when our Resources get updated, that DisplayAdjustment
and Display properly reflect the potentially new screen dimensions.

Bug:28388969
Change-Id: I340550ea094ece87abc8790dd46aaa60ab3cedd3
/frameworks/base/core/java/android/view/ViewRootImpl.java
b0e28cf5b331fa847a381018cdf0bde5fd0f8960 18-Jun-2016 Chong Zhang <chz@google.com> Merge \"Do a forceLayout if pending insets is changed after relayout window\" into nyc-dev
am: 2756d0707f

Change-Id: I72a8192317ebaa7c036416a65b415c2471f449de
788f4309acf618f305ea0ca3b6564a8120da8c40 17-Jun-2016 Chong Zhang <chz@google.com> Merge \\"Do a forceLayout if pending insets is changed after relayout window\\" into nyc-dev am: 2756d0707f
am: dba235d91a

Change-Id: I1a9758b62322aecaea79c879f82b1793bae67061
71f2c31469ed9628d744d20b86eaf188cfdf686d 17-Jun-2016 Chong Zhang <chz@google.com> Do a forceLayout if pending insets is changed after relayout window

We might have a pending MSG_RESIZED_REPORT, but if it's executed after
relayoutWindow, mPendingInsets will already be the new value and it'll
not forceLayout. So we need to forceLayout here to make sure the measure
cache is cleared.

bug: 29391054

Change-Id: I73793b1427b89e75700369ec3b37053a6a732f0d
/frameworks/base/core/java/android/view/ViewRootImpl.java
b3b6d96ed42d94e57c5d45f191e60be975404ef3 10-Jun-2016 John Reck <jreck@google.com> Merge \\"Don\\'t call surfaceCreated for just changed surfaces\\" into nyc-dev am: e4b1fb94e3
am: 93ff5124c6

Change-Id: I7b53bc90c0f4edbf1482924d02fd6361884a7860
b8dac11e5ae981c824e3c31de079134f4aee9a3b 10-Jun-2016 John Reck <jreck@google.com> Merge \"Don\'t call surfaceCreated for just changed surfaces\" into nyc-dev
am: e4b1fb94e3

Change-Id: I488da6f9f779ddf64beb6ac12d1481d2bfd69821
208c47cfb0b1aaec7a3f8478b672da3c9c75306d 10-Jun-2016 John Reck <jreck@google.com> Don't call surfaceCreated for just changed surfaces

Fixes: 29223302

If the surface only changed we want to just call onSurfaceChanged,
not onSurfaceCreated.

Change-Id: I65c8b210a7e34eaa2862020335ee7f6ef56eeac2
/frameworks/base/core/java/android/view/ViewRootImpl.java
718cd3eb70703c43f29ca37907bbf0e153d8cca0 18-May-2016 Doris Liu <tianliu@google.com> Handle hidden RT VectorDrawable animators

This CL changes the target of VD specific animators to VectorDrawable,
instead of RenderNode. The benefit of doing so is that animators can
now detect whether the animation is meaningful by checking whether
their VD target is in the display list. If not, that means the VD is
not drawing for the current frame, in which case we can be smarter
and more power efficient by removing the animator from the list and
posting a delayed onFinished listener callback.

By setting VD as the animation target, when an ImageView decides to
update its drawable from one AVD to something else, we'll be able
to detect that the previous AVD is no longer in the display list,
and stop providing animation pulse to the stale AVD, which is
something we couldn't do previously. This change also
handles the case where one AVD instance could be drawn in two
different views.

Bug: 27441375
Change-Id: Iaad1ed09cfd526276b95db0dd695275c28e074e8
/frameworks/base/core/java/android/view/ViewRootImpl.java
67254723297442a7ac6a2479ec7f72f38f310c3c 02-Jun-2016 Chong Zhang <chz@google.com> Fix scroll amount calculation in ViewRootImpl

When calculating scroll amount, we should check whehter focus
is visible using before-scrolling position.

It's possible that the view is already scrolled, then visible
insets changes (eg. IME went away). Previous scroll position
still makes the focus visible, but it will leave the focus
in a bad position when it should be scrolled back.

bug: 29025892
Change-Id: I091f16bebc4c1e5ba831616c51ab2ac75d4c4b3c
/frameworks/base/core/java/android/view/ViewRootImpl.java
e78ba24c176fd6a0c54eaf7e52be545952ba1ab7 26-May-2016 Tenghui Zhu <ztenghui@google.com> Merge "Update the light center when the root view's layout changed" into nyc-dev
778e3b91acad6da04341d439f0c66a4fd09def4f 16-May-2016 Michael Wright <michaelwr@google.com> DO NOT MERGE Remove Pointer Capture API

The underlying implementation needs to be completely rethought. If a
process crashed while you were in pointer capture mode, you were
pretty much stuck in it. If the mouse happened to move outside of
your bounds right before you called the API, you'd never actually get
an event (whatever it was hovering over would). There's no easy way
for the system to tell you when you enter or exit this mode because
it doesn't actually track who the current request is from.

These are all solvable, but not in the N time frame. Maybe next time.

Bug: 26830970
Change-Id: I03efd63c499b86dc278491ca3284566c1965581f
/frameworks/base/core/java/android/view/ViewRootImpl.java
f9d9ce7705475874c82af04eb9b208a7fb556792 13-May-2016 Michael Wright <michaelwr@google.com> DO NOT MERGE Rename PointerIcon and Pointer Capture APIs

This is a response to API council feedback.

Bug: 26830970
Change-Id: Ia2d284b5c1ab8365bedfdc37d129be4b8146036b
/frameworks/base/core/java/android/view/ViewRootImpl.java
2757128940c35d8007e1817b32e7128e2569ad6e 13-May-2016 Teng-Hui Zhu <ztenghui@google.com> Update the light center when the root view's layout changed

b/26208900

Change-Id: I0594b2801d54a489e7d858b7a0f9549fcc30f9a0
/frameworks/base/core/java/android/view/ViewRootImpl.java
44aabe4b7240a9a03678b4a66bdd5f46a9dfb29a 10-May-2016 Chong Zhang <chz@google.com> Disable keep_screen_on traces

bug: 28692100
bug: 27522448

Change-Id: Ic077e8985f1f21bc111287813fb2992ed01df909
/frameworks/base/core/java/android/view/ViewRootImpl.java
6afe594461930e83cbf5ecf181bf43fcba0060dd 05-May-2016 Chong Zhang <chz@google.com> Merge "Debug traces to facilitate screen timeout debugging" into nyc-dev
4ffc3180121b36eec2577b3c311ad4da44c3af56 05-May-2016 Chong Zhang <chz@google.com> Debug traces to facilitate screen timeout debugging

bug: 27522448
Change-Id: I4d51be316e4aedecffb7001126849d7c6136d517
/frameworks/base/core/java/android/view/ViewRootImpl.java
d86fb2ce37b6b812992a28e7210a82f169d1cdcf 04-May-2016 Chet Haase <chet@google.com> Force second measure pass when there is a configuration change

It's possible for a call to updateConfiguration() to happen in the middle
of performTraversals(), after the measure phase has happened, but before
the layout phase. During the configuration call, it's possible for views to
have requestLayout() called on them. This can result in the request flag
not getting cleared, because views that have had layout requested, but which
have not yet been measured, may not be told to layout.

The correct flow should be that any code path causing requestLayout() (which
could be anything that calls out to user/app code) should happen before the
measure phase (or cause a second measure to occur). For now, causing the second
measure to occur is a low-risk simple change that fixes the immediate problem.

Issue #28152259 Calling requestLayout from inside View.onConfigurationChanged can cause problems

Change-Id: I3b532eeacc3784d8d21193d01ddd7fa15ac0684e
/frameworks/base/core/java/android/view/ViewRootImpl.java
1bccabf3c443afb17531f863beda10d626667d1f 28-Apr-2016 Robert Carr <racarr@google.com> Fix ViewRoot inset adjustment after initial setup.

If the insets change, "mWidth/mHeight" won't change
as it's based on the window frame (not the surface size),
we need to track when the insets change and call
HardwareRenderer.setup with the new values.

Bug: 28257246
Bug: 28368990
Change-Id: Ida304b57c4671d010d1cf7b370674c9453841c97
/frameworks/base/core/java/android/view/ViewRootImpl.java
b2594850870ba950067962d41c481f9bbfafeaf1 26-Apr-2016 Robert Carr <racarr@google.com> Fix bugs with takeSurface and preserveWindows.

When reusing a ViewRoot and DecorView as we do with preserveWindows
there are two issues with SurfaceHolders. First, we update the
SurfaceHolder callbacks when we call ViewRootImpl.setView. In the
case of preserved window relaunch, the DecorView is reused and there is
no call to setView. We need the ActivityThread to notify the ViewRoot
that something has changed. Secondly, we were assuming the only time
a new surface would be created for the purposes of SurfaceHolder
notification was when we previously did not have a valid surface.
Instead we need to check if the native Surface object has changed each time we
get a result from relayout.

Bug: 28331264
Change-Id: If1b4aab9b2ba579fa040e2a3ab4471842476d82f
/frameworks/base/core/java/android/view/ViewRootImpl.java
0d6222d96d72199f607e3ca5b3d696212372bf47 19-Apr-2016 Jorim Jaggi <jjaggi@google.com> Fixes for resize thread

- Make sure to draw navigation bar/status bar background before the
main render node. This is to avoid any flickering when entering
resizing mode, so you rather overdraw than underdraw.
- Draw the first frame from the main thread directly to increase
chance that all drawing commands are processing within a single
frame.

Bug: 27864358
Bug: 28003586
Change-Id: I033f57cdbcb2c16ea93134c041095a415d5c25b4
/frameworks/base/core/java/android/view/ViewRootImpl.java
d6a25c2b3e7fd5a98741e2f770cf54d539b29258 14-Apr-2016 John Reck <jreck@google.com> Merge "Revert "Revert "Make stopped state a first-class thing""" into nyc-dev
8afcc76920499d0a384dba1470c5a377f80ed768 13-Apr-2016 John Reck <jreck@google.com> Revert "Revert "Make stopped state a first-class thing""

This reverts commit eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399.

Fixes first-frame issue, mReportNextDraw needs to override
mStopped

Fixes: 28118961
Fixes: 27286867

Change-Id: I5c811759637d08ba9f3b342016d1b3006986d5a2
/frameworks/base/core/java/android/view/ViewRootImpl.java
3fb1c81394f98b025b488774916b7580f9e31dab 13-Apr-2016 Wale Ogunwale <ogunwale@google.com> Merge changes Ieefeb843,Ic2a94b09 into nyc-dev

* changes:
Update surface insets on window elevation changes.
Fixed bug with cropping out drop shadow for pinned stack.
52546e46353f455d6a5bd070da6095868d7fc8bd 13-Apr-2016 Michael Wright <michaelwr@google.com> Merge "Crash early when requesting a keyboard shortcut helper..." into nyc-dev
53b854ad7de5c22e03383b0f6538a493f601b7c9 13-Apr-2016 Michael Wright <michaelwr@google.com> Crash early when requesting a keyboard shortcut helper...

with a null IResultReceiver.

We're seeing Dialer crashes in this code path but they happen in the
main Handler loop so we can't see where the request with the null
request is coming from. Crashing earlier will hopefully give us a
stack trace that we can use to diagnose the issue.

Bug: 27963013
Change-Id: I60e4ef2ef328fa69790bbcaa4f196c02f7443296
/frameworks/base/core/java/android/view/ViewRootImpl.java
825fa4d5ae7b2907ee1769d09e6333306de2a92e 11-Apr-2016 John Reck <jreck@google.com> Merge "Revert "Make stopped state a first-class thing"" into nyc-dev
eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399 11-Apr-2016 John Reck <jreck@google.com> Revert "Make stopped state a first-class thing"

This reverts commit 945961f78a78eced823d5ba78505c781b079703d.

Change-Id: Iebc1d49fac33380233f8785fc39bec6c30a5e714
/frameworks/base/core/java/android/view/ViewRootImpl.java
af93306a3db9c0a04d74809901cc297834bbba87 09-Apr-2016 Phil Weaver <pweaver@google.com> Merge "Reduce unnecessary accessibility cache clearing." into nyc-dev
e37cfab6c65ec0997b07089e70fa0ad47d2fbd83 08-Apr-2016 Phil Weaver <pweaver@google.com> Reduce unnecessary accessibility cache clearing.

Tracking if accessibility focus is being cleared because it is being
set to another view in the same window. In this case, leave
accessibility focus on the window.

This change greatly reduces the amount of cache re-indexing.
Previously we flushed the cache every time accessibility focus moved.

Bug: 28077283
Change-Id: If80899d36e7f58b22635f844bdd4ea37a55b875e
/frameworks/base/core/java/android/view/ViewRootImpl.java
945961f78a78eced823d5ba78505c781b079703d 08-Apr-2016 John Reck <jreck@google.com> Make stopped state a first-class thing

Bug: 27286867

WindowManager has committed to stopped state
controlling the lifecycle of the Surface, so
make that a first-class thing in HWUI as well.

This makes it more resistent to things like
a rogue updateSurface() happening while mStopped=true,
leading to bad things down the line. Instead let
the surface be changed/updated as often as desired,
and just block any attempt to draw on that surface.

Also removes some unnecessary makeCurrent()s, as
EglManager ensures that we *always* have a valid
GL context now (using a pbuffer surface if there is
no window surface set)

Change-Id: Iead78ddebc7997e8fdb0c9534836352f5e54b9bd
/frameworks/base/core/java/android/view/ViewRootImpl.java
246c209e4fe704c0745224be0ab05225e8431d11 07-Apr-2016 Wale Ogunwale <ogunwale@google.com> Update surface insets on window elevation changes.

Window manager factors in the surface insets when calculating the
right crop for a window surface. Without the surface insets been
updated and new param forwarded to window manager, the window crop
will not be the right size and the window drop shadow might not show.

Bug: 27364161
Change-Id: Ieefeb8435543f3137672a065269cdeefca371111
/frameworks/base/core/java/android/view/ViewRootImpl.java
26952d748eaab23330c660fa0d7f5c0450dc1d06 02-Apr-2016 Jorim Jaggi <jjaggi@google.com> Do not call forceLayout if not needed

If the relevant frames for the app don't actually change, there is
no reason to call forceLayout and force a layout pass.

Bug: 27864358
Change-Id: I2add8cc5791023937afc154e6e50bbf7efb35adb
/frameworks/base/core/java/android/view/ViewRootImpl.java
44b49f070aafe8ad44efae87341121cce49ff11c 25-Mar-2016 John Reck <jreck@google.com> Add a callback for rendernode parentcount=0

Bug: 27709981
Fixes: 22565656

Change-Id: I1cb4461baf9069dc4e7ca6de10d5862578c107f4
/frameworks/base/core/java/android/view/ViewRootImpl.java
75c21ca948aabbcd8b87196e966771b1dd976686 29-Mar-2016 Jorim Jaggi <jjaggi@google.com> Revert "Start drawing immediately"

This reverts commit 3127c2a471dbefda916701d9b3837ce109ea7d49.

The original CL caused various issues for which we don't have the
time/not willing to take the risk.

Bug: 27864389
Bug: 27451341
/frameworks/base/core/java/android/view/ViewRootImpl.java
16b631923ddf7a32d055e06d1dea70964f85e5a6 26-Mar-2016 Jorim Jaggi <jjaggi@google.com> Cleanup window callbacks locking

- Also get rid of USE_MT_RENDERER, because there is no point in
having a flag if the other path never gets tested.

Bug: 27738239
Change-Id: Ic76115962940e72f2c59b8d291d078d15f8d493c
/frameworks/base/core/java/android/view/ViewRootImpl.java
aaa38c9f1ae019f0fe8c3ba80630f26e582cc89c 28-Mar-2016 Yohei Yukawa <yukawa@google.com> Ensure IC#finishComposingText() is called on the correct Handler.

This attempts to reland previously reverted CLs [1][2] due to an
unexpected regression (Bug 27824691).

The Bug 27868748 we want to address by this CL is that currently
InputConnection#finishComposingText() can be called on the root view's
Handler no matter what Handler is associated with
ControlledInputConnectionWrapper. Actually the root cause of
Bug 6789252 is the same, but there we worked around it by not calling
InputConnection#finishComposingText() in certain situations [3].
With this CL we should be able to logically revert that workaround.

This CL also removes redundant IMM#mServedInputConnection. This is safe
because the following two fields have the same lifetime.
- InputMethodManager#mServedInputConnection
- InputMethodManager#mServedInputConnectionWrapper
We do not need to maintain both of them. This also allows us to use a
strong refecente in IInputConnectionWrapper#mInputConnection instead of
a WeakReference. To understand why this is safe, we need to understand
how things previously worked, which is as follows:

1. InputMethodManager#mServedInputConnection becomes non-null.
-> IInputConnectionWrapper#mInputConnection.get() is guaranteed to
be alive.
2. InputMethodManager#mServedInputConnection becomes null or another
object.
-> IInputConnectionWrapper#mInputConnection.get() may not be alive.

Since we know exactly when InputMethodManager#mServedInputConnection is
updated, in theory we do not need to use WeakReference here, and
with this CL we do not use WeakReference anymore. Actually the initial
commit [1] accidentally removed the last strong reference to the active
InputConnection and WeakReference could be null at any time, which was
what we observed in Bug 27824691.

[1]: I1181e067aa5bedbdf0c7ec1bcec479257aea511c
afb6558c8f5e0ee797b252558d7e529e3d946d8f
[2]: Ibe94f115e607a198d12ecd3d4e4f91a7d9469c98
16e2c7b59aacf44df7aaa0d04e0228240907487f
[3]: I66f51da1299532793ef8fa700f35b0811670f235
4e5184f929d2498714bc7734fe10b9b8810cb071

Bug: 27868748
Change-Id: If2a03bc84d318775fd4a197fa43acde086eda442
/frameworks/base/core/java/android/view/ViewRootImpl.java
c39c7b0ce2b80fbadfd58245c106cc513b83eac2 24-Mar-2016 Jorim Jaggi <jjaggi@google.com> Add shadow during resizing in docked mode

Bug: 27738239
Change-Id: I48c45bd97c2aa7f3d7bbb5b1ba650fbe408bd0bf
/frameworks/base/core/java/android/view/ViewRootImpl.java
cdf90bb6747aa100305def66a7984522600d803e 24-Mar-2016 Yohei Yukawa <yukawa@google.com> Merge changes I16312592,Iadfc226e into nyc-dev

* changes:
Revert "Remove redundant IMM#mServedInputConnection."
Revert "Make sure to call back reportFinish() on the desired Handler."
1fa5f594a26b00aa137703bb21e186910c1242c6 24-Mar-2016 Yohei Yukawa <yukawa@google.com> Revert "Make sure to call back reportFinish() on the desired Handler."

This reverts commit 16e2c7b59aacf44df7aaa0d04e0228240907487f.

It turns out that I1181e067aa5bedbdf0c7ec1bcec479257aea511c caused
a serious regression Bug 27824691. To revert that CL, we have to revert
this one first.

Bug: 25332806
Bug: 27824691
Change-Id: Iadfc226eb91cc969b77c9d98e04ec3c76fe86ead
/frameworks/base/core/java/android/view/ViewRootImpl.java
3e5bf786b7ca36fa0cc150fcd8d0e7a69ecb9db0 24-Mar-2016 Clara Bayarri <clarabayarri@google.com> Merge "Keyboard Shortcuts: plumb deviceId through" into nyc-dev
fcd7e80b21cc9db6be00e37371401ea1d0938796 10-Mar-2016 Clara Bayarri <clarabayarri@google.com> Keyboard Shortcuts: plumb deviceId through

Bug: 27673736
Change-Id: Ie72807aa8c2bfd142b081a6a915e101c16d31473
/frameworks/base/core/java/android/view/ViewRootImpl.java
16e2c7b59aacf44df7aaa0d04e0228240907487f 23-Mar-2016 Yohei Yukawa <yukawa@google.com> Make sure to call back reportFinish() on the desired Handler.

Before exposing #reportFinish() as a public API, we have to fix an
existing bug that my previous CL [1] for Bug 26945674 forgot to take care.

Currently BaseInputConnection#reportFinish() is always called by using
the root view's Handler. We should move the logic to call
BaseInputConnection#reportFinishInputConnection() from ViewRootImpl to
IInputConnectionWrapper to make sure that the method in question can
always be called on the desired Handler.

To make things simple, instead of explicitly calling #reportFinish()
from IMM, this CL let ControlledInputConnectionWrapper#diactivate()
internally call #reportFinish() as needed. This makes it easier to make
sure that #reportFinish() is called after all the queued method calls
are handled.

[1]: Id9e579bb3e2966986cdcb1c34bc8cacfeca2e1a9
612cce92ad96eda1146c3abd2afa7aaa4d4f2b3f

Bug: 25332806
Change-Id: Ibe94f115e607a198d12ecd3d4e4f91a7d9469c98
/frameworks/base/core/java/android/view/ViewRootImpl.java
9c146bfee788c5b5d95cc732916be1a0d1ecd162 16-Mar-2016 Adam Powell <adamp@google.com> Refinement for onVisibilityAggregated

Change the args for onVisibilityAggregated to a single boolean for
visibility to the user. Also fix an ordering bug that could trigger a
view background drawable call to setVisible before the view would
respond true to verifyDrawable, which caused issues with some apps.

Bug 27461617
Bug 27689884

Change-Id: I58bdc7c4364264f7fa0863689ba2b76df904ef81
/frameworks/base/core/java/android/view/ViewRootImpl.java
41d9690c3e3588dd273308279b9e609c2c6da3c7 15-Mar-2016 Adam Powell <adamp@google.com> Add View#onVisibilityAggregated

There's a common misconception (even across the framework) that
View#onVisibilityChanged determines and reports visibility on 'this'
up to the changed view and the total visibility within the
window. Knowing this is useful for things like starting/stopping
animations. onVisibilityChanged only reports the visibility for the
specific changed view, not the effects that would have down the tree.

Add onVisibilityAggregated to report what some code thought it was
getting already, and move ImageView and ProgressBar over to using it.

Bug 27461617

Change-Id: I433f41de453e27a53f907f1d9805350f30f31de9
/frameworks/base/core/java/android/view/ViewRootImpl.java
e4f131a595cd9ef57c4abb679c23fb03b4062e47 07-Mar-2016 Wale Ogunwale <ogunwale@google.com> Disabled debug logs

Disabled log points that were enabled for b/27286867

Bug: 27286867
Change-Id: I1a5fe82dfc3e85adef12be8b52277be6131f5d73
/frameworks/base/core/java/android/view/ViewRootImpl.java
6cf85afcb1e0e410e8e168c999e40fad3797d6ab 29-Feb-2016 Andrii Kulian <akulian@google.com> Merge "Reset pointer icon when view is not present" into nyc-dev
33c1bc586c4b2dde2d54c16cd9c7b8bc366e5096 29-Feb-2016 Andrii Kulian <akulian@google.com> Reset pointer icon when view is not present

Sometimes pointer change request is delivered after view is detached from its
ViewRootImpl. E.g. when popup is present click outside to close it.

Bug: 27292939
Change-Id: I925728af334a1e1ae53f7e530d639e50b0c37f2b
/frameworks/base/core/java/android/view/ViewRootImpl.java
fc736869aced442057e5a2c16a9591dca1f93295 27-Feb-2016 John Reck <jreck@google.com> Switch to pbuffer surface sooner

Bug: 27286867

If the system/app is slow, it might take too long to
stop drawing. Switch the ordering of destroying stuff so
that we switch to the pbuffer surface first, then do
cleanup

Change-Id: If64a3dbb71bb9fd53567231590436a89b2f1a09e
/frameworks/base/core/java/android/view/ViewRootImpl.java
f4db3d253ef533f6992217fcbb3119a091172d94 26-Feb-2016 John Reck <jreck@google.com> Don't lose mInitialized in onStop()

Bug: 27350647
Change-Id: I74e6427ac4030645c416efb24948efdbdc90fa1c
/frameworks/base/core/java/android/view/ViewRootImpl.java
26d02d29e37564c2b01e0c73f9b5cd93af34de75 25-Feb-2016 Jorim Jaggi <jjaggi@google.com> Use actual window size for layout

When doing the actual layout pass, desiredWindowWidth/Height might be wrong,
because window manager has the final say how large the surface is, so use
that size.

Bug: 27342700
Change-Id: I4f74fdef66ba7aa88b86f8c95fb391b1cc847beb
/frameworks/base/core/java/android/view/ViewRootImpl.java
0ffd49cbe0ab4c13fd5528abacade898a8cff481 13-Feb-2016 Jorim Jaggi <jjaggi@google.com> Always consume bottom insets when navigation bar is force shown

When an app requests SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION but we
force show the navigation bar, we need to treat for the app like
there is no virtual navigation bar on the device. Because if you
combine it with FLAG_HIDE_NAVIGATION, you'd expect the navigation
bar gets hidden but it doesn't, so there could be content that
overlaps with the navigation bar.

Bug: 27157904
Change-Id: I088e02eae2e723c35e9cb4873de6b1325458533b
/frameworks/base/core/java/android/view/ViewRootImpl.java
d9b1607bd92153a2d3ed01437d603f695cf7dcb6 23-Feb-2016 John Reck <jreck@google.com> destroyHardwareResources in onStop()

Bug: 27286867

This hopefully makes everything fully-deterministic. It should
also fix some old annoyances around Bitmap lifecycle as they will
be released earlier in onStop() instead of waiting for
dispatchDetachedFromWindow() which may never happen.

Change-Id: I6e871760650780e327c0e42f62950c1052dd8019
/frameworks/base/core/java/android/view/ViewRootImpl.java
90776de6bbcd7dd40cb2690d4441fbafe29747d9 22-Jan-2016 Joe LaPenna <jlapenna@google.com> Allow button events in ambient.

See thread: "key presses & Ambient"

Bluetooth media button presses and Stem buttons were being rejected in ambient. This change allows those keys while disabling touch events while in ambient.

BUG: 25964771
BUG: 26524301

Change-Id: I914edd447c38678a06d27677be4597c0ee384635
(cherry picked from commit 7528f57c4ddbde1c6d0a2a352bd8a1af43711013)
/frameworks/base/core/java/android/view/ViewRootImpl.java
527905e195e28df970b63b2e4a9dcdc0464e547c 17-Feb-2016 Vladislav Kaznacheev <kaznacheev@google.com> Do not call IWindowSession.updatePointer icon from pointer handler

Currently if View.setPointerIcon is called from inside a pointer
event handler this will cause a redundant round-trip to the server
which can be easily avoided.

Bug: 27107871
Change-Id: Ia641818c3700c0d96d0c32e020b91af58dccfa2a
/frameworks/base/core/java/android/view/ViewRootImpl.java
c662d8e94620c84b2fa57bfd6e45690f0c349d89 06-Feb-2016 Jorim Jaggi <jjaggi@google.com> Make sure we call reportResized exactly once when drag starting

If there was another layout happening before the app called
relayoutWindow(), we were issuing multiple reportResized calls,
leading to multiple relayoutWindow() calls, slowing everything
down.

Change-Id: I1f3da04bb7581c655567e1d1a6fe0f8c83c0ffda
/frameworks/base/core/java/android/view/ViewRootImpl.java
9511b0f1e9ac629a4a747a0c9373d33ab33cfc32 30-Jan-2016 Jorim Jaggi <jjaggi@google.com> Fix bug where surface was not clipped off during resizing

When dragging the divider in a way such the task size goes through
the following transition

- Half size
- Full screen
- Half size

the surface wasn't clipped off anymore. This was because in full
screen configuration, computeDragResizing() == false thus when
going full screen -> half size, we reset the draw state to
DRAW_PENDING to get notified when it has finished drawn. However,
this also broke clipping.

In order to fix this, we always put the window into a resizing mode
no matter whether the bounds are fullscreen or not.

However, this introduces an ugly flickering on the navigation bar,
when going into docked mode, because the app doesn't draw navigation
bar background in resize mode.

To fix that, we calculate the presence of navigation bar whether the
window is fullscreen, and not just whether it's resizing. For that,
we need to calculate the presence in BackdropFrameRenderer, by using
the insets just sent by window manager.

Change-Id: Idf56df4ae7fefe67d068bc2eeda8dc4d83bbefb7
/frameworks/base/core/java/android/view/ViewRootImpl.java
f648108f83d4e74811919e9811efb8fcc184b8a3 03-Feb-2016 John Reck <jreck@google.com> Have RT drive window positioning

Bug: 22802885

Change-Id: I6beed5474d3a943b16e9097f7bd61ce3cbd37505
/frameworks/base/core/java/android/view/ViewRootImpl.java
a4a58efe8203d63a9a6bf78b0fa9f2992b25871b 27-Jan-2016 Jorim Jaggi <jjaggi@google.com> Fix app staying in drag resizing when undocking

When dismissing the docked stack, the fullscreen stack stayed in drag
resize mode because it got a relayout, but because the bounds didn't
change (it switches to the fullscreen layout a bit earlier) it never
called WM.relayoutWindow, so it stayed in drag resize mode indefinitely.

To fix this, introduce forceRelayout in Window.resized(), which makes
sure the client always calls relayoutWindow. Set this to true whenever
drag resizing is changing.

For some very weird reason this also broke that home button was not
responding anymore.

Bug: 26806532
Change-Id: I4b39c1c419a166aa7093c31226f2a4915f642328
/frameworks/base/core/java/android/view/ViewRootImpl.java
3127c2a471dbefda916701d9b3837ce109ea7d49 27-Jan-2016 Jorim Jaggi <jjaggi@google.com> Start drawing immediately

We used to have a condition to start drawing only in the second traversal,
which added a delay of about 10-15ms. We believe that we don't need this
anymore, because we have other means of synchronizing the app transition
animation with the app drawing - we wait for all surfaces to be drawn
in window manager.

Bug: 21035872
Change-Id: I5094a1377817dc7e0a2392cc8f522e99cd7b4d6e
/frameworks/base/core/java/android/view/ViewRootImpl.java
c3bc45ec042dead6e9a7191a5d25ae2867acde25 26-Jan-2016 Yigit Boyar <yboyar@google.com> Merge "Fix requestRectangleOnScreen"
92b26c5bffd92a8e2251f60a6663e9eba4d5aa2d 25-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Restore correct mouse pointer after drag and drop"
d62d5e9accc76952d737f9c58a97f898807713e5 20-Jan-2016 Yigit Boyar <yboyar@google.com> Fix requestRectangleOnScreen

This CL fixes a bug in View#requestRectangleOnScreen where the
position was not being moved from child's coordinate space to
the parent's coordinate space properly.

I've also added more documentation to clarify the API.

Bug: 25787435
Change-Id: Id821fa178e04016f6fb830d0bd2abde046581465
/frameworks/base/core/java/android/view/ViewRootImpl.java
ec6a447c86b03f5896fdb717de530c8abf8887f9 22-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Restore correct mouse pointer after drag and drop

This CL introduces IWindow.updatePointerIcon method.
When the drag is complete, this method is called on the window
directly under the pointer.

Same method can be used in the future to update mouse pointer
when a window appears or disappears.

Bug: 24415739
Change-Id: Ia7b0522448cb3cd754da5e24696060d3b3bf2e50
/frameworks/base/core/java/android/view/ViewRootImpl.java
c8680438c0481b9c1e2b0bc856f900057ea14ba2 23-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Change mouse pointer when drag and drop is active"
ba761124e624ffed2681a9e171cd3f7d8c6ed59e 22-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Change mouse pointer when drag and drop is active

Mouse pointer is set to STYLE_GRAB when the drag has started and
reset to STYLE_DEFAULT when the drag has ended.

Resetting the pointer shape to the one defined by an underlying
view will be handled in a separate patch.

Bug: 24415739
Change-Id: I8df0a08c5701a34a48f10ec6b43c2cf2e6362d61
/frameworks/base/core/java/android/view/ViewRootImpl.java
6c09ff556014052bb1b4047f59d4ebba21d4a8c3 21-Jan-2016 Matt Wu <mattwu@google.com> Merge "Set WindowSession's touchmode when in local focus mode,"
1937a4c68a586e75501a90253c90b213a4d6167f 20-Jan-2016 Filip Gruszczynski <gruszczy@google.com> Update width available for dialogs on all configuration changes.

Bug: 26504275
Change-Id: I7a0399e4af77ab02df8b3dff68adcf37b36d7ca7
/frameworks/base/core/java/android/view/ViewRootImpl.java
2e95a488e0a12d4263d101e888fdd89fd123aec3 15-Jan-2016 Jorim Jaggi <jjaggi@google.com> More optimization while dragging docked divider

- Make sure mPendingBackdropFrame gets also set when if the window
triggers a relayout on it's own, so it doesn't call into window manager
all the time.
- Set the insets of the docked divider to empty so we don't trigger a
layout when we are just moving it - it doesn't need it in any case.
- Send a window move message to the divider when it moved
- Update attach info in all move cases, update light center

The whole resize operation now only takes around 4ms per frame, and
leaves a lot more resources for the apps to do configuration changes.

Bug: 25015474
Change-Id: Ica48129570a0fc858a89c21f46abf3442efb0224
/frameworks/base/core/java/android/view/ViewRootImpl.java
844e1712df100e0a357d7f86b10cb78e6593b9fb 14-Jan-2016 Jorim Jaggi <jjaggi@google.com> Don't relayout when windows move during resize

Not needed and just increases system load.

Bug: 25015474
Change-Id: Iaf871389527237b5cbc88c03b2f060629b6351dc
/frameworks/base/core/java/android/view/ViewRootImpl.java
4846ee3cc378001128680f2a3309c7e60bfcac75 07-Jan-2016 Jorim Jaggi <jjaggi@google.com> Optimize window relayouts when dragging divider

- Communicate the resize mode to ViewRootImpl. If it is a docked
divider resize, do not call relayout for every traversal.
- Do not call Task.resizeWindows() unconditionally when changing
Stack bounds. It might be just a move.
- However, not calling relayout breaks layout bounds while
relaunching. To fix that, do the following:
-- Inform ViewRootImpl that the activity just relaunched, and force
a relayout call in the next traversal so the client can pick up
the unfrozen bounds.
-- When unfreezing the bounds, cause a traversal in window manager.

Bug: 25015474
Change-Id: Iab9a445dabce4f6ec1e25957038fe40a4be65246
/frameworks/base/core/java/android/view/ViewRootImpl.java
f6525ceebcc8839c5158104f5f7e242a9a134a42 15-Jan-2016 Chong Zhang <chz@google.com> Fix missing dialog windows

Use the size in the configuration (not the display size) to set the
dialog size.

bug: 26490549
Change-Id: I8e17482ddcc39fae1d6fd7b0a8e1954b21dac5c8
/frameworks/base/core/java/android/view/ViewRootImpl.java
d6bc96dbc71d2657815deb2cd44780da99ea3f1f 14-Jan-2016 Matt Wu <mattwu@google.com> Set WindowSession's touchmode when in local focus mode,

since relayout window can query window manager for isInTouchMode().
Bug:24848552

Change-Id: Icda267d617c09dfd2b22af4019b8313181c4c661
/frameworks/base/core/java/android/view/ViewRootImpl.java
75e097965cc273d33192555b0e65de3dbc1753ce 29-Jul-2015 Clara Bayarri <clarabayarri@google.com> Request Keyboard Shortcuts for SysUI Dialog via Window

Keyboard shortcuts are requested via WindowManager, and
the request pipes through to the view root and the window
callback.

Bug: 22405482
Change-Id: Ic0071e91c7b554be3ac9df71e9539ee8a60e822e
/frameworks/base/core/java/android/view/ViewRootImpl.java
8c1ee9d8f5607b236b1ca0764206279ba47d843b 12-Jan-2016 Filip Gruszczynski <gruszczy@google.com> Use full display size for calculating volume dialog size.

Bug: 26485500
Change-Id: I25ef29a3d611617b4dc59a315b072fafb3f3f825
/frameworks/base/core/java/android/view/ViewRootImpl.java
34dab0b3d9d461d441f9c63a39565c8734620cd3 22-Dec-2015 Filip Gruszczynski <gruszczy@google.com> Use activity dimensions instead of display to calculate dialog size.

This adjusts the code for measuring and laying out dialog windows, which
used display dimensions as a basis for calculating the dialog
dimensions. Because of this dialogs would be too large in multi window
mode, where the parent bounds are far smaller than full display. This
switches to using dimensions for configuration received from activity
manager.

Mind, this is still not working as needed, because the resources return
minimal size of the dialog as if it was displayed on a full display,
rather than within activity bounds.

The CL also introduces better logging tags in ViewRootImpl and
DecorView. These normal approach works reasonably well when there is a
single activity on the display. However, when multiple windows are
displayed, it becomes impossible to determine which view root/decor view
logged what. This adds a suffix, that allows to identify the owner.

Bug: 26251921

Change-Id: I515a1ff9a81ee5ad086773196db71915e88a25eb
/frameworks/base/core/java/android/view/ViewRootImpl.java
0fe356e83ed3e92f0227313313fb5df2cf8503d7 05-Jan-2016 Jorim Jaggi <jjaggi@google.com> Fix unnecessary relayouts

Make sure mPendingBackDropFrame is always up-to-date.

Bug: 26396351
Change-Id: Icb61f3581ee75e94d45fc0f8ae0895535bb130ea
/frameworks/base/core/java/android/view/ViewRootImpl.java
56cd51a70411d60fac0b3987f5c5543e6a3ea8ef 19-Dec-2015 Jun Mukai <mukai@google.com> Merge "Introduce pointer capture API."
db3631f8c116629d01d411188c754a3985b2c222 18-Dec-2015 Daniel Koulomzin <dkoulomzin@google.com> Merge "Making ViewRootImpl drop input events when the Activity is in ambient mode." into cw-e-dev am: cbef517d02 am: 898e330aae am: 94794af6be
am: 3f66df086a

* commit '3f66df086a210bc0dec7a0bd86081f6f79b3a712':
Making ViewRootImpl drop input events when the Activity is in ambient mode.
3f66df086a210bc0dec7a0bd86081f6f79b3a712 18-Dec-2015 Daniel Koulomzin <dkoulomzin@google.com> Merge "Making ViewRootImpl drop input events when the Activity is in ambient mode." into cw-e-dev am: cbef517d02 am: 898e330aae
am: 94794af6be

* commit '94794af6bee35c249857f0440c361d589b77aa5d':
Making ViewRootImpl drop input events when the Activity is in ambient mode.
347e5d498f4c216d588e98776a386d8bdf93d05c 03-Dec-2015 Jun Mukai <mukai@google.com> Introduce pointer capture API.

This depends on I4189eb4d93f50c2865b7a325727be5ceebcc71f8 of
frameworks/native.

Bug: 5452473
Change-Id: Ie21e521f3e5c581f976dc0feb5d84bfa48b046cd
/frameworks/base/core/java/android/view/ViewRootImpl.java
087ae471c209cd93a29791054e50afffcbe6ffd2 16-Dec-2015 Daniel Koulomzin <dkoulomzin@google.com> Making ViewRootImpl drop input events when the Activity is in ambient
mode.

WearableActivityController tells ViewRootImpl about ambient mode.

Bug: 25912259
Bug: 25973146
Bug: 25714113
Change-Id: Idcca2b254db3145039f50f2a7dfd38a224ec287e
/frameworks/base/core/java/android/view/ViewRootImpl.java
d4eaef7f4c5a5d281de4fff272cd33e892e26264 30-Oct-2015 Jun Mukai <mukai@google.com> Make public pointer icon API with custom icons.

BUG: 25778347, 23804184
Change-Id: If138b97c750c912e9848412c27b65004899961eb
/frameworks/base/core/java/android/view/ViewRootImpl.java
4610eeff9c6c4789705b6550a57333150d39e970 03-Dec-2015 Chet Haase <chet@google.com> Revert "Add support for partial view layouts"

This reverts commit c55d5072ac52cee1811b52406419228fa81119ce.

There were several bugs related to incorrect handling of various
layout issues (layout not being run on containers/views that needed
it), reverting to take another run at it outside of master.

Issue #25980198 requestLayout() sometimes doesn't result in measure/layout for view

Change-Id: Ic0e159cbcf6171652d8fd1bee9ae44a3977cea04
/frameworks/base/core/java/android/view/ViewRootImpl.java
51aaf906f9f5fb2f117f5ccfae8be6974f7cb903 03-Dec-2015 John Reck <jreck@google.com> Nuke HardwareRenderer abstract base

Bug: 17303292

Change-Id: I4a272ea4f695f4f9993e8be640fdd8530b691be0
/frameworks/base/core/java/android/view/ViewRootImpl.java
ca98419f77400ba99527b7910550dd3a47b43ef2 25-Nov-2015 Alan Viverette <alanv@google.com> Avoid concurrent modification for pending partial layout views

Bug: 25871867
Change-Id: I696a441704bad65203633bd34dafc7a56162007a
/frameworks/base/core/java/android/view/ViewRootImpl.java
4f639749639393791caa69a35630611b695ba255 18-Nov-2015 Vladislav Kaznacheev <kaznacheev@google.com> Implement View.updateDragShadow

The new method allows changing the drag shadow image
while the drag is in process.

It has to be called on a View in the same window (under the
same ViewRootImpl) that the view which started the drag.

Bug: 25520420
Change-Id: I57e752626a4a6a86d42c597c09dbd7ec77f42f30
/frameworks/base/core/java/android/view/ViewRootImpl.java
82063913ae6d3b158cb0c599141e473b691363a8 20-Nov-2015 Vladislav Kaznacheev <kaznacheev@google.com> Implement View.cancelDragAndDrop

View.cancelDragAndDrop cancels a drag operation initiated by
View.startDragAndDrop.

It has to be called on a View in the same window (under the
same ViewRootImpl) that the view which started the drag.

Bug: 24415683
Change-Id: If9a265fd8cc4d26b207d582d0d02d5c9ae78eba1
/frameworks/base/core/java/android/view/ViewRootImpl.java
87ab07e9a78c8af4d806a8b35f6d5cdf9e44b47f 19-Nov-2015 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Revert "Implement View.cancelDrag""
54d6b95e86e9b248dd313ab72f4db6a681480d1e 19-Nov-2015 Vladislav Kaznacheev <kaznacheev@google.com> Revert "Implement View.cancelDrag"

This reverts commit 93cf731b26e2ab4db49bd80f60675b03e40512f3.

This is required because adding View.cancelDrag conflicts with existing app code.

Change-Id: I323fc5d2144266781d3168fe033c53cb5b37050e
/frameworks/base/core/java/android/view/ViewRootImpl.java
c55d5072ac52cee1811b52406419228fa81119ce 19-Dec-2014 Adam Powell <adamp@google.com> Add support for partial view layouts

Traditionally, when a view called requestLayout it would force
recursive requestLayout calls for all parent views up the
hierarchy. This meant that there was no way to determine at traversal
time whether a parent view itself needed layout, or if just one of its
descendants did.

Add a ViewParent method requestPartialLayoutForChild(View). This lets
a caller state that a particular child of a given parent needs a
remeasure and relayout at its current measured size and position
within that parent. This can help prevent the full-tree relayout often
caused by otherwise trivial changes. Partial layouts are processed
after any pending "full" relayout during ViewRoot traversals, but
before drawing.

Add a ViewGroup method requestLayoutForChild(View). This lets a
ViewGroup decide whether it is more appropriate to request a
traditional relayout or a partial layout for itself or just the child
that changed.

Add a ViewParent method findDependentLayoutAxes. This allows a caller
to check if the ViewParent's layout is dependent on a specific direct
child view along one or both axes. Called recursively, this can be
used to determine if a change in a child view can be isolated to a
partial layout, even if its direct parent's own layout is tied to its
other ancestors. (e.g. MATCH_PARENT, LinearLayout weights)

Implement ViewGroup#requestPartialLayoutForChild to call new
ViewParent method findDependentLayoutAxes and based on the result,
either request a full layout for itself or a partial layout for the
child in question.

Implement findDependentLayoutAxes for common framework ViewGroups. A
private implementation in ViewGroup is available for use by framework
classes that will deal with basic LayoutParams. These implementations
specifically check for derived LayoutParams classes and abort the
optimization if they find something beyond their expected parameter
types.

Change-Id: I0a1a9b79293d17d4fae8d9892b96d3586f9401ae
/frameworks/base/core/java/android/view/ViewRootImpl.java
93cf731b26e2ab4db49bd80f60675b03e40512f3 06-Nov-2015 Vladislav Kaznacheev <kaznacheev@google.com> Implement View.cancelDrag

View.cancelDrag cancels a drag operation initiated by
View.startDrag.

It has to be called on a View in the same window (under the
same ViewRootImpl) that the view which started the drag.

Bug: 24415683
Change-Id: Iae5ff3534b6c747ae174f170fdd01ff4d3b1c312
/frameworks/base/core/java/android/view/ViewRootImpl.java
1a4dfe593aafda057ac9cb3086b84588d88cd09f 15-Nov-2015 Filip Gruszczynski <gruszczy@google.com> Synchronize recents to freeform transition.

Recents to freeform animation must hang on the first frame and inform
Recents to hide its views. This mirrors the transition from freeform
to Recents, where the animation needs to hang on the last frame.

We need a special window flag for recents to force a redraw after the
animation launches. At this point Recents will become not visible
from the perspective of the activity manager, which would prevent
further drawing. We make recents ignore that and instead depend on
window visibility which will change after recents exit animation
finishes.

Bug: 24913782
Change-Id: Ief743b7e6fcebb3d8789d4745fb122ac607c1cf0
/frameworks/base/core/java/android/view/ViewRootImpl.java
f4abc2b701c23978e8bd5e4fc3e183e519aede4a 13-Nov-2015 Chong Zhang <chz@google.com> Need to updateSurface if surface size was changed in relayoutWindow

On some chips, SurfaceControl.setSize will not take effect for several
frames. We have to also do a updateSurface/invalidate (which destroys
and creates the EGLSurface) to get the size right.

Keep track of SurfaceControl size changes in window manager, and pass
that to ViewRootImpl, so that a updateSurface is done either the surface
itself or its size is changed.

Note that we don't use frame size change to trigger updateSurface, because
frame size could be different from the surface size that window manager set.
For example during drag resizing, the surface size is fullscreen although
frame size changes constantly. Doing updateSurface upon frame size change
could cause us to do many unnecessary updateSurface.

bug: 25583942

Change-Id: I1989613a187bb6ef1c179bd2800c6a7b01fcdb3a
/frameworks/base/core/java/android/view/ViewRootImpl.java
8c0886fe2e7dc97d8c3173053e773afadab1ebf3 12-Nov-2015 Wale Ogunwale <ogunwale@google.com> Merge "Avoid configuration of callback being reset after relayout." am: cbcafde45e am: 0170fb8281
am: f98a6f4101

* commit 'f98a6f41019bf41d57d0681c2e1d6859f8704091':
Avoid configuration of callback being reset after relayout.
164725c652d56e3ab04185dba6a06df351f721b8 12-Nov-2015 riddle_hsu <riddle_hsu@htc.com> Avoid configuration of callback being reset after relayout.

mPendingConfiguration is a parameter of IWindowSession.relayout.
And IWindowSession.aidl declared "out Configuration outConfig",
it will always create a new configuration for remote side to write.
If remote side does not write (WMS does not have config change),
the new default configuration will be returned.

In original code passes mPendingConfiguration to updateConfiguration
directly, then callbacks (sConfigCallbacks) receive the same
instance of mPendingConfiguration. And because the implementation
of callback may use the configuration after relayout has reset
the configuration to default, then it may have timing that results
"showing hybrid of portrait and landscape modes" which try to fix
in commit e36d6e27.

To avoid this, always create a copy to updateConfiguration.
MSG_RESIZED_REPORT from dispatchResized also did the same thing.

Related commit:
e36d6e277e49475076b7872d36ea6a5c5b996e9d
694f79b5d1196640d1beb680b7d1fc68e6e77cbd

Change-Id: Ic1abd596e384918224b3a7020583d9a04641cccc
/frameworks/base/core/java/android/view/ViewRootImpl.java
d153c4f6f014ea37212cf268d9de8b6abb7240fe 07-Nov-2015 Chong Zhang <chz@google.com> Fix flicker when releasing drag of divider

bug: 25564523
Change-Id: I9c19f40f27cc80b8e6e0e98a0d6455941bd624e7
/frameworks/base/core/java/android/view/ViewRootImpl.java
a7262a8956ae06cb83e26b6b81f4a1ff6f40907e 03-Nov-2015 Jorim Jaggi <jjaggi@google.com> Immediately start resizing when touching docked divider

Before, the surface was made full-screen only after
a certain amount of time. Now, immediately make the surface
full-screen, as soon as the divider is touched, to make
resizing much snappier.

Bug: 24507122
Change-Id: I9425785fca4e62964a959a432c80a81d346602c5
/frameworks/base/core/java/android/view/ViewRootImpl.java
253a20fad8703e21c7298fe66e0f3f53d4e63c14 03-Nov-2015 Jorim Jaggi <jjaggi@google.com> Fix black holes and flickering in docked resizing

When we start a resize with the docked stack divider,
set the surface background to be full-screen, and use
the traditional surface clipping/positioning in window
manager to adjust the size. This ensures that we don't
have any black holes because of asynchronicity (except
at the very beginning, but this can be worked around
later), and the position of the right/bottom activity
is always in sync with the position of the divider.

Also fix a bug in NonClientDecorView where the first
request to draw was dropped (because the thread hasn't
started up yet), and the main thread was waiting for it
indefinitily.

Bug: 24507122
Change-Id: I623bd48d5be64fac2fba45241b84f265944d200d
/frameworks/base/core/java/android/view/ViewRootImpl.java
64e516f5fa56d71bf6b5076e5620c30dc5810ba1 29-Oct-2015 Rob Carr <racarr@google.com> Sync SurfaceView position changes to parent render.

In order to provide pixel perfect movement of SurfaceViews
'within' other views (e.g. scrolling) we need to be able to
synchronize the attached (parent window) painting with the
movement of the SurfaceView (recall, SurfaceViews are positioned
behind their attached windows and the parent must render a
transparent region for the SurfaceView to appear). Provide
a new WindowManager method to reposition an attaching window
(that is to say, a window which has an attached window like
SurfaceView) and defer the transaction until the parent frame.
SurfaceView is hooked up to use this for movement. This is still
'racy' in the hardware accelerated case as the render thread
could be on either side of dequeing the frame we are working on.

Bug: 22802885
Change-Id: I025d2bdcbe15c1c11047cc0dbca2cf2b7d67c632
/frameworks/base/core/java/android/view/ViewRootImpl.java
9a4450ba6c5f3fd35817685dd8b08065b08c852e 27-Oct-2015 Keisuke Kuroyanagi <ksk@google.com> Add null check for MotionEvent#getDevice.

MotionEvent#getDevice can return null when the device is
unknown.

Change-Id: I902a96300307e3b2d3b324a2998e470254388e27
/frameworks/base/core/java/android/view/ViewRootImpl.java
76c4a129250f7515fdbe9b25182e11b40dbf416a 20-Oct-2015 Jun Mukai <mukai@google.com> Do not update pointer icon shape for HOVER_EXIT event.

EXIT event does not have to udpate the pointer icon shape, because
when it immediately moves to another window, its HOVER_ENTER will
handle the icon shape.

Also HOVER_EXIT can happen after the HOVER_ENTER of the new window,
and in that case updating pointer icon at HOVER_EXIT will overwrite
the pointer icon for the new window.

Bug: 24415739
Change-Id: I08fc72cc69bbc3a6eef36d501d93e8e9ad36df85
/frameworks/base/core/java/android/view/ViewRootImpl.java
41aab00c3e762c6b648483ee7b45b162e4da7f7f 02-Oct-2015 Jun Mukai <mukai@google.com> Allow changing mouse cursor for the edges of resizable window.

Bug: 23193951
Change-Id: I38662a61ff829e5b441e1c8b9f472eb0d75904e4
/frameworks/base/core/java/android/view/ViewRootImpl.java
1db5397d88e722b1ab82ccb2b429ceec1179ccd8 12-Sep-2015 Jun Mukai <mukai@google.com> Allow changing mouse pointer icon for the current context.

Right now, it only supports I-beam on EditText, but further
rules will come in the future.

The png files for the icons are from chromium.

Bug: 24180385
Change-Id: I8de4ec8a5412b4830c08aa232c5083841c5c751c
/frameworks/base/core/java/android/view/ViewRootImpl.java
8dbd9ad68248a921637c4b2b866e86854b5860f6 09-Oct-2015 Chong Zhang <chz@google.com> Fix missing frame or wrong frame position when resize starts

When multi-thread renderer is used, delay the report to draw to the
first doFrame in ResizeFrameThread. Otherwise we could unfreeze the
window before the frame is drawn.

Also when content draw bounds is updated for the first frame, let
content draw before ResizeFrameThread so that the bounds get applied.

bug: 24715185

Change-Id: I5485dc0be3eae24c555bcc31ee8f71523b68ca8d
/frameworks/base/core/java/android/view/ViewRootImpl.java
980ee47ffe675af566da2a48b855591f26fed3e0 06-Oct-2015 Skuhne <skuhne@google.com> Resolving incorrect rendering of content while resize

The staged content bounds need to be set by the content renderer
and not by the resize thread.

Bug: 24671393
Change-Id: I8f84ec01a4ac6c1e783cc6208ca77ca6c01ba838
/frameworks/base/core/java/android/view/ViewRootImpl.java
a42521ca0a537823311cec67f3c70cb546ae71db 06-Oct-2015 Chong Zhang <chz@google.com> Merge "Make window callbacks non static member of ViewRootImpl"
dcee1dea6bc7c5265cb4d2778bcb18724d68bfbe 06-Oct-2015 Chong Zhang <chz@google.com> Make window callbacks non static member of ViewRootImpl

Move add/removeWindowCallbacks to onAttachedToWindow/onDetachedFromWindow.

There might be more than one windows in an app process, the window
callbacks need to be per window, not global.

bug: 24679461
Change-Id: I216ff27b2a41ecfe7399a8161df362bebc0ac96a
/frameworks/base/core/java/android/view/ViewRootImpl.java
9c450411058ab9af71932c756fb0f478b3988f1b 01-Oct-2015 Chet Haase <chet@google.com> Enable activity rendering during window animations

A change was made back in ICS that prevents the view hierarchy from rendering
during window animations. Specifically, it allows the hierarchy to render once (to draw
the results of its first layout), but further drawing is suppressed at the
ViewRoot/performTraversals level until the window animation is complete.

This change was introduced to avoid jank problems that were resulting from
thrashing the GPU by issuing drawing commands from multiple processes simultaneously,
and limited the number of rendering processes to mainly the system server (and
possibly the System UI), which allowed window animations to be much smoother.

This fix contributed to another source of jank, however, in which applications
which attempt to animate when they first appear will not render any frames of
animations until the window animation is done, resulting is a snapping to the resulting
state once the window animations are complete.

Meanwhile, hardware has gotten faster and GPUs have gotten better, and it is time to
revisit this logic. This change disables the earlier fix and allows view hierarchies
to draw normally, regardless of whether window animations are taking place.

Issue #22232939 Remove flag that prevents drawing during window animations

Change-Id: I4c960180771ff09a7088abd77b437586e835a991
/frameworks/base/core/java/android/view/ViewRootImpl.java
b816087962aba0019b022303330f03b897b580ed 22-Sep-2015 Skuhne <skuhne@google.com> Rendering the window frame with a second thread

Using a multi threaded render node to render the window frame
asynchronously from the application relayout.

Bug: 22527834
Bug: 24400680
Bug: 24459827
Bug: 24409773
Bug: 24537510
Change-Id: I1010fc6a8b6e38424178140afa3ca124433ab7e4
/frameworks/base/core/java/android/view/ViewRootImpl.java
ed3912692f0ba8a647d795462e20fcdb67adbacb 01-Sep-2015 Oren Blasberg <orenb@google.com> Make context menus show as popup menus.

This means that right-clicking/long pressing on a view that is registered for
context menu will show the context menu as a popup menu instead.

Bug: 20016398
Change-Id: I96fea60435fff2f981d288521f490f8ff24ada15
/frameworks/base/core/java/android/view/ViewRootImpl.java
23d62fd37dc22247ef1b55c5b9bc58d1c307081a 21-Sep-2015 Chong Zhang <chz@google.com> Do not do setSurface on window size changes

Surface should only be invalidated when surface generation changed
(which we're already doing). Window size change doesn't always imply
a surface change. During a drag-resizing action, the window size is
constantly changing but the surface remains the same. setSurface
could take 12ms+ each frame and cause frame drops.

bug: 23793966

Change-Id: Iac0456122e8916cf06b1a7a0940584ab4bf4065d
/frameworks/base/core/java/android/view/ViewRootImpl.java
64bf97ad0ab52932055c007e9c15e2c2d946bcc7 18-Sep-2015 Alan Viverette <alanv@google.com> Send WINDOW_STATE_CHANGE when window becomes visible or gains focus

Previously we would only send STATE_CHANGE events when the window was
added and then received input focus.

Bug: 23974711
Change-Id: Ic25ed64e024f69818c34574d7f57413699088d99
/frameworks/base/core/java/android/view/ViewRootImpl.java
0275e397f482a1f25745a66c5db68c3a6c863951 17-Sep-2015 Chong Zhang <chz@google.com> Place surface at screen't top-left when doing drag resizing

Instead of letting the client render to (0,0) and moving the surface
around, put the surface at a fixed location, and let the client render
to the screen position within the surface.

This fixes the window shaking problem when resizing by dragging window's
top-left corner. The frame rect used in last draw is lagging window
manager's latest bounds for the window, moving the surface's position
would make the window's bottom-right corner appears moving (while it's
supposed to be stationary).

bug: 23793966

Change-Id: Ideb152fc48502f8e9672235f10b044889235e7df
/frameworks/base/core/java/android/view/ViewRootImpl.java
73f6d605436280be1f5900e887c56df2756dde9f 14-Sep-2015 Alan Viverette <alanv@google.com> Include window type in relevant BadTokenExceptions

Bug: 23980921
Change-Id: Idb0f2d1fd0fd0c8525c6566c538c4cc6b5bb148b
/frameworks/base/core/java/android/view/ViewRootImpl.java
bea0c7daa6611d8b96e1271f8854f500a87342fc 01-Sep-2015 Alan Viverette <alanv@google.com> Keep local run queue in View to avoid posting to wrong thread

Previously any call to post() while a view was detached would stash the
runnable on a thread-local RunQueue. If the post() call happened off the
UI thread to which the view would later be attached, this would result
in the runnable either failing to run or running on some other UI thread.

Bug: 22828132
Change-Id: I5289ee91ea4b56c45f003a387a9f7f0e6dc050f9
/frameworks/base/core/java/android/view/ViewRootImpl.java
762320e7d1605372b8f662a69b04d06b93ee86f4 28-Aug-2015 Jorim Jaggi <jjaggi@google.com> am f757bed7: am 7b933895: am e3238e53: am b774e554: Optimize fp touch to wake: Shortcut for report next draw

* commit 'f757bed7f7fa72528ab2d7225139d9d6f3b1021a':
Optimize fp touch to wake: Shortcut for report next draw
b774e554f32fd65cac30b43d1cf679403ef4af82 24-Aug-2015 Jorim Jaggi <jjaggi@google.com> Optimize fp touch to wake: Shortcut for report next draw

When telling window manager that Keyguard window is in the correct
state for a fp-touch-to-wake sequence, it takes more than 1 frame at
the moment because the signal that WM is waiting for the next draw
is delayed by one frame because it is posted at the end of the
runnable queue.

To correctly fix this, we should post it at the beginning at the
queue, but this is way too risky this late. Instead, add a isolated
SysUI hack to report it faster.

Bug: 23401557
Change-Id: Icf64101e27611c7c01d108123021b22186f1e70c
/frameworks/base/core/java/android/view/ViewRootImpl.java
e248bd1b2c3fcf8088429507e73b31f45ee2544b 05-Aug-2015 John Reck <jreck@google.com> Serializing display lists

This is a WIP prototype

Change-Id: Id4bfcf2b7bf905221c3734b7b6887c9b2efd37e6
/frameworks/base/core/java/android/view/ViewRootImpl.java
932cc254161c8001244f3f01728faab71c0dfba9 04-Aug-2015 Yohei Yukawa <yukawa@google.com> am 94381db0: am f4b8c343: am 9aebdb4c: am d7d14033: am 2d34a8b7: Merge "Revert "Do not forceLayout when window is resized"" into mnc-dev

* commit '94381db0dd29bcb7d6bf1f266644c7032b2bffcb':
Revert "Do not forceLayout when window is resized"
2d34a8b7181635c0ff0b1f2390d70e3ac6960f00 04-Aug-2015 Yohei Yukawa <yukawa@google.com> Merge "Revert "Do not forceLayout when window is resized"" into mnc-dev
f6f1a7ec9935c32e6c1155333de94ac9cd544442 01-Aug-2015 Dianne Hackborn <hackbod@google.com> am 628b4125: am bc2a8843: am b97c5ddd: am 9b36f526: am c1836bb0: Merge "Change MNC codename to just M." into mnc-dev

* commit '628b4125843b93dc7f3ed0c9bbea76ff470d2eed':
Change MNC codename to just M.
0e3de6cacaffcfeda4d6353be61e2f1f9ed80705 30-Jul-2015 Dianne Hackborn <hackbod@google.com> Change MNC codename to just M.

Change-Id: I4281d200ff6560791c47cf9073ceea1cb509361e
/frameworks/base/core/java/android/view/ViewRootImpl.java
d2e5647681fd09f6ceedd016a554148fe1f087c5 29-Jul-2015 Yohei Yukawa <yukawa@google.com> Revert "Do not forceLayout when window is resized"

This reverts commit I1e9ef807094b1e0afb32d13fd68b67c3957b15c3,
since it causes a layout jank in Voice IME.

Bug: 18573811
Bug: 22390291
Change-Id: Iaeb1e463d6f316df7bf214ac9439d4230dcac114
/frameworks/base/core/java/android/view/ViewRootImpl.java
d261e8360370f72e2272dcd0a6bd2c86460439a8 28-Jul-2015 Filip Gruszczynski <gruszczy@google.com> am 6a5791d1: am 95275dc7: am 5a8e31ef: am 3bb0bb3a: am f63800dd: Merge "Remove unnecessary relayout call from traversals." into mnc-dev

* commit '6a5791d163e9f8dab1efb3e2a713ee521c347b32':
Remove unnecessary relayout call from traversals.
9b621a72e2f74fecc1b9b6f8b8d766561e067843 27-Jul-2015 Filip Gruszczynski <gruszczy@google.com> Remove unnecessary relayout call from traversals.

All the necessary information (most importantly outsets) arrives in
addWindowToDisplay that is happening a few lines earlier.

Bug: 22073222
Change-Id: I483e98808877f32812c0e959cdfc14b4e0ca5e62
/frameworks/base/core/java/android/view/ViewRootImpl.java
8d94835b4901fb01804bee3a1be8d05dbf510f65 16-Jul-2015 Derek Sollenberger <djsollen@google.com> Remove unused HardwareLayer and associated code for generic views.

bug: 20461288
Change-Id: I4efa9e31a42682a8a90438d52c9c665a582f950c
/frameworks/base/core/java/android/view/ViewRootImpl.java
6ef57e974144e05e83ee1bd00f705f0f409f48b3 07-Jul-2015 Chris Craik <ccraik@google.com> Merge "Don't update DisplayLists when dumping" into mnc-dev
356b5fe0864b15365e2690605abee342989cbab0 07-Jul-2015 Chris Craik <ccraik@google.com> Don't update DisplayLists when dumping

bug:22234438

Updating the displaylist is invalid since this debug method isn't
called on the UI thread, and it defeats the purpose of seeing what
the hierarchy is currently rendering.

Change-Id: I10c5cc6dbae8d304559dfc6e863b0ede158d554f
/frameworks/base/core/java/android/view/ViewRootImpl.java
c5af4f8421926ea17cf51a9a53f91f5fec467588 02-Jul-2015 Jorim Jaggi <jjaggi@google.com> Don't prevent windows from drawing when they are just moving

Bug: 21292010
Change-Id: I0cf459d75e9749afa58a4b8649457b3908c8adeb
/frameworks/base/core/java/android/view/ViewRootImpl.java
2987f616faca534a792686a53304c9932634310c 01-Jul-2015 Filip Gruszczynski <gruszczy@google.com> resolved conflicts for merge of 300ccf4a to mnc-dev

Change-Id: Ia315e314bfde0c066a2c25d93f8cbdc71fee0a14
0ec1328f85a08a610868856c688ebb8196c79c17 25-Jun-2015 Filip Gruszczynski <gruszczy@google.com> Calculate outset hint when adding window.

Outsets aren't dynamic so they are a great candidate for a hint when the
window is added through the window manager. Thanks to this during first
view hierarchy measure or wallpaper window layout they are immediately
available and don't require multiple measure/layout passes.

Bug: 21593814
Change-Id: I573c15ffbbe4fcd8a6ed9c5e4fcd6cfbbcd7434f
/frameworks/base/core/java/android/view/ViewRootImpl.java
ece0f4f5198e9e9cb60e96f036baf22c73411bec 11-Jun-2015 Dianne Hackborn <hackbod@google.com> Fix APIs.

Issue #21039494: API Review: android.os.PowerManager.isDeviceIdleMode()
Issue #21347000: API Review: android.content.IntentFilter
Issue #20654534: API Review: android.app.assist

Also allow use of ActivityManager.setWatchHeapLimit on any platform
build as long as the calling app is debuggable.

Change-Id: Ic597e596fa772fcdf2553b64f444b3d9269e8b92
/frameworks/base/core/java/android/view/ViewRootImpl.java
e22c59b2913578c24e86673576d009d34306f6be 22-May-2015 Chris Craik <ccraik@google.com> Trace each stage of Choreographer driven frames

bug:21374535

Change-Id: I332dac216defbc4517441e2a9cdffdf71731f1e6
/frameworks/base/core/java/android/view/ViewRootImpl.java
99bcc3eee23ed8bd15bd108d068d6f9f694e4393 01-Jun-2015 Filip Gruszczynski <gruszczy@google.com> Merge "Revert "Revert "resolved conflicts for merge of 47249f2a to mnc-dev""" into mnc-dev
9607fbe9d70dd350e5f4a5f3862fa95816780c94 29-May-2015 Doris Liu <tianliu@google.com> Fix calls to Rect.intersect() in package android.view

This CL checks for the return value for Rect.intersect() for whether
there is actually an intersection before taking the return intersected
rect. In the case of no intersection (Rect.intersect() returns false),
an empty rect will be used as the intersection.

bug: 7368679
Change-Id: Ib874345210c8f62550627544d717e958d46cfe13
/frameworks/base/core/java/android/view/ViewRootImpl.java
2217f61e51ba4b19c56b19297c1e9cf74d7d860f 26-May-2015 Filip Gruszczynski <gruszczy@google.com> Revert "Revert "resolved conflicts for merge of 47249f2a to mnc-dev""

This includes the fix for the broken dialog windows. The outsets will
only be calculated and applied if the window is full screen, since
they don't make much sense otherwise.

This reverts commit 4bb6b751fbbb218e8a298db4aa008472a0aa8d31.

Change-Id: I977a85a78c990c1840784dc0be0dddd5a6d84e6b
/frameworks/base/core/java/android/view/ViewRootImpl.java
2232adddc56bb8764a95bbde0c05e0f02f6a1db5 27-May-2015 Alan Viverette <alanv@google.com> Offset accessibility focus rect for view root's scrollY

Previously we were only partially transforming the focus rect into
window coordinates, so it was offset when the window was panned (for
example, when the IME was showing).

Bug: 20113389
Change-Id: I41f5ed20cb1404232b7042d37ca2fc725f9ee476
/frameworks/base/core/java/android/view/ViewRootImpl.java
75a857cec5f3500954a76f251e81535378ba293a 26-May-2015 Alan Viverette <alanv@google.com> Merge "Handle error states when refreshing accessibility node" into mnc-dev
4bb6b751fbbb218e8a298db4aa008472a0aa8d31 23-May-2015 Dianne Hackborn <hackbod@google.com> Revert "resolved conflicts for merge of 47249f2a to mnc-dev"

This reverts commit c7becb7ee78881646251ff4846e63eb6b96bf7ec, reversing
changes made to 8562b08f04c1309cf40db1e749d612b6824f1d12.
/frameworks/base/core/java/android/view/ViewRootImpl.java
c7becb7ee78881646251ff4846e63eb6b96bf7ec 21-May-2015 Filip Gruszczynski <gruszczy@google.com> resolved conflicts for merge of 47249f2a to mnc-dev

This is a merge of chin support.

Change-Id: I436b751b3c4aaa6b46cfcdb475e02eedfa5a5635
3e11bf33a6094da92d97702213aa12c67b21c4d1 20-Apr-2015 Filip Gruszczynski <gruszczy@google.com> Support for devices with a chin.

Information about the chin is now part of the config.xml instead of the
theme. It is retrieved by WindowManagerService and passed to the clients
as insets. Clients can adjust their behavior in a way that makes it
invisible to the user, that part of the surface doesn't actually exist.

Bug: 19908853

Change-Id: Iedf57bf3c848201b854f91ffeb3b59187d375c1f
/frameworks/base/core/java/android/view/ViewRootImpl.java
97bf518f7b818d297a500204627d1ad06127bff1 20-May-2015 John Reck <jreck@google.com> Merge "Reduce wasted buffer allocations" into mnc-dev
63005e6e5b1ee6d32a217ce8b4d8f0d13987fc39 20-May-2015 John Reck <jreck@google.com> Reduce wasted buffer allocations

Bug: 20170924

Don't pre-allocate buffers if there is a SurfaceView or other
View that has requested transparent regions. This doesn't fully
address the problem of allocating buffers when there's a full
screen SurfaceView but it at least gets back to KitKat levels
of only having 1 wasted buffer instead of 3 (the 1 being
a result of the fact that it will still draw one frame of emptiness
forcing a buffer dequeue).

Change-Id: Ied9553186bc7b111d180b63f87b92bd317cb4b97
/frameworks/base/core/java/android/view/ViewRootImpl.java
25acc7e78c5d981da6565399df4fad7bced4de76 19-May-2015 Alan Viverette <alanv@google.com> Handle error states when refreshing accessibility node

Bug: 21281869
Change-Id: Idce90f5e23b102b9c66f288906eedb5b6a5b098d
/frameworks/base/core/java/android/view/ViewRootImpl.java
c2cc6fff1bac2afd73840b64976b146bdcd4435c 19-May-2015 Yohei Yukawa <yukawa@google.com> Merge "Keep IMM#mCurRootView synchronized with the actual window focus." into mnc-dev
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/core/java/android/view/ViewRootImpl.java
2a576d9ec1ec353ee2278f2da01e685b6b7b24ee 15-May-2015 Alan Viverette <alanv@google.com> Merge "Invalidate old accessibility bounds on CONTENT_CHANGE" into mnc-dev
2cc4a4755fcd41900e042c75cc47879d46acecda 15-May-2015 Alan Viverette <alanv@google.com> Merge "Adjust light source for window position" into mnc-dev
a7ea65e239581c84c3ae80f42f5a1827d48fc876 15-May-2015 Alan Viverette <alanv@google.com> Invalidate old accessibility bounds on CONTENT_CHANGE

Bug: 20950124
Change-Id: Id19924358b538f9b7754de3a0c019433817dc1fc
/frameworks/base/core/java/android/view/ViewRootImpl.java
5f05965f546fa42750f1a8314f8a2da01fd6bfb4 15-May-2015 Yohei Yukawa <yukawa@google.com> Keep IMM#mCurRootView synchronized with the actual window focus.

Currently IMM#mCurRootView is always cleared every time when
IMM#finishInputLocked() is called. We have been doing this since
Iad09cf5dbb7f6f156fd39ed243431432e00f8945 so as not to hold the
strong reference to a DecorView so long time (Bug 6413553).

Strictly speaking, the attached window may continue holding
input focus even after IMM#finishInputLocked() is called.
In this state IMM#focusIn() might have unexpectedly rejected
focus-in event but presumably this might not be obvious, or might
not occur at all because in some situations IMM#finishInputLocked()
has never been called even when the attached view loses input
focus.

In order to fix Issue 20820914, however, we need to call
IMM#finishInputLocked() exactly when the attached view loses
input focus. To make it easier to diagnose any unexpected
regressions, this CL only changes the handling of
IMM#mCurRootView, while the next CL Id6afc8fc64512225578c62557b96
plumbs IMM#focusOut() to IMM#finishInputLocked().

Manually tested following scenarios.
- Repro steps in Bug 6413553. Made sure that IMM#mCurRootView
is cleared after switching back from the current application to
the previous application with back key.
- Test application that calls WebView#showFindDialog(). Made sure
that LatinIME works fine when switching text fields. This is
non-trivial because android.webkit.FindActionModeCallback is
changed in this CL.
- Repro steps in Bug 21144633. Made sure that we can enter
recipient's name in the messaging app.

Bug: 20820914
Change-Id: I219394178e4172bc47864297f1418e677dba25e5
/frameworks/base/core/java/android/view/ViewRootImpl.java
50210d912925aef14e4ce69be82e4949122a3cd9 15-May-2015 Alan Viverette <alanv@google.com> Adjust light source for window position

Bug: 16523629
Change-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf
/frameworks/base/core/java/android/view/ViewRootImpl.java
159c3d8a8b99c9a7c9d7cb3013a622fdf2c6c04a 14-May-2015 Wale Ogunwale <ogunwale@google.com> Revert "Update IME focus when the active view is losing the focus."

This reverts commit 97c381304207013fd95c7806df4dcca0c69006c0.

This causes issue with the right IME window getting focus.

Bug: 21144633
Change-Id: I4c75b6e7dd87c10f008444d2059164b52a8f4335
/frameworks/base/core/java/android/view/ViewRootImpl.java
1b2e5c11b6a89d56d5058907c3b0c88bf0170857 14-May-2015 Michael Wright <michaelwr@google.com> Merge "Revert "Revert "Add new MotionEvent actions for button press and release.""" into mnc-dev
5bd69e6e6164c59a0423edd0d5243fc8c07e6af3 14-May-2015 Michael Wright <michaelwr@google.com> Revert "Revert "Add new MotionEvent actions for button press and release.""

This reverts commit 96238051621ba2dc8a1c20fa48a00ec6ec4735d6.
/frameworks/base/core/java/android/view/ViewRootImpl.java
3d5286983447262f12b78785391681b20a71f6b2 14-May-2015 Michael Wright <michaelwr@google.com> Merge "Revert "Add new MotionEvent actions for button press and release."" into mnc-dev
96238051621ba2dc8a1c20fa48a00ec6ec4735d6 14-May-2015 Michael Wright <michaelwr@google.com> Revert "Add new MotionEvent actions for button press and release."

This reverts commit ec0ce51b733f10c620cb9447b074f022d042e31d.
/frameworks/base/core/java/android/view/ViewRootImpl.java
07b83f1c9e8a7692a985aa2d13ac13fc5521aa4b 14-May-2015 Michael Wright <michaelwr@google.com> Merge "Add new MotionEvent actions for button press and release." into mnc-dev
ec0ce51b733f10c620cb9447b074f022d042e31d 08-May-2015 Michael Wright <michaelwr@google.com> Add new MotionEvent actions for button press and release.

Introduce ACTION_BUTTON_PRESS and ACTION_BUTTON_RELEASE as actions to
signal a button press or release. If these actions happen
simulanteously with a DOWN or UP event then they're explicitly
ordered to happen after the DOWN or preceding the UP in order to send
them to the most recently targeted view.

Also, introduce new stylus button constants that differ from the
constants we use for mouse buttons.

Bug: 20704355
Change-Id: I5b75e5c5e692171c1c117ee687dd185a0d9dd15c
/frameworks/base/core/java/android/view/ViewRootImpl.java
951f23478d79fb232e93a750d9050adce7a67874 14-May-2015 John Reck <jreck@google.com> am d955dceb: am 862540cd: Merge "Revert "DO NOT MERGE Backport of limited jank-tracking metrics"" into lmp-mr1-dev

* commit 'd955dceb4f38f214e62024e808b2b1a21be41940':
Revert "DO NOT MERGE Backport of limited jank-tracking metrics"
645edef4834c2911386b659cc775840fb7479e01 14-May-2015 Jorim Jaggi <jjaggi@google.com> Merge "Make sure the app can draw a frame before unlocking" into mnc-dev
5ad7fe4930b5566836debffc8976802c186b6ee3 14-May-2015 Yohei Yukawa <yukawa@google.com> Merge "Update IME focus when the active view is losing the focus." into mnc-dev
e869835d6a884434842838fce6d17c770fa1ef8b 14-May-2015 John Reck <jreck@google.com> am a5b28b92: am 69355eaa: Merge "DO NOT MERGE Backport of limited jank-tracking metrics" into lmp-mr1-dev

* commit 'a5b28b92b14d0949d43be6198fedc31872ad07f6':
DO NOT MERGE Backport of limited jank-tracking metrics
25607a6642d7c8bb134c7576e11bd79b5c4d233d 13-May-2015 John Reck <jreck@google.com> Revert "DO NOT MERGE Backport of limited jank-tracking metrics"

This reverts commit 2614bd225f84f7a23e6b30fc6b47bede153e5f4c.

Change-Id: I344b4cbaa0bb0caf50bceb806d1446ee27ea52d8
/frameworks/base/core/java/android/view/ViewRootImpl.java
827e0facfefd0c0033dcfb1747b4fa6f80f9e0e2 07-May-2015 Jorim Jaggi <jjaggi@google.com> Make sure the app can draw a frame before unlocking

- The mechanism to stop windows drawing while window animator was
animating was somehow flaky. It relied on the fact that the client
would call relayout() whenever the animating state changed. This is
mostly the case, but not for lockscreen animations. Instead, we now
use a push model, where window manager tells the app that the state
has changed.
- In addition, it only stopped drawing if that window was animating,
but then only resumed drawing after all windows have finished
animating. Now, we do this per window, so we only stop drawing for
windows that are currently animating.
- We resume the top activity now at the very beginning of the
unlocking sequence. This gives the app a chance to draw a frame
before the user sees anything. If it's to slow, then we just use the
outdated framebuffer.

Bug: 19964562
Change-Id: Ifef8abd189a3146d854b81b9b948861e4d38c155
/frameworks/base/core/java/android/view/ViewRootImpl.java
97c381304207013fd95c7806df4dcca0c69006c0 12-May-2015 Yohei Yukawa <yukawa@google.com> Update IME focus when the active view is losing the focus.

Despite the fact that IMM#focusOut() are called from many focus
mangement logics, the reality is that IMM#focusOut() has done
nothing more than 6 years. This would not a big problem as long
as IMM#focusIn() is called immediately after IMM#focusOut().

However, situations where only IMM#focusOut() is called,
following fields continue keeping object references.
- IMM#mServedView
- IMM#mNextServedView
- IMM#mServedInputConnection
- IMM#mServedInputConnectionWrapper

Even worse, if the IME is showing software keyboard, it will not
be dismissed.

With this CL, IMM#focusOut() starts cleaning up the active IME
session when the associated view loses focus.

This CL also removes IMM#mCurRootView because it is indeed
necessary for above change. The problem when only introducing
above change can be understood as follows.

1. IMM#mCurRootView is correctly set from ViewRootImpl.
2. IMM#focusIn() is called. InputConnection is established.
3. IMM#focusOut() is called, which triggers
IMM#finishInputLocked() because of above change, which
internally clears IMM#mCurRootView.
4. IMM#focusIn() is called but IMM#mCurRootView is still null.
Because of this the focus-in event is ignored and the
software keyboard does not show up anymore.

In this CL, we simply check view.hasWindowFocus() instead.
As far as I've tested, this change looks to be working well.

Bug: 20820914
Change-Id: Ib4bd70ce0305a6bde6a929bcc6ad20a2b8402a97
/frameworks/base/core/java/android/view/ViewRootImpl.java
3dec0d47215b56e3bd3e6f3287cf2c966bf8c22f 11-May-2015 George Mount <mount@google.com> Merge "Disable input during Activity Transition." into mnc-dev
ed9af066b2407a36699fae2e475c4d1b53d2ca1d 08-May-2015 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #20655182: API Review: ViewAssistStructure" into mnc-dev
49b043f37d7231b1544cb72e1bfb616e5a00688d 07-May-2015 Dianne Hackborn <hackbod@google.com> Fix issue #20655182: API Review: ViewAssistStructure

Fix the various view assist related APIs.

Also remove the blockAssist view attribute, and instead use
the window's FLAG_SECURE to drive blocking of the entire
hierarchy (which is semantically correct, and will protect
existing apps that have already indicated they need it).

Change-Id: I6beebc86b202809cba0a356cae9607d8d0fb5e78
/frameworks/base/core/java/android/view/ViewRootImpl.java
41725dedc33906aaafee36b2d6523596e2a8a52e 09-Apr-2015 George Mount <mount@google.com> Disable input during Activity Transition.

Bug 19437530

While the actual Activity Transitions are running,
input is stopped, except for the "back" button.

Change-Id: I112e6252b9de05ece10a6267681fee5487e5ef6b
/frameworks/base/core/java/android/view/ViewRootImpl.java
6711f3b34c2ad9c622f56a08b81e313795fe7647 07-May-2015 Adam Powell <adamp@google.com> Move PhoneWindow and friends back into internal package

PhoneWindow, PhoneLayoutInflater and PhoneFallbackEventHandler decided
to @hide out over in the android.view package after the policy jar was
disbanded. Give them a more appropriate home over in framework that
doesn't imply that they should be accessed from other internal layers
of abstraction.

Bug 19606548

Change-Id: Id07b791d178fa447010b49b24726b52208838e88
/frameworks/base/core/java/android/view/ViewRootImpl.java
31a2d063df5111e730abe7d07be064690deedc34 01-May-2015 Chris Craik <ccraik@google.com> Revert "Revert "Merge getDisplayList and updateDisplayListIfDirty""

Fixes breakage from HwAccelerationTest

This reverts commit b2847afde24aac22c8fb804cdce0c24b8a7c40c4.

Change-Id: I762b3c9020fc1d06bac61ffa8b956049147515b1
/frameworks/base/core/java/android/view/ViewRootImpl.java
b2847afde24aac22c8fb804cdce0c24b8a7c40c4 01-May-2015 Chris Craik <ccraik@google.com> Fix build.

Revert "Merge getDisplayList and updateDisplayListIfDirty"

This reverts commit f85d064b536d9b2028a83e21d98eac9b40b74e95.

Change-Id: I8b1566aba67c385d72759ea2aea16edcd8477813
/frameworks/base/core/java/android/view/ViewRootImpl.java
f85d064b536d9b2028a83e21d98eac9b40b74e95 01-May-2015 Chris Craik <ccraik@google.com> Merge getDisplayList and updateDisplayListIfDirty

bug:17767704

Change-Id: I5dffc0fa343d5d67d5fe59c78eca77bb8645ce0e
/frameworks/base/core/java/android/view/ViewRootImpl.java
34457f51e0a19555a7b9c6df6803ee1aa04c51b8 25-Mar-2015 Alan Viverette <alanv@google.com> Fix ViewRootImpl handling of content changes, fix ViewPager parenting

Previously content changes were only handled if they came directly from
the focused host, which meant that changes that occurred higher in the
tree were ignored. As a result, scrolling in ViewPager that contained
virtual nodes would fail to update the focus position.

Change-Id: I028bd8c670f1210339da331626e1986c5b5d4b87
/frameworks/base/core/java/android/view/ViewRootImpl.java
b4f01b966bd2ebf89623f9c65462b8b8b7034461 24-Mar-2015 John Spurlock <jspurlock@google.com> Remove the ability to disable audio service.

Running in a configuration without audio service is not fully tested.
Remove the configuration option for now. Also remove unused delegation
layer in SoundPool.

Bug: 19891112
Change-Id: I47be0e32d54b8ef8fa25cf47b85eacf8a4969500
/frameworks/base/core/java/android/view/ViewRootImpl.java
daf5c0ebd0aa4f73fcf2c9fecd8ce9d36e3db4fc 24-Mar-2015 Griff Hazen <griff@google.com> Merge commit '583c7c56' into master

Change-Id: I89c2c63005fbb6b1c058b2022f4469be5244505f
43c410eaacf7d287c6c3f5621e6e0b96501004dc 18-Mar-2015 Chris Craik <ccraik@google.com> Merge "Remove HardwareCanvas"
2614bd225f84f7a23e6b30fc6b47bede153e5f4c 19-Feb-2015 John Reck <jreck@google.com> DO NOT MERGE Backport of limited jank-tracking metrics

Bug: 19821830

Cherry-pick of ba6adf66d3c44c0aa2fd8a224862ff1901d64300
Cherry-pick of e70c5754d01f2ab0ff47ea3eabaa88aca5ed2a36

Change-Id: Id342fa0ab345f204bec58acf45ce72f6de950cfb
/frameworks/base/core/java/android/view/ViewRootImpl.java
a0938021718867edd267d4905f3c17ef2944aa65 13-Mar-2015 Griff Hazen <griff@google.com> Allow emulator to select a window outset bottom

And clean up some copied around code.

Bug: 17440607

Change-Id: I5cf9c58b49110c4be1a77dc9c410fedc6b99aef3
/frameworks/base/core/java/android/view/ViewRootImpl.java
4423d91de5300d3fd318bf5bc2d4d7e5bb856abf 02-Mar-2015 Clara Bayarri <clarabayarri@google.com> Add a type parameter to startActionMode() calls.

This requires adding a new method to View and Window.Callback to pass
down the type as a parameter.

For compatibility purposes, the new method implementations keep the
type and call the old method, in case clients have subclassed it.

Change-Id: If5d857f131e33be8cc6a8814f2e9c4e85ad2da25
/frameworks/base/core/java/android/view/ViewRootImpl.java
c6ee744a90a4a84df93b6631ca7df8736ef320e1 12-Mar-2015 Filip Gruszczynski <gruszczy@google.com> Merge "Allow polling for WindowInsets."
3d4e7efe37a4b0dfc5807444e8c3b98a28953377 27-Feb-2015 Jeff Brown <jeffbrown@google.com> Move sync barrier methods into MessageQueue.

The methods were previously defined on Looper but on reflection
they actually make more sense on the MessageQueue instead since
the Looper class is primarily concerned with thread lifecycle
rather than the actual messages themselves.

Change-Id: Iff356b94754fc9960774fa17e3eec9604229cba6
/frameworks/base/core/java/android/view/ViewRootImpl.java
954289d9a9b1a26b1621037a427269bdbd67d5bc 27-Feb-2015 Filip Gruszczynski <gruszczy@google.com> Allow polling for WindowInsets.

Change-Id: I36feb2403b1bcf6de5d8808734c46999a38e7403
/frameworks/base/core/java/android/view/ViewRootImpl.java
f6829a0a618b4523619ec53c996b04d67e3186b9 10-Mar-2015 Chris Craik <ccraik@google.com> Remove HardwareCanvas

Change-Id: I239646a7f00f09d3f76fe6b6162eed86bc0d6e77
/frameworks/base/core/java/android/view/ViewRootImpl.java
08c7116ab9cd04ad6dd3c04aa1017237e7f409ac 28-Feb-2015 John Spurlock <jspurlock@google.com> Remove unused imports in frameworks/base.

Change-Id: I031443de83f93eb57a98863001826671b18f3b17
/frameworks/base/core/java/android/view/ViewRootImpl.java
df4943d5e08360223e2b8c16d4b578a229cad411 24-Feb-2015 Jorim Jaggi <jjaggi@google.com> Merge "Do not forceLayout when window is resized"
1fb55286438967f82e305a8449c0528a7cd07fce 24-Feb-2015 Chad Jones <chadj@google.com> resolved conflicts for merge of 57bb5f5c to master

Change-Id: Id5dfe7fc919305658312771a031c0764cef5515c
c2932a1be3e320679034212698aff376d5104dbe 21-Nov-2014 Jeff Brown <jeffbrown@google.com> Hold a wake lock while dozing when display updates are pending.

When the display state is DOZE or DOZE_SUSPEND, assume this means
that the AP may go to sleep at any time so hold a wake lock for
a little while starting when traversals are scheduled to ensure
that the AP remains awake long enough to draw and post the frame
to the display hardware.

This patch is somewhat approximate but should be good enough for
most devices today.

Note that the implementation uses the window manager to ensure that
the window which wants to draw is actually visible before acquiring
the wake lock. There is a cost to this test (a round-trip) which
should not be significant today since we do not expect apps to draw
more than one frame or two while dozing. However, if we wanted to
support animations in general, we might want to optimize it or
eliminate the check altogether (since we can already account for
the app's use of the wake lock).

Another way to implement this functionality might be for the view
hierarchy to listen for the power manager to report that it has entered
a non-interactive power state before deciding to poke draw locks.
This would be somewhat more accurate than watching the display state.
Also, the draw lock timeout logic could be implemented more directly
instead of using an ordinary timed wake lock.

Bug: 18284212
Change-Id: I84b341c678303e8b7481bd1620e634fe82cc4350
/frameworks/base/core/java/android/view/ViewRootImpl.java
df570c6e66d98536597737f863430510b6336ffe 20-Feb-2015 John Reck <jreck@google.com> Merge "Initial attempt at jank-tracking stat collection"
ba6adf66d3c44c0aa2fd8a224862ff1901d64300 19-Feb-2015 John Reck <jreck@google.com> Initial attempt at jank-tracking stat collection

Is a bit naive, perhaps overly aggressive, but sorta works

Change-Id: I01a774e00dbe681439c02557d9728ae43c45ce50
/frameworks/base/core/java/android/view/ViewRootImpl.java
72d6f219438e232fcfe0b732d1adb0dbac79dbac 20-Feb-2015 Craig Mautner <cmautner@google.com> Permit layout when stopped if reporting draw

When a device was woken up in a different orientation than what it
went to sleep in, the window manager would force a resize to get it to
predraw in the new orientation. The predraw was done in the old
orientation however because layouts are skipped when the activity was
stopped.

This change allows layouts to proceed when the activity is stopped if
the flag to report resize events is true.

Fixes bug 18444400.

Change-Id: Ib2def3449dd67918f6fb838bdb1fe5cc6ec57f8e
/frameworks/base/core/java/android/view/ViewRootImpl.java
87a0bfdfa8184d072c86cb9183a8438f2dd4150d 16-Feb-2015 Jorim Jaggi <jjaggi@google.com> Do not forceLayout when window is resized

WindowManager uses a resize message when forcing a window to be
redrawn, which then triggered a full layout pass, which is
excessive and unnecessary. A normal requestLayout() should suffice
for this case.

Bug: 18573811
Change-Id: I1e9ef807094b1e0afb32d13fd68b67c3957b15c3
/frameworks/base/core/java/android/view/ViewRootImpl.java
7c72668f19d404b01412abc67937b1b5c660df71 07-Feb-2015 Wale Ogunwale <ogunwale@google.com> Adjust activity display metrics based on stack configuration.

Apps normally use context.getResources().getDisplayMetrics()
or getWindowManager().getDefaultDisplay() to get information
about the screen dimensions. Not all the screen space is available
for apps in a multi-window environment, so we limit the dimensions
of the display object exposed to the app to that of the containing
stack.

Bug: 19225079
Bug: 19354838
Change-Id: I8dc3a6c9b99ecedcca28fc4ddaba9f31feb4f871
/frameworks/base/core/java/android/view/ViewRootImpl.java
b10e33ff804a831c71be9303146cea892b9aeb5d 04-Feb-2015 Jorim Jaggi <jjaggi@google.com> Split up android.policy into framework.jar and services.jar 1/3

Change-Id: Ifd69f1f3dd308a7e17a1442e2f3950da8b03cec4
/frameworks/base/core/java/android/view/ViewRootImpl.java
d9852a9ced736b2deb2c8842c6dc6fc59cfbab3c 10-Feb-2015 Svetoslav <svetoslavganov@google.com> am cf2c8545: am 5521f39f: am c73cfa0f: Accessibiltiy: missed update to the previous patch.
automerge: c052b0e

* commit 'c052b0efcef4c8656a972155c6a88135f79ed808':
Accessibiltiy: missed update to the previous patch.
c73cfa0ffba344a83d61e2f4eb9715152a2807b8 10-Feb-2015 Svetoslav <svetoslavganov@google.com> Accessibiltiy: missed update to the previous patch.

Change-Id: I4c47d38f5e137dcc1c6db0561b3824a26572027d
/frameworks/base/core/java/android/view/ViewRootImpl.java
c66ee745dc84699a25be53b8ce7a41c56aa5031d 10-Feb-2015 Baligh Uddin <baligh@google.com> am 2083173a: am fbf9666f: am b2ba6dfc: Merge "Accessibility: Handle a missed case when clicking focused views." into lmp-mr1-dev
automerge: a314754

* commit 'a3147545751266f3e58fdadffc4f71e87228c420':
Accessibility: Handle a missed case when clicking focused views.
f33fe1f4860d4cbc49633162cf6441d315550cc9 07-Feb-2015 Svet Ganov <svetoslavganov@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
a7bb6fbeab933326d58aa806d8194b7b13239d34 04-Feb-2015 Dianne Hackborn <hackbod@google.com> First quick implementation of auto assist data.

Introduce new AssistData class that contains all data
the framework automatically generates for assist. Currently
populated with a very simple tree structure representing
the app's view hierarchy.

Reworked how we populate the class name for accessibility
info, so this is provided through a new method call on View
that subclasses can override. This method is also used
to populate the class name in AssistData.

Change-Id: Ibd0acdc8354727d4291473283b5e4b70894905dc
/frameworks/base/core/java/android/view/ViewRootImpl.java
7e760ee59d77f0e8cbdd4c64c1d4bf0b89113878 03-Feb-2015 Svetoslav <svetoslavganov@google.com> Fix broken activation of the selected view in accessibility mode. automerge: ded133c automerge: b6b526e
automerge: f8acd7a

* commit 'f8acd7a961f3a36712519d0f925f86f3da8d0b7c':
Fix broken activation of the selected view in accessibility mode.
ded133c446fa9d0d23e6bde19a66fb2ce3980491 31-Jan-2015 Svetoslav <svetoslavganov@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
b59041595b08a7aca8d425fc6e6b16583a275f12 30-Jan-2015 Alan Viverette <alanv@google.com> Merge "Add transition support to PopupWindow"
5435a30ae552391f14009c4459731ae149675b18 29-Jan-2015 Alan Viverette <alanv@google.com> Add transition support to PopupWindow

Allows framework-added windows to manually specify surface insets, which
enables us to wrap the popup window's elevated content view with a root
view, which in turn allows us to use the Transition API for popup window
transitions.

Fixes a bug where the root view's render node forced clipping.

Bug: 13211166
Change-Id: I303dfa55a052cdf5d3b1485422529123e3cc867a
/frameworks/base/core/java/android/view/ViewRootImpl.java
7dbc3bfdd9447a0ebbcce4e3acdae7d8047e67de 29-Jan-2015 Alan Viverette <alanv@google.com> Clear accessibility focus when the window loses visibility

AccessibilityInteractionController checks window visibility during focus
search and when performing an action, which prevents the framework from
clearing focus when windows lose visibility. This change ensures that
focus will already have been cleared, which matches the behavior of the
other properties checked during focus search (view detachment and view
visibility).

Bug: 19169643
Change-Id: I795ed27ce8dfb7ecb1462943c81c5b14973a8d7a
/frameworks/base/core/java/android/view/ViewRootImpl.java
69c22e82e9c3e95f4689a57320de3199ffd29262 13-Jan-2015 Adam Powell <adamp@google.com> Merge "Add API for nested pre-processing of a11y events; fix ResolverDrawerLayout" into lmp-mr1-dev
74bf065e43a3075ffcaf9fcdc1ef423a1e14b761 12-Jan-2015 Wale Ogunwale <ogunwale@google.com> Don't allow windows with invalid types to be added.

Bug: 18950225
Change-Id: Ia7ead72d036c7628e0a97f8fe9fef2a35525e4df
/frameworks/base/core/java/android/view/ViewRootImpl.java
b6ab098bad4b126eaaaa3aaa5a512fefc4e0749b 08-Jan-2015 Adam Powell <adamp@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
01a5ea35fbba4c5bb1d7790ae1677a2fa752e042 03-Dec-2014 John Reck <jreck@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
b13de07f0b26953115f4315bc7417ca87c70594b 20-Nov-2014 John Reck <jreck@google.com> If the surface is lost, release it

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
/frameworks/base/core/java/android/view/ViewRootImpl.java
c3672cd3f7e2bd87d6de9dada499de82b62fae84 06-Nov-2014 Wale Ogunwale <ogunwale@google.com> Cancel or drop key events if activity is stopped.

After an activity instance state is saved due to onStop()/onPause(),
there is a small window where it can still get key events like the
back button since we still allow the ActivityThread to handle
pending messages (like memory trim request) before informing the
activity manager that we are done. If the activity is stopped,
we will now drop non-terminal input events and set the cancel
flag on terminal events.

Bug: 18151331
Change-Id: I370d7c871530eea4b16fa42428d0248f1a87abb6
/frameworks/base/core/java/android/view/ViewRootImpl.java
37d7a68de7e353c31a3a4736054cd86f0e002eaf 06-Nov-2014 Adrian Roos <roosa@google.com> Fix inset hinting when adding window

Windows with FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS were
getting an incorrect content inset hint, because the
hinting didn't see the adjusted systemUiVisibility.

Also adds hinting for the stable insets.

Bug: 17508238
Change-Id: If9647277feb6811b15665b801accd896c51dbd12
/frameworks/base/core/java/android/view/ViewRootImpl.java
2cd23e6b9d8fcdf5dfd052fb2ed0cd80f1d278ba 05-Nov-2014 Alan Viverette <alanv@google.com> Fix hasSurfaceInsets check when creating hardware renderer

BUG: 17729606
Change-Id: I8c7092428b790e0ff3bbf84b64ba385ef2b2f521
/frameworks/base/core/java/android/view/ViewRootImpl.java
93cad8c4d41f2256d0bfaa455686acf8442d97ff 04-Nov-2014 Alan Viverette <alanv@google.com> Pass surface insets from window attributes rather than params

Params only gets set in certain situations, whereas the actual window
attributes always contain the correct surface insets.

BUG: 18214798
Change-Id: Ib5236ccf3f120b26c5abc8671bf29cb3dc269186
/frameworks/base/core/java/android/view/ViewRootImpl.java
808fe6f99fba753e0ec4c5e90de0ff7a2140e8a6 03-Nov-2014 Adrian Roos <roosa@google.com> Merge "Fix colored status bar panning issues" into lmp-mr1-dev
159da3dba8811017c683fcee26c795be1948b0c4 30-Oct-2014 Craig Mautner <cmautner@google.com> Merge "Add enter-animation-done callback for system windows" into lmp-mr1-dev
9c79504225f60c72c947220b6aca928f11279e1c 29-Oct-2014 Craig Mautner <cmautner@google.com> Add enter-animation-done callback for system windows

Existing hidden methods allow activities to be notified when their
windows have completed animating in. This change adds that capability
to system windows using a ViewTreeObserver callback since system
windows lack an activity token.

The first subsystem to use this is the UserSwitchingDialog which was
previously using a 250 msec timeout to dismiss the dialog. That
deadline was often missed leaving the user with no dialog on the
screen during the transition.

Fixes bug 16661752.

Change-Id: I70789e0d9c07112f275e76fb82850926305f290d
/frameworks/base/core/java/android/view/ViewRootImpl.java
66c0adcfd4351518512df2f3e81526d2d67d6d65 29-Oct-2014 Alan Viverette <alanv@google.com> Merge "Ensure accessibility focus rect is drawn correctly" into lmp-mr1-dev
2b12b58f942e34e8c0cc5095cca71dbaaa029624 29-Oct-2014 Alan Viverette <alanv@google.com> Create translucent hardware renderer if surface insets are non-zero

BUG: 18160604
Change-Id: Ie4483b9841bd91778659d83b154f69e777fa1dfc
/frameworks/base/core/java/android/view/ViewRootImpl.java
0e7ae4efe8f424fa1ced8f7e5f3d8ae78066592b 01-Oct-2014 Adrian Roos <roosa@google.com> Fix colored status bar panning issues

Bug: 17695293
Change-Id: I6a1267f8dff27e7b78ab312a71648ef16ab9483b
/frameworks/base/core/java/android/view/ViewRootImpl.java
632af849240f54f91b2b4fde77d3a51c4d045f74 28-Oct-2014 Alan Viverette <alanv@google.com> Ensure accessibility focus rect is drawn correctly

Reverts previous change that draws it as part of View.draw() and ensures
that the display is always redrawn if a view has accessibility focus.
Correctly removes focus from views with accessibility focused ancestors.

Also reverts the focus indicator to use a solid line since the dotted
line looked janky.

BUG: 17675993
Change-Id: I25718334cc1ae1c2cd19d3c23af1c18c6a67504c
/frameworks/base/core/java/android/view/ViewRootImpl.java
b3ba1d4e717d6292df4273108f0da61dac4f7b10 27-Sep-2014 Svetoslav <svetoslavganov@google.com> Accessibility node provider getting invalid virtual view id.

If the virtual child id is not specified we should ask the node
provider to create a node info for the hosting view bu passing
the special host node id.

bug:17664111

Change-Id: I9c2d3195ad813eed7ea4108fe0d7ccb9cc32a1a0
/frameworks/base/core/java/android/view/ViewRootImpl.java
73840ea3670f1c117843acc6069635c80ba2ffd2 22-Sep-2014 John Reck <jreck@google.com> Aggressively trim memory for system_process

Bug: 16978006

Don't HWUI-accelerate KeyguardScrim
Aggressively trim memory as soon as a ViewRootImpl
dies or has its visibility changed.

Change-Id: Ie1b7c9d30653456bd2e9f309128174f972999368
/frameworks/base/core/java/android/view/ViewRootImpl.java
61375a8bb5e112d4e79ee4240699ffe7e3f4c8e5 18-Sep-2014 John Reck <jreck@google.com> Revert "Make starting window hw-accelerated"

Bug: 17516789

This change corresponds to a sudden influx of bad surface crashes.
Reverting to see if stability returns as this was an optimization
CL

This reverts commit 29ff1bc57ac2c995c56f15ed6e56e5fb247b2a44.

Change-Id: I7835e89017161d94ad05fe46d81bd437c3dae3a7
/frameworks/base/core/java/android/view/ViewRootImpl.java
4f52b3420684e85252a7341d906e47145855b6ec 11-Sep-2014 Chet Haase <chet@google.com> Make starting window hw-accelerated

An earlier fix in L disabled hw acceleration for the starting window
after the system process became hw accelerated. This was done to preserve
the old behavior of the starting window having some default behavior
(in particular, being filled with a default color). However, this ends up
being a memory and performance problem on some platforms (memory because
some platforms have backing store for software surfaces, performance
because it takes far longer to create a screen-size software surface than
a hardware surface).

The fix is to allow the starting window to inherit the hw acceleration
behavior of its process, and to detect when we are drawing the contents
of that starting window and to fill it with a default color (black).

Issue #17443449 use hardware rendering for app preview window

Change-Id: I8be8111d9e38c51fbbc07185acca065815ce26dc
/frameworks/base/core/java/android/view/ViewRootImpl.java
bb8c4834613207cf880e8491b33eb495cc268548 09-Sep-2014 Dianne Hackborn <hackbod@google.com> Merge "Add new wallpaper features for insets and offsets." into lmp-dev
067e5f68b9216b233df1c6529db182ff9b2887ab 08-Sep-2014 Dianne Hackborn <hackbod@google.com> Add new wallpaper features for insets and offsets.

Issue #17394151: WallpaperService / Engines need to get notified
of WindowInsets

Issue #17394203 Wallpapers need a system API to be shifted in order
to support burn in protection

Adds a new API on WallpaperManager to set additional offsets to
make wallpapers extend beyond the display size.

Insets are now reported to wallpapers, to use as they may. This
includes information about the above offsets, so they can place
their content within the visible area. And to help with this, also
expose the stable offsets APIs in WindowInsets which is also very
useful information for the wallpaper.

Another new API on WallpaperManager to set a raw offset to apply
to the wallpaper window, forcing it to move on the screen regardless
of what the wallpaper is drawing.

Fix wallpapers when used with overscan enabled, so they still extend
out across the entire screen. Conveniently, the above new window
insets information is very useful for this case as well!

And a new wallpaper test app for all this stuff.

Change-Id: I287ee36581283dd34607609fcd3170d99d120d8e
/frameworks/base/core/java/android/view/ViewRootImpl.java
7498efdc5e163d6b4a11db941c7d13c169d37284 04-Sep-2014 Svet Ganov <svetoslavganov@google.com> Clicking on partially coverd views by other views or windows.

In touch exploration mode an accessibility service can move
accessibility focus in response to user gestures. In this case
when the user double-taps the system is sending down and up
events at the center of the acessibility focused view. This
works fine until the clicked view's center is covered by another
clickable view. In such a scenario the user thinks he is clicking
on one view but the click is handled by another. Terrible.

This change solves the problem of clicking on the wrong view
and also solves the problem of clicking on the wrong window.
The key idea is that when the system detects a double tap or
a double tap and hold it asks the accessibility focused node
(if such) to compute a point at which a click can be performed.
In respinse to that the node is asking the source view to
compute this.

If a view is partially covered by siblings or siblings of
predecessors that are clickable, the click point will be
properly computed to ensure the click occurs on the desired
view. The click point is also bounded in the interactive
part of the host window.

The current approach has rare edge cases that may produce false
positives or false negatives. For example, a portion of the
view may be covered by an interactive descendant of a
predecessor, which we do not compute (we check only siblings of
predecessors). Also a view may be handling raw touch events
instead of registering click listeners, which we cannot compute.
Despite these limitations this approach will work most of the
time and it is a huge improvement over just blindly sending
the down and up events in the center of the view.

Note that the additional computational complexity is incurred
only when the user wants to click on the accessibility focused
view which is very a rare event and this is a good tradeoff.

bug:15696993

Change-Id: I85927a77d6c24f7550b0d5f9f762722a8230830f
/frameworks/base/core/java/android/view/ViewRootImpl.java
f0c758be0d27910d026bee176eef9434c15fc3cd 04-Sep-2014 Svetoslav <svetoslavganov@google.com> Update accessibility focused virtual view bounds.

We keep track of the accessibility focused virtual view in order to
draw the accessibility focus highlight. We were not updating this
virtual view when the view tree changes in a way that may affect
the virtial view's bounds in the screen.

bug:17211255

Change-Id: I69dd949b91ed9c8242521332081d50d75cac6921
/frameworks/base/core/java/android/view/ViewRootImpl.java
9ae9ed24aa252acbc2e6288068b991dd5291967b 03-Sep-2014 Svetoslav <svetoslavganov@google.com> Fix AccessibilityNode's isVisibleToUser behavior.

The isVisibleToUser property of an AccessibilityNodeInfo specifies
whether the user can see the source view. It is used by accessibility
services to figure out whether to focus on a view. This property
was giving a wrong value if the view is covered by another window
such as the keyboard. As a result the user hears one thing but when
double taps interacts with the overlaid window which is another thing.

bug:15938254

Change-Id: Ib9feb20ea422a24a512c47ed1234961ae0386a7f
/frameworks/base/core/java/android/view/ViewRootImpl.java
4c5a27b5f667ebc7cb2b188655820ad3fddedb52 28-Aug-2014 John Reck <jreck@google.com> Merge "Animator stuff" into lmp-dev
119907cd2575c56b1ebf66348b52e67aaf6a88d8 14-Aug-2014 John Reck <jreck@google.com> Animator stuff

Bug: 17228458

Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
/frameworks/base/core/java/android/view/ViewRootImpl.java
f14d924cd706438b52ba2bf7a698ea1645fe6399 26-Aug-2014 Filip Gruszczynski <gruszczy@google.com> Allowing isRound and outsetBottom properties to be passed to ActivityView.

We remove requirement for having display id == 0 or allow circumventing it
through a flag.

Change-Id: Ia4671614b51894393d47e681cc72718d394230f6
/frameworks/base/core/java/android/view/ViewRootImpl.java
997aa40645a1ccdd30c88ba6d5b7bb389fcec72c 19-Aug-2014 Alan Viverette <alanv@google.com> Draw accessibility focus in View rather than ViewRootImpl

This ensures that the focus rect position is correct when running in
render thread accelerated mode. Also adds a missing call to draw the
overlay.

BUG: 16796647
BUG: 17063342
Change-Id: I377e5eaea89d3f20c8c7e82c264a0f106021d58b
/frameworks/base/core/java/android/view/ViewRootImpl.java
99421aed1f57195254b36cf10e23c92219d72270 13-Aug-2014 Alan Viverette <alanv@google.com> Merge "Invalidate root render node when accessibility focus moves" into lmp-dev
1dd0e0fae2135a0aaf8c9f3686e70d3544597bec 12-Aug-2014 John Reck <jreck@google.com> Don't use libhwui to draw starting window

Bug: 16735410

Change-Id: I763c10b9d34eadcb768ad580d2387b1e825cbd53
/frameworks/base/core/java/android/view/ViewRootImpl.java
f6cf1a02537959c5953553000cb7151c0554a333 11-Aug-2014 Alan Viverette <alanv@google.com> Invalidate root render node when accessibility focus moves

BUG: 16796647
Change-Id: Ibfc6ec4aa50c6354ea095a35470dd54e768d911b
/frameworks/base/core/java/android/view/ViewRootImpl.java
dbed893ba88b76f88ea51d8666653458955cdc67 07-Aug-2014 Alan Viverette <alanv@google.com> Preserve surface insets when view layout is updated

Also makes canvas save & restore in threaded renderer a little safer.

BUG: 16654228
Change-Id: Ie0d49450ed408cffd0b859c08e524b6f904c77ca
/frameworks/base/core/java/android/view/ViewRootImpl.java
ac89416c77a1fab6921aa31a999ccefc1223be7c 21-Jul-2014 Alan Viverette <alanv@google.com> Always apply surface insets

Change-Id: I9d8ad0c7fcf7a1016e01c2332f45614da5d2cf0c
/frameworks/base/core/java/android/view/ViewRootImpl.java
7bf379c8af399626d5b8b568fe1d4f96f56badcc 16-Jul-2014 Dake Gu <dake@google.com> ActivityTransition: fix wrong width/height applied to sharedelement.

transform screen position/size to position/size in parent of sharedelement.
fixed bug of transformMatirxToLocal() and transformMatrixToGlobal() that gets

Change-Id: I4c7b12f1ada7004ab7594961df4079be4ca4c909
/frameworks/base/core/java/android/view/ViewRootImpl.java
6712495297a549b546ba781c6858c18f4cc9484b 17-Jul-2014 Chris Craik <ccraik@google.com> Merge "Simplify ViewRootImpl's AttachInfo usage" into lmp-dev
d36a81f392946bbc84a5a97f911a337b8ed6770b 17-Jul-2014 Chris Craik <ccraik@google.com> Simplify ViewRootImpl's AttachInfo usage

Change-Id: I4230e95ed5a52c8c5fae7d7b8d58827925db13ba
/frameworks/base/core/java/android/view/ViewRootImpl.java
b72be59a6a5ca5fae3ede2470f1662598098b666 17-Jul-2014 Adam Powell <adamp@google.com> Add nested pre-fling for nested scrolling

Nested pre-fling allows a nested scrolling parent to consume a fling
operation before the child view does. If a parent has been consuming
nested pre-scroll events in a particular direction, this is generally
a good indication that it should also consume the resulting fling at
the end.

Bug 15538504

Change-Id: I88e8753a96c9b41815c3be530cafab8345164e64
/frameworks/base/core/java/android/view/ViewRootImpl.java
889fc94ffa70633e510e812b9da86723f4eee384 17-Jul-2014 Chris Craik <ccraik@google.com> Merge "Add accessibility text contrast setting" into lmp-dev
cce47eb580d666ead1f6095d1e3b65233592bbaa 17-Jul-2014 Chris Craik <ccraik@google.com> Add accessibility text contrast setting

b/14624452

Adds a feature which draws all text (in the HW accelerated standard
path) in a high contrast mode. Text is drawn at full alpha, and either
white or black (depending on its original color) with a starkly
contrasted outline beneath it.

Change-Id: I943f624b6367de35367cced3b2a8298f2bc62377
/frameworks/base/core/java/android/view/ViewRootImpl.java
a51cab9288fea0a8c8ce9a4ccdb834a11984b32c 17-Jul-2014 Alan Viverette <alanv@google.com> Fix software dirty region, don't add insets to software windows

BUG: 16324957
Change-Id: Ia99619b7c314fbfce60a5ef8ac16b54680332899
/frameworks/base/core/java/android/view/ViewRootImpl.java
0a97330b98dd633b58dcfff405d94476c89e867d 16-Jul-2014 John Reck <jreck@google.com> Fix root RenderNode damage calculation

Bug: 15888445

Change-Id: I281ec9271c9889673dcdfcb6d31e341a7b47b7de
/frameworks/base/core/java/android/view/ViewRootImpl.java
49a22e82025ea947d81681a0abb7ef00600eac3b 13-Jul-2014 Alan Viverette <alanv@google.com> Add window elevation for dialogs, clean up surface insets API

BUG: 13211941
Change-Id: I9d605d0b2fb24f9bf8e73fbecd520b6b52ae5751
/frameworks/base/core/java/android/view/ViewRootImpl.java
58c42c3596a2b79184c9a6b7beffc6e94cce112c 13-Jul-2014 Alan Viverette <alanv@google.com> Specify light and shadow properties in theme

BUG: 15859361
Change-Id: I65c9aa8c7ad7a709504c879d96158efba040d3ce
/frameworks/base/core/java/android/view/ViewRootImpl.java
ccb11e183763db5cbaca96abe461adf480ed8e44 09-Jul-2014 Alan Viverette <alanv@google.com> Add API for specifying popup window shadows and shadow insets

BUG: 14569120
BUG: 13211941

Change-Id: Ia21596b25a0471344d42d59377074f67fce00042
/frameworks/base/core/java/android/view/ViewRootImpl.java
fa10423fa00f3495e451016acba9b6848eb995c9 21-Jun-2014 Adrian Roos <roosa@google.com> Add stable insets for stable system windows

Adds a new kind of inset that only accounts for stable system
windows like the system or navigation bar.

Bug: 15457292
Change-Id: I681b711f6f40a94c25b7acd3a44eb3539486afab
/frameworks/base/core/java/android/view/ViewRootImpl.java
f47a594f5250b1914c36423ee6b371f0b8db09d0 01-Jul-2014 John Reck <jreck@google.com> Fix onTrimMemory for HardwareRenderer

Also fixes detachFunctor possibly drawing after return

Bug: 15189843
Bug: 15990672

Change-Id: I64c48cb674c461a8eeaba407b697e09f72c98ce3
/frameworks/base/core/java/android/view/ViewRootImpl.java
918ad523b2780e0c893f3d2a32d4ec13f2a7e921 27-Jun-2014 John Reck <jreck@google.com> More cleanups

Change-Id: Id5967944b949a2aec57e4fe9fdcdc04c11b8c35a
/frameworks/base/core/java/android/view/ViewRootImpl.java
9970aee6e8858f2f9efe329aa0ab68b56ed1659e 24-Jun-2014 Hui Shu <hush@google.com> Remove the return value of invokeFunctor

BUG: 15513308

Change-Id: I900800a6c63f15bf68afaf66b34303039038d3c2
/frameworks/base/core/java/android/view/ViewRootImpl.java
3b20251a355c88193c439f928a84ae69483fb488 23-Jun-2014 John Reck <jreck@google.com> No-fail invokeFunctor

Bug: 15513308
Bug: 15449247

Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
/frameworks/base/core/java/android/view/ViewRootImpl.java
8dab261d81e84b0a5cac3fc525d4c4bc0077bacd 22-Jun-2014 Michael Kolb <kolby@google.com> am c6ffc840: am 270c099f: Merge "Move emulator check & save system properties access" into klp-modular-dev

* commit 'c6ffc840c4e34a61b537e1fc3e90b111d4150244':
Move emulator check & save system properties access
c0fcf109f04e56617680b41d69b7d952ac4bea0b 21-Jun-2014 Michael Kolb <kolby@google.com> am 71f65485: am db9fed74: Merge "Make WindowInsets.isRound work with emulator" into klp-modular-dev

* commit '71f65485bf47c8bfbae2b3a0a9573b311668b4a2':
Make WindowInsets.isRound work with emulator
c6ffc840c4e34a61b537e1fc3e90b111d4150244 21-Jun-2014 Michael Kolb <kolby@google.com> am 270c099f: Merge "Move emulator check & save system properties access" into klp-modular-dev

* commit '270c099faf63868dcc21836a84de778337ff3be9':
Move emulator check & save system properties access
71f65485bf47c8bfbae2b3a0a9573b311668b4a2 21-Jun-2014 Michael Kolb <kolby@google.com> am db9fed74: Merge "Make WindowInsets.isRound work with emulator" into klp-modular-dev

* commit 'db9fed74c2bbf97157683b47f3cbdcd04c729839':
Make WindowInsets.isRound work with emulator
437d31390b564bbf31f7034930a33b2a86d1ae26 20-Jun-2014 Michael Kolb <kolby@google.com> Make WindowInsets.isRound work with emulator

Bug: 15775489

Change-Id: I53a14ccd3be776d46c9cea43c0d5d3f41674dd75
/frameworks/base/core/java/android/view/ViewRootImpl.java
22dfdcb7eea428e041b66cb6dc430dc0582e861a 21-Jun-2014 Michael Kolb <kolby@google.com> Move emulator check & save system properties access

Bug: 15775489

Change-Id: I375aee36b212ae044101a65b65c51e6f889fd263
/frameworks/base/core/java/android/view/ViewRootImpl.java
9d7ee60e5e9fab801a21c8bf174ef1e8175ccdd2 17-Jun-2014 John Reck <jreck@google.com> Remove incorrect isEnabled() check

Bug: 15683945

invokeFunctor() does not require isEnabled() to be true
to execute. Specifically it does not care if HardwareRenderer
has a Surface or not, as it will fall back to a pbuffer surface
if available. If there is no context at all, it will invoke
with kModeProcessNoContext.

Change-Id: Ie6abe566b92c8fa33bb7a673fc3b9fa9ce913446
/frameworks/base/core/java/android/view/ViewRootImpl.java
b8802b1293c05a14399005aeaeb93b82ec2e2f27 17-Jun-2014 John Reck <jreck@google.com> Add atlas map pointer validation

Bug: 15425820

This just prevents the crash, it's still unclear how bad pointers
are getting into the map in the first place

Change-Id: I3acffaae09548ec48973035b7fcf5f35606bad60
/frameworks/base/core/java/android/view/ViewRootImpl.java
816f71b7e0dc263362e9fc8d251c8d1944bff17c 13-Jun-2014 John Reck <jreck@google.com> Merge "Move LayerType to RenderNode"
25fbb3fa1138675379102a44405852555cefccbd 12-Jun-2014 John Reck <jreck@google.com> Move LayerType to RenderNode

Change-Id: Icb79a5015cb0362b1f3a66d09007450730135a97
/frameworks/base/core/java/android/view/ViewRootImpl.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/core/java/android/view/ViewRootImpl.java
e4267ea4f20740c37c01bfb6aefcf61fddc4566a 04-Jun-2014 John Reck <jreck@google.com> Even FASTER damage calculations!

* Now with more native!
* Less matrix math thanks to bulk-property-update support!
* Zero JNI on the View.damageInParent() path!
* Fully aware of RT-driven animators!
* Likely full of new and exciting bugs!
* But it also fixes at least 1 existing invalidate bug!

Change-Id: Ie0773f85a60850ff2668370c58defef2e8aa079f
/frameworks/base/core/java/android/view/ViewRootImpl.java
84a4c887a07c1c2939443f4e0587d7f1ac109e4b 30-May-2014 John Reck <jreck@google.com> Remove GLRenderer

Change-Id: I180286417c1a354fc7eb1eadb1884ac6add0795c
/frameworks/base/core/java/android/view/ViewRootImpl.java
2cfc0e543f69750b4ccc9d5f52b384e525cf9e77 30-May-2014 John Reck <jreck@google.com> am 894bb170: Merge "Enable debug stuffs" into lmp-preview-dev

* commit '894bb1701ae15b87af1e3bfe865fe191081cc806':
Enable debug stuffs
fe5e7b7346a54537b980796ceeca66bfdbd05561 24-May-2014 John Reck <jreck@google.com> Enable debug stuffs

Bug: 14596762
* dumpsys gfxinfo implemented
* profile GPU visual_bars implemented

Change-Id: Icb948a9d5af5989b5615504d0d76ade64b93ef5b
/frameworks/base/core/java/android/view/ViewRootImpl.java
d04d303e5d8521403514cf960a694e566df19536 23-May-2014 John Reck <jreck@google.com> resolved conflicts for merge of 1f6c973b to master

Change-Id: I0d0a72f1d737fa80ac4c258c1f9fc52ef85724bd
a5dda645da738da7b4ae15e28fa7d93d3b04b94f 23-May-2014 John Reck <jreck@google.com> Bag of scheduling tweaks

Bug: 15118640

* Prevent over-stuffing the queue by dropping frames
* Prevent double-drawing in one pulse by RT by deferring
vsync registration until post-draw so that it catches
the next vsync pulse instead of the current one
* Bias vsync race condition towards the UI thread
* Fix queueDelay to actually work

Change-Id: Ibf584258bd93ebcbba058bd976dc8b307f1c6155
/frameworks/base/core/java/android/view/ViewRootImpl.java
2a89b08eb1d48208f52eeaf12cb8b687abe81e1c 23-May-2014 Michael Wright <michaelwr@google.com> Merge "Add ability to request unbuffered dispatching."
797b95b26bbb7557678af78b9a2a61830158920f 21-May-2014 Chris Craik <ccraik@google.com> Define light position (using new lighting spec) in Java

Also updates the relative shadow strengths.

Change-Id: I6cac7275d38df98aea9f0dda463cd7207102986a
/frameworks/base/core/java/android/view/ViewRootImpl.java
d27a69c40d285c8911dac19c22926ec279110e51 17-May-2014 Michael Wright <michaelwr@google.com> Merge "Add InputStage debugging logs"
9d744c731295e6ba9b0031f3fb63b0df13e591d8 19-Feb-2014 Michael Wright <michaelwr@google.com> Add ability to request unbuffered dispatching.

While in general input batching has a lot of benefits, some apps would prefer
the input system not batch at all. This is typically because they do some of
the batching as part of their own input processing, as is the case with Chrome.

Bug: 12973909
Change-Id: I2e0c2b4c51bacc06f88245c528aa8849e4c4dab2
/frameworks/base/core/java/android/view/ViewRootImpl.java
44ac42a6c9c3aa2614ef2369cda2e3de989c1fe0 16-May-2014 John Reck <jreck@google.com> Add missing fence()

Bug: 14995924

Change-Id: I991fe74f01468b1b7e34aee0455dc419637f5c8d
/frameworks/base/core/java/android/view/ViewRootImpl.java
06a7925a2e5ac604b57c3b2855010558fd7bc46b 06-May-2014 Michael Wright <michaelwr@google.com> Add InputStage debugging logs

Change-Id: I0cd606b0c43ec9ab34f006b750e77bc312f66439
/frameworks/base/core/java/android/view/ViewRootImpl.java
ae493d967ff47312f7b6d80fdd67377c73214a5e 08-May-2014 John Reck <jreck@google.com> Merge "Allow all loopers to be RT-accelerated"
030d619aaab044491381e72f222cc9ba8dabcc19 08-May-2014 John Reck <jreck@google.com> Allow all loopers to be RT-accelerated

Bug: 14445956

Change-Id: I03e92642aa118db5c7fefa1f09c3a5bde6ea671d
/frameworks/base/core/java/android/view/ViewRootImpl.java
ef27453cf71e331e4076df5e5c665b06d5c3e050 07-May-2014 John Reck <jreck@google.com> Merge "Cleanup attachFunctor"
832b151465ed81c43e59891d5eebe62128b21fbb 07-May-2014 John Reck <jreck@google.com> Cleanup attachFunctor

Bug: 13961296

Change-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d
/frameworks/base/core/java/android/view/ViewRootImpl.java
63a06673253914510bbeebd500655008682dade1 07-May-2014 John Reck <jreck@google.com> Implement TODO(romainguy)

Bug: 14277445

Change-Id: Id52d6f7fcc023000adcc440bd4da67d9a673536b
/frameworks/base/core/java/android/view/ViewRootImpl.java
0a7e8f99970f8adaeaa895343ff0d1863900e9e3 02-May-2014 Alan Viverette <alanv@google.com> Fix build, also always draw accessibility focus rect

BUG: 13873026
Change-Id: Ie8c0b9d6ef10968f64fb33a89e010b9b15e93f8b
/frameworks/base/core/java/android/view/ViewRootImpl.java
e02bfb6fbdaee62694c589758d6ac5f52addd90c 01-May-2014 Michael Wright <michaelwr@google.com> Merge "Add unhandledInputEvent API to ViewRoot"
b36e4f944fe28ce68182f9ec91e5341866b49084 01-May-2014 Adam Powell <adamp@google.com> Add support for hiding action bars on scroll.

Also tweak the nested scrolling API around nested flings and fix a bug
where recursive nested scrolling would stop prematurely.

Change-Id: I561226db878b2493970440a6af3e2332c56a1913
/frameworks/base/core/java/android/view/ViewRootImpl.java
899d70568b565280dd33fa8892e25c5511f95769 24-Apr-2014 Michael Wright <michaelwr@google.com> Add unhandledInputEvent API to ViewRoot

Update WebViewClient to use it instead, and add a new public API,
onUnhandledInputEvent. Note that WebViewClients won't receive this
call back until WebView is updated to use it.

Bug: 14279909

Change-Id: Ied49791b469849f5c4cf4471f2b26c56b03f4961
/frameworks/base/core/java/android/view/ViewRootImpl.java
19db0f036aa889ff05220b630262461e333faa85 29-Apr-2014 Jae Seo <jaeseo@google.com> Merge "Dispatch input events to the TV input"
6a6059a29edf31e65541b3d8927a46f5846fb0a2 18-Apr-2014 Jae Seo <jaeseo@google.com> Dispatch input events to the TV input

TvInputManagerService now creates an InputChannel pair and passes one
end to the app and the other end to the service. Then the TvInputManager
in the app creates an InputEventSender around one end of the channel to
send events and the service creates an InputEventReceiver around the
other end of the channel to receive events.
Most of the newly added code here was borrowed heavily from the IME.

Change-Id: I0bd83847cba0033ccb6f4b6dad267ebeaf5e9c7c
/frameworks/base/core/java/android/view/ViewRootImpl.java
ae738a7a45d710115f8aedacf218d4bfa0b25698 28-Apr-2014 Bo Liu <boliu@google.com> Add invokeFunctor call to ViewRootImpl

BUG: 13961296

Change-Id: Ief8eea0b4c79a64ea76d75daaec176f1b8438581
/frameworks/base/core/java/android/view/ViewRootImpl.java
10ba27734ee6274a772be8d6b1faa703ee3a3d6b 15-Apr-2014 Adam Powell <adamp@google.com> Nested scrolling!

or, "Excuse me, Egon, you said crossing the streams was bad."

Add API for driving a nested scroll from the most deeply nested
applicable scrolling view. The deepest scrolling view dispatches
high-level scrolling events up to cooperative parent views.

Augment ScrollView to support nested scrolling. Next up, more public
framework scrolling views.

Change-Id: I53b5e207fcdece796e08c8592ddb4496b96f600e
/frameworks/base/core/java/android/view/ViewRootImpl.java
05e858400adee0f579b1e27e321b48bd55843fbd 23-Apr-2014 John Reck <jreck@google.com> Add missing try/finallys

Change-Id: I32be65f5a46768449f26b69f72f502acd1e72769
/frameworks/base/core/java/android/view/ViewRootImpl.java
3da2834f0ee77268e0076ad1e24f319635c38b89 23-Apr-2014 Michael Wright <michaelwr@google.com> Add ViewRootImpl#unhandledInputEvent API stub.

Doesn't actually work yet for non-KeyEvents.

Change-Id: I3482ff780a9a7aef8ae27436f91a3619490b369f
/frameworks/base/core/java/android/view/ViewRootImpl.java
49d8fa473970265a182549cc1673719e5101320e 21-Apr-2014 Adam Lesinski <adamlesinski@google.com> am a281be67: am 370cda70: Merge "Allow InputEvents to propagate w/o IME" into klp-modular-dev

* commit 'a281be67030a834d455a84ce62c173140564211a':
Allow InputEvents to propagate w/o IME
a281be67030a834d455a84ce62c173140564211a 21-Apr-2014 Adam Lesinski <adamlesinski@google.com> am 370cda70: Merge "Allow InputEvents to propagate w/o IME" into klp-modular-dev

* commit '370cda7074a02139fa5374bbdd94c37be376ca7a':
Allow InputEvents to propagate w/o IME
c0f6eed40fd2fc0922de34d691d31f0e320ca9b7 29-Oct-2013 Adam Lesinski <adamlesinski@google.com> Allow InputEvents to propagate w/o IME

If no IME was present, InputEvents such as KeyEvents
would simple be dropped instead of going through
to the Activity's View hierarchy.

Change-Id: I9de25bdbf5d1564b77b25679e19dae18591a8c1c
/frameworks/base/core/java/android/view/ViewRootImpl.java
f4399e7243c35bef3eabfd20582246818a0bbbd3 18-Apr-2014 Michael Kolb <kolby@google.com> resolved conflict for merge from d42eeab2 to master

Change-Id: I41bd238f0628110c923b79259de4cd11a783340c
d42eeab20fea37fbf92b5c1a4f6f194ab9303083 18-Apr-2014 Michael Kolb <kolby@google.com> am 4abbd0a6: Merge "Populate isRound from config.xml to WindowInsets" into klp-modular-dev

* commit '4abbd0a685cb418eb3cfc1f030d3091ef394a7e3':
Populate isRound from config.xml to WindowInsets
6642e51ac5d0351f02fc929817603d7371e08e10 17-Apr-2014 Michael Kolb <kolby@google.com> Populate isRound from config.xml to WindowInsets

Change-Id: I41b3aef1322a7cdccdcbc679eb753e0a1e561fad
/frameworks/base/core/java/android/view/ViewRootImpl.java
3d678ad462ee237d86efd9d985eb518817761e05 17-Apr-2014 Adam Powell <adamp@google.com> am 973ddaac: DO NOT MERGE Add isRound to WindowInsets

* commit '973ddaacaef255b8659d35cfe4151dd5b7436138':
DO NOT MERGE Add isRound to WindowInsets
2accbf904f0dfa42f1a776d2e1ea7b01898929c0 17-Apr-2014 Adam Powell <adamp@google.com> Revert the revert of adding isRound to WindowInsets after early merge

This reverts commit 01ebfbd0a0a3a89b563ab6c8c346c669eca39a1a.

Change-Id: I3d5a3523a1505cc3bfd0172c7282a8eda21ae206
/frameworks/base/core/java/android/view/ViewRootImpl.java
01ebfbd0a0a3a89b563ab6c8c346c669eca39a1a 17-Apr-2014 Michael Kolb <kolby@google.com> Revert "Add isRound to WindowInsets"

This reverts commit e5244b5638535964103ca1dfc867442a64243db1.

Change-Id: I6371c718e2189968699e980fd0e7ba91c486aca6
/frameworks/base/core/java/android/view/ViewRootImpl.java
973ddaacaef255b8659d35cfe4151dd5b7436138 16-Apr-2014 Adam Powell <adamp@google.com> DO NOT MERGE Add isRound to WindowInsets

isRound allows a view to determine whether the window it is contained
within obscures the corners of the window content. This allows views
aware of this property to adapt their layout accordingly.

Switch ViewRootImpl to use dispatchApplyInsets instead of
fitSystemWindows.

Change-Id: Ic3e3936b73815b2593cb9720af1a309fbd18406e

Conflicts:
core/java/android/view/ViewRootImpl.java
/frameworks/base/core/java/android/view/ViewRootImpl.java
e5244b5638535964103ca1dfc867442a64243db1 16-Apr-2014 Adam Powell <adamp@google.com> Add isRound to WindowInsets

isRound allows a view to determine whether the window it is contained
within obscures the corners of the window content. This allows views
aware of this property to adapt their layout accordingly.

Switch ViewRootImpl to use dispatchApplyInsets instead of
fitSystemWindows.

Change-Id: Ic3e3936b73815b2593cb9720af1a309fbd18406e
/frameworks/base/core/java/android/view/ViewRootImpl.java
15b0bef9250e084bfbceb388716d28ed62ca018f 12-Apr-2014 Jeff Brown <jeffbrown@google.com> am 9e2fde9c: am d912e1f6: Use the display\'s actual state in the view hierarchy.

* commit '9e2fde9c8a3557d6e8d1f3971a421ecdf5c2ce07':
Use the display's actual state in the view hierarchy.
9e2fde9c8a3557d6e8d1f3971a421ecdf5c2ce07 12-Apr-2014 Jeff Brown <jeffbrown@google.com> am d912e1f6: Use the display\'s actual state in the view hierarchy.

* commit 'd912e1f6a111fb33118d116bd72da1a328041bca':
Use the display's actual state in the view hierarchy.
d912e1f6a111fb33118d116bd72da1a328041bca 12-Apr-2014 Jeff Brown <jeffbrown@google.com> Use the display's actual state in the view hierarchy.

Previously, the view hierarchy would suppress drawing whenever the
PowerManager.isScreenOn() method returned false. However, this method
really describes the interactive state of the device rather than the
actual display state. This is especially a problem when there are
multiple displays but it also breaks drawing while in doze mode.

This change makes the view hierarchy consider the actual state of the
display instead on an individual basis.

Bug: 13133142
Change-Id: I69870b6b14a3504607a30562aa48c3452f777c1f
/frameworks/base/core/java/android/view/ViewRootImpl.java
bc0cc0220b830df54c8ed41d0b53daffd7f6c991 12-Apr-2014 John Reck <jreck@google.com> Support onHardwarePostDraw in ThreadedRenderer

Bug: 13958485

Change-Id: Ie9c7af7cee582850a7f0a3d891aa3685c230cfc7
/frameworks/base/core/java/android/view/ViewRootImpl.java
8e1f918738abf70a4dc86dbb12b386a9deea37f8 10-Apr-2014 John Reck <jreck@google.com> Merge "Switch DisplayListData to a staging model"
8de65a8e05285df52a1e6f0c1d5616dd233298a7 10-Apr-2014 John Reck <jreck@google.com> Switch DisplayListData to a staging model

Bug: 13912977

Change-Id: I5b2f664e797be22a58300964f57ceb4fab60528c
/frameworks/base/core/java/android/view/ViewRootImpl.java
f7d9c1dc84671d4e99657ef071d275700d85bb11 09-Apr-2014 John Reck <jreck@google.com> Fix ThreadedRenderer.setEnabled()

Bug: 13914116
Fixes lifecycle issues around setEnabled where ThreadedRenderer
was reporting as being enabled before it had a Surface. This is
incorrect.

Also fix some EGL lifecycle issues

Change-Id: I12ebb279707f9b533a570b61d68735d858b560bf
/frameworks/base/core/java/android/view/ViewRootImpl.java
28ad7b52e038ef0cdd89f753d9839444a434b299 08-Apr-2014 John Reck <jreck@google.com> Fence on draws that are reported

Change-Id: Ib2ec16cbda40f40df1710bdc868869ea8301f17e
/frameworks/base/core/java/android/view/ViewRootImpl.java
55da62288dcec75c34721a59d71f917dcb8a62b4 03-Apr-2014 Ben Murdoch <benm@android.com> am 14424043: am 369a0057: Merge "Update ViewRootImpl for 64bit functor type."

* commit '14424043b9c20edf639004e05fe8e9264a2e66f5':
Update ViewRootImpl for 64bit functor type.
a8b937115ac3bf047c8fc6c750f052fd633c5dd8 02-Apr-2014 John Reck <jreck@google.com> Merge "Revert "Force-enable hardware acceleration for apps""
dd58e797aa453f468232c6a5949a37e4691f309e 02-Apr-2014 John Reck <jreck@google.com> Revert "Force-enable hardware acceleration for apps"

This reverts commit 2a0901107443685ef2f2a55d0b62ddcc6cf183ba.

Change-Id: I47c58b7251411432bd6a3eeb6fe567385b1c084f
/frameworks/base/core/java/android/view/ViewRootImpl.java
cf61c9b71faa053f407430fde043b4672c501340 02-Apr-2014 Ben Murdoch <benm@google.com> Update ViewRootImpl for 64bit functor type.

Change-Id: Ie9020f0276c58ebf0977e4aef725fbc26aaf67b2
/frameworks/base/core/java/android/view/ViewRootImpl.java
64a12e177de64ae5d907e3020ea3f37cc96ee325 29-Mar-2014 Chris Craik <ccraik@google.com> Update several stale RenderNode variable names

Change-Id: I61c8c66f5a79e3a89ae0d3cffbfd351c05bd6a2b
/frameworks/base/core/java/android/view/ViewRootImpl.java
2a0901107443685ef2f2a55d0b62ddcc6cf183ba 27-Mar-2014 John Reck <jreck@google.com> Force-enable hardware acceleration for apps

Change-Id: Ie45581fac2b6b71aeb7b652485915e2518372efc
/frameworks/base/core/java/android/view/ViewRootImpl.java
1b10869f39978a864cfcc4efc73aefc312d8ed79 19-Mar-2014 Michael Wright <michaelwr@google.com> Generate and respect ACTION_CANCEL for joystick fallbacks. DO NOT MERGE

Also change MotionEvent.PointerCoords bit packing and unpacking
methods to be consistent with BitSets which are now used on the
native PointerCoords object.

Bug: 11480300
Change-Id: Ib18c99b94ac555104c69eac526860aa501e89e03
/frameworks/base/core/java/android/view/ViewRootImpl.java
9adca065148f704187866c53cceda8e0050b1f35 19-Mar-2014 Michael Wright <michaelwr@google.com> Respect ACTION_CANCEL for joystick fallbacks

Also change MotionEvent.PointerCoords bit packing and unpacking
methods to be consistent with BitSets which are now used on the
native PointerCoords object.

Bug: 11480300
Change-Id: Ic6c7ebda5c545d07ea1ed259ca1f1184ccf85f29
/frameworks/base/core/java/android/view/ViewRootImpl.java
845535a76d5348847a827d981ef361d0b18e68ad 21-Mar-2014 Bo Liu <boliu@google.com> Convert a attach/detach functor in ViewRootImpl to x64

Change-Id: I93c1df8abd0ecd1686e392cada099f9864926d33
/frameworks/base/core/java/android/view/ViewRootImpl.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/core/java/android/view/ViewRootImpl.java
f666ad7046c0b1b255835f75aeb7d1391067df93 15-Mar-2014 John Reck <jreck@google.com> Rename DisplayList->RenderNode

Change-Id: Idcca6f26ba6282594789962f5edb3ed53a290fef
/frameworks/base/core/java/android/view/ViewRootImpl.java
ecc7ca53852a395157ac1b45ee6aa4fe13ade3d1 06-Mar-2014 Michael Wright <michaelwr@google.com> resolved conflicts for merge of fa2e53cc to master

Change-Id: Idc54765c28ab7c6c810095aba1ba21d7695e08d5
44fd8d24f761f82d21e9b00932648a1b6bf91449 26-Feb-2014 John Reck <jreck@google.com> DisplayList overhaul

Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
/frameworks/base/core/java/android/view/ViewRootImpl.java
f9a901e1018408ddf9e21105695b2bd5814db1fb 28-Feb-2014 John Reck <jreck@google.com> Avoid running functors after detach

Bug: 10861732

Change-Id: Ida55fff716c37c6ab1c98eef02582282de0034f6
/frameworks/base/core/java/android/view/ViewRootImpl.java
bdffc3ad05180d716cc4b808b292e2262f0cd461 27-Feb-2014 Michael Wright <michaelwr@google.com> Revert Japanese special case fallback keys.

Reverts commits 4567e40eb04589d211af82f2dcb16cb3955c605e and
a977707d6e7006d11cfde045f187e777b31b9e04, which added special case fallbacks
for game controllers in the Japanese locale.

Bug: 12923922
Change-Id: I229126e589e11fb5de86772ef9c59d09723af941
/frameworks/base/core/java/android/view/ViewRootImpl.java
e56e9df5f12b2714d79415e2c5b3f30d58ca7c12 22-Feb-2014 John Reck <jreck@google.com> Add back resize buffer

Bug: 12825810

Change-Id: Ic2329c30524010f54778101853b30f8f8d9eeb6c
/frameworks/base/core/java/android/view/ViewRootImpl.java
40c3ddd3a2462bc41e5fbf4932373ebd83961a6f 20-Feb-2014 Michael Wright <michaelwr@google.com> Merge "Make deliverInputEvent tracing asynchronous"
d2c3adc9c95683d70d1ce798447a86131602b80b 19-Feb-2014 Michael Wright <michaelwr@google.com> Make deliverInputEvent tracing asynchronous

Change-Id: I640ed4003194d6d4b202680e5c8fffc81749d60f
/frameworks/base/core/java/android/view/ViewRootImpl.java
19b6bcfd83eb7fb92ebd06d2fec89e308311f1d0 15-Feb-2014 John Reck <jreck@google.com> Support HardwareLayers in RenderThread

Also has a few HardwareLayer lifecycle fixes

Change-Id: I6308cb05f8f199eed72189ace768013a46815941
/frameworks/base/core/java/android/view/ViewRootImpl.java
8a5dbac349ed5bced0d9509aa5bdcf707df40da2 13-Feb-2014 Michael Wright <michaelwr@google.com> Remove Japanese button swap

Bug: 12923922
Change-Id: I4960d8189e751514a595823d7ed9b273e3ff8eb8
/frameworks/base/core/java/android/view/ViewRootImpl.java
04fc583c3dd3144bc6b718fcac4b3e1afdfdb067 06-Feb-2014 John Reck <jreck@google.com> Refactor HardwareLayer

Defer all the things!
Groundwork to allow hardware layers to work in a renderthread world

Change-Id: Ib3aa47525f393083621254a743dbaa6352f933bd
/frameworks/base/core/java/android/view/ViewRootImpl.java
8eea3ea5591e59f55cbb4f6b2b7e9363a285ced3 04-Feb-2014 Alan Viverette <alanv@google.com> Add APIs for obtaining themed Drawable from Theme, Context

BUG: 12611005
Change-Id: Ic0057be4e4c2d0c61ce02a019b3f7d0625e3a016
/frameworks/base/core/java/android/view/ViewRootImpl.java
4f02bf4eef6af47f35c70c4dda5b7b9523d89ca0 04-Jan-2014 John Reck <jreck@google.com> Native-side proxy

Remove RemoteGLRenderer
Remove reflection-based control

Change-Id: If17c2bbb61c7141986d88c4763def77ed1074985
/frameworks/base/core/java/android/view/ViewRootImpl.java
223622a50db319d634616311ff74267cf49679e7 17-Dec-2013 Alan Viverette <alanv@google.com> Add reveal drawable, APIs for forwarding Drawable focus and touch

Hotspot APIs are hidden pending finalization of how we handle IDs.

BUG: 11416827
Change-Id: Iecacb4b8e3690930d2d805ae65a50cf33482a218
/frameworks/base/core/java/android/view/ViewRootImpl.java
7d2edfc073b4a87f9584e12b0c6e80cffea730f5 11-Dec-2013 John Reck <jreck@google.com> Merge "Unbreak display list debug dumping"
630491973269da1b260e69d6a3f9490b97705037 11-Dec-2013 John Reck <jreck@google.com> Unbreak display list debug dumping

Change-Id: I1c6a79f047b29fa60907f6e128cb843a45b88bff
/frameworks/base/core/java/android/view/ViewRootImpl.java
4a8e5a05bbb344c96bca12bb8d4a768cabbdbce5 10-Dec-2013 Michael Wright <michaelwr@google.com> Merge "Generate locale-aware gamepad fallbacks for webview"
cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fc 05-Nov-2013 John Reck <jreck@google.com> RenderThread work

Hacky prototype needs a private API to enable

Change-Id: I21e0ddf3cdbd38a4036354b5d6012449e1a34849
/frameworks/base/core/java/android/view/ViewRootImpl.java
916b649d06ed34c16b2ee9047f086dff184c03ee 04-Dec-2013 Michael Wright <michaelwr@google.com> Generate locale-aware gamepad fallbacks for webview

Since WebView's input handling is asynchronous its KeyEvents get
re-injected to ViewRootImpl via dispatchUnhandledKey. Make sure these
events generate the new synthetic, locale-aware keys before
using the kcm fallbacks.

Bug: 11193726
Change-Id: I2605f15130ba4bb4ad23c7ad1f3e5edfbc4be99d
/frameworks/base/core/java/android/view/ViewRootImpl.java
fed3f728b7fea15c73d4fda551bd0433dd4f85eb 14-Nov-2013 Alan Viverette <alanv@google.com> Generalize mapping between local and global View coordinates

Change-Id: Ib7f5d51debe2e9773d9ef2fa60a33379b229371a
/frameworks/base/core/java/android/view/ViewRootImpl.java
3083579424785e55ca8f82856a6553ee983c3ffb 07-Nov-2013 John Reck <jreck@google.com> More refactoring

Merge GlRenderer and Gl20Renderer
Move GLRenderer to its own file
Move native methods from HardwareRenderer to GLRenderer

Change-Id: Ib4680b03dd98101b2a428062cc94774ff73baa75
/frameworks/base/core/java/android/view/ViewRootImpl.java
79d81e68aa61fe7b00cdcba433f9f58f255cb368 05-Nov-2013 John Reck <jreck@google.com> Remove dead code

Change-Id: I242eacf68067ffe353802f07d6bfe5bb152fe9d0
/frameworks/base/core/java/android/view/ViewRootImpl.java
efdb985f2eabde8cf9dab3f51254865d59d305f7 01-Nov-2013 Michael Wright <michaelwr@google.com> am 9730fbc0: am cd250cc8: am 17d28ca3: Check view and focus invariants after calling into app

* commit '9730fbc0ea71ee0c41c94cf2772cc9884455c4e1':
Check view and focus invariants after calling into app
17d28ca3d76e943e30bdaafb98596cf35bb45087 01-Nov-2013 Michael Wright <michaelwr@google.com> Check view and focus invariants after calling into app

When we dispatch input events into the actual application, make sure
the input invariants we rely on haven't changed. If they have, we
drop the event and log why.

Bug: 11399505

Change-Id: Id772e41ca41dc332bb02725ab486e3b10a73c220
/frameworks/base/core/java/android/view/ViewRootImpl.java
0160bcbe531eebe882999f041348ce0182fc5bab 29-Oct-2013 Michael Wright <michaelwr@google.com> am 0116f08b: am 961cc671: am 3f836741: Merge "Speculatively schedule input consumption" into klp-dev

* commit '0116f08b387d237c334b10bb0266426e1ab3c793':
Speculatively schedule input consumption
62ce65d6edbc2c34c63b0e2f2fef9cb08e28c783 25-Oct-2013 Michael Wright <michaelwr@google.com> Speculatively schedule input consumption

With the new tuned vsync offset, vsyncs are likely to occur shortly
after the input is received, meaning we will empty the input queue,
and thus won't schedule input consumption until more input is
received. If an application then speculatively posts draw commands to
the main looper faster than 60 hz, it will eventually end up blocking
in eglSwapBuffers. Since we're blocking in eglSwapBuffers, we won't
even schedule consumption until after the current frame (8-16ms), and
it's entirely likely we won't actually get around to consuming input
until after the next frame (another 16 ms of latency). This means we
can often go 16-32ms without processing any input events, causing
very noticeable amounts of jank.

Rather than waiting for the next input event to schedule input
consumption, speculatively schedule it every frame as long as we've
consumed some motion batch during this frame.

Bug: 11398045
Change-Id: I25e46308e00e9f9de00a1d8906f6b0e0f2e845b4
/frameworks/base/core/java/android/view/ViewRootImpl.java
b1eb620219de034b28a0130b07ca05140c4ff830 18-Oct-2013 Jeff Brown <jeffbrown@google.com> am 83bf4404: am 3e3296e5: am 82f31701: Merge "Log view root, input and looper state in bug reports." into klp-dev

* commit '83bf440440309a394f792e3d8a6acb98197d9d7c':
Log view root, input and looper state in bug reports.
5182c780a8b42acd46a06d693ab63a0dd78c6d70 16-Oct-2013 Jeff Brown <jeffbrown@google.com> Log view root, input and looper state in bug reports.

Bug: 10948648
Change-Id: I956cce2a0fb516c02f9bbbc021f6238bcb226891
/frameworks/base/core/java/android/view/ViewRootImpl.java
b45bdac3407a25122e37175ba0b5d8e04dfa0b1d 15-Oct-2013 John Spurlock <jspurlock@google.com> am 5a87a4e3: am 30408434: am f8033360: Merge "Give IMEs the entire screen to use for measuring purposes." into klp-dev

* commit '5a87a4e3554872dced265ee32551656f0a9643ac':
Give IMEs the entire screen to use for measuring purposes.
f8508272adb93b5377edfeb69e85442c3d9ed6d2 15-Oct-2013 John Spurlock <jspurlock@google.com> Give IMEs the entire screen to use for measuring purposes.

IMEs recently gained the ability to layout out under the nav bar,
but our core measuring logic does not give height=WRAP_CONTENT windows
the entire screen height when computing desired window height.

Since IMEs can be identified by type, let them use the entire screen
height for measuring purposes, to properly handle the cases where
space is constrained, making that unaccounted-for nav bar height
important.

Bug:11215678
Change-Id: I1d0b73454c0c629e7d669b9de70641c7e8c4d333
/frameworks/base/core/java/android/view/ViewRootImpl.java
9d343c26063b8981294d85e0a42819b628c022d7 14-Oct-2013 Dianne Hackborn <hackbod@google.com> am f2896e28: am 9e4403d4: am ef53fcc3: Merge "Fix issue #11199654: Action bar enter animation skips frames when cleared by the system" into klp-dev

* commit 'f2896e2897cace31d82d917f73b787a9d87b21cb':
Fix issue #11199654: Action bar enter animation skips frames when cleared by the system
021d243d6d113b114d5e71931e728f2aacb9ca14 14-Oct-2013 Dianne Hackborn <hackbod@google.com> Fix issue #11199654: Action bar enter animation skips frames when cleared by the system

We have become too aggressive about not allowing windows to draw while windw
animations are running, basically not allowing any drawing in any window when
there is any window animation. So if you did a relayout while the status bars
were being animated, your window would stop drawing until that status bar
animation was complete.

This change relaxes those rules in two ways:

- A particular window will only be told to stop updating when *it* is
currently involved in a window animation. So animations in status bars
will not stop app windows from update, and vice versa.

- If a window receives input events while it is in the "do not update"
state, we will immediately terminate that state and start allowing it to
draw. If the user is actually interacting with a window, we don't want
to wait to show feedback.

Change-Id: I72574eec048aee53115b46a78686cf27f42c42f7
/frameworks/base/core/java/android/view/ViewRootImpl.java
13431ad822a6479c8512ea4a6ab799e2f5b46d97 07-Oct-2013 John Spurlock <jspurlock@google.com> am 4818db0f: am b88ede00: am d5102f19: Merge "Transparent system ui flags -> Translucent WM flags." into klp-dev

* commit '4818db0fc5dec465a2cdb76c0faff4750a3a3fff':
Transparent system ui flags -> Translucent WM flags.
bd95740648372449a4d5c164d7050eee352d4c24 03-Oct-2013 John Spurlock <jspurlock@google.com> Transparent system ui flags -> Translucent WM flags.

Migrate View.SYSTEM_UI_FLAG_TRANSPARENT_(STATUS/NAVIGATION) to
WindowManager.LayoutParams.FLAG_TRANSLUCENT_(STATUS|NAVIGATION).

Add associated public attrs for both new window flags:
windowTranslucentStatus
windowTranslucentNavigation

Introduce convenient four new themes that set translucent decor:
Theme.Holo.NoActionBar.TranslucentDecor
Theme.Holo.Light.NoActionBar.TranslucentDecor
Theme.DeviceDefault.NoActionBar.TranslucentDecor
Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor

Update PhoneWindowManager mechanism to plumb these values back to
SystemUI to drive bar mode state.

The new translucent flags come from the top fullscreen window, not
the focused window, so translucency does not change when opening
dialogs.

Imply some window-level system-ui visibility if one or both of these
new flags are present, specifically:
FLAG_TRANSLUCENT_STATUS implies LAYOUT_STABLE, LAYOUT_FULLSCREEN
FLAG_TRANSLUCENT_NAVIGATION implies LAYOUT STABLE, LAYOUT_HIDE_NAV

Rename all associated variable & resource names to use the term
translucent instead of transparent. (Retain the term semi-transparent
for the transient bar style).

Recents activity allowed to inherit translucent decor state via the
new PRIVATE_FLAG_INHERIT_TRANSLUCENT_DECOR. Compensating changes
to use the full screen area more appropriately.

Update keyguard to use new WM flags.

Update docs and various api artifacts.

Sanity-check fixes:
- Toasts and alerts given stable layout.
- Suppress nu-gradient when in transient (hidey) mode.
- New translucent flags use top-fullscreen window, dialogs don't clear.

Bug:10674960
Bug:11062108
Bug:10987178
Bug:10786445
Bug:10781433
Change-Id: If667a55bea4cf5e008549524b9899197fab55ebe
/frameworks/base/core/java/android/view/ViewRootImpl.java
38dc2ad85e4572d6e56f0a98edd97945312f708c 04-Oct-2013 Adam Lesinski <adamlesinski@google.com> am b2db2fbc: am 6d90862f: am d65825ab: Merge "Private flags are masked in correct variable" into klp-dev

* commit 'b2db2fbce33dbcfa52ccb20267ad4897c558c34f':
Private flags are masked in correct variable
95c42974f719d1fac90fc0438eac778e9795681f 02-Oct-2013 Adam Lesinski <adamlesinski@google.com> Private flags are masked in correct variable

Newly added private flags were being masked in the public flag variable
as opposed to the correct privateFlags variable.

bug:11033280
bug:11043194
Change-Id: Idda3a70a083457f3f1b7d4b46d231f4a7e704cf0
/frameworks/base/core/java/android/view/ViewRootImpl.java
49e43291b2120884320441e9519f5f3c74d40cb2 02-Oct-2013 Adam Lesinski <adamlesinski@google.com> am 234c6c8a: am ff7cba54: am 42e9b631: Merge "Make room for new public flags" into klp-dev

* commit '234c6c8aafa4abc440d5bf38aac058b96ba1434c':
Make room for new public flags
d09d5f9e4cb9cd03c47eab0f1e9256dc1e2a7527 02-Oct-2013 Jeff Brown <jeffbrown@google.com> am 10478213: am 5e65adaf: Merge "Reset insets when inset computer is removed." into klp-dev

* commit '10478213759a486524000c4164e4176437afa2d7':
Reset insets when inset computer is removed.
6a591f585909415a1da431a2cc76b7732724037d 02-Oct-2013 Adam Lesinski <adamlesinski@google.com> Make room for new public flags

Moved two hidden flags to private

bug:11033280
Change-Id: Icca867b073aff643eefdaf84df68de86bb6b05ac
/frameworks/base/core/java/android/view/ViewRootImpl.java
2e05ec3235150a93a3459cd260be45f02dadbe84 01-Oct-2013 Jeff Brown <jeffbrown@google.com> Reset insets when inset computer is removed.

When an inset computer is registered with the view tree observer,
we report content insets to the window manager. When an inset computer
is subsequently unregistered, we must take care to clear these insets.

This patch remembers whether the previously computed insets were
non-empty so that it can force insets to be reset when needed.

Bug: 10840662
Change-Id: I4cce5ba64cc5234b98363b025ac4bb42e64349f1
/frameworks/base/core/java/android/view/ViewRootImpl.java
04fa5918453695e674c2c7ca094a992616409424 30-Sep-2013 Michael Wright <michaelwr@google.com> am edb444b4: Merge "Add missing constructor parameter to KeyEvent" into klp-dev

* commit 'edb444b44419def54292cf8325c22697213153fa':
Add missing constructor parameter to KeyEvent
a977707d6e7006d11cfde045f187e777b31b9e04 27-Sep-2013 Michael Wright <michaelwr@google.com> Add missing constructor parameter to KeyEvent

When in the SyntheticKeyHandler, a missing constructor paramater caused the
wrong contstructor to be called. This would cause the device id, scan code and
flags to be incorrect.

Bug: 10966229
Change-Id: Ib84ef88d28c0da517b376c5493a851cf8fe0a9f7
/frameworks/base/core/java/android/view/ViewRootImpl.java
8232eb9c19c9d74e9ec605ad0bf436a76a748f33 27-Sep-2013 Alan Viverette <alanv@google.com> Preserve but don't draw accessibility focus for unfocused windows

BUG: 6472572
Change-Id: Id3d7d76cc59a3d8141d043d6797f176345fd0cbb
/frameworks/base/core/java/android/view/ViewRootImpl.java
77e9a28e2faa36f127231b842476d47f9823a83a 13-Sep-2013 Alan Viverette <alanv@google.com> Add live region politeness to View, AccessibilityNodeInfo

Alters the content change API to contain a bit mask of types of
changes represented by the event. Live regions send CONTENT_CHANGED
events immediately. Removes unused APIs for EXPANDABLE/EXPANDED.

BUG: 10527284
Change-Id: I21523e85e47df23706976dc0a8bf615f83072c04
/frameworks/base/core/java/android/view/ViewRootImpl.java
a86ab640f7bb0bf3cb4eaed80473ca8c5d131903 30-Aug-2013 Igor Murashkin <iam@google.com> Surface: Change OutOfResourcesException to be a runtime exception

- Deprecates SurfaceTexture.OutOfResourcesException, it wasn't used
- Make all JNI code throw only Surface.OutOfResourcesException
- Get rid of redundant SurfaceControl.OutOfResourcesException

Bug: 10566539
Change-Id: I58126260771b9ccff6a69c672ce7719b9f98138d
/frameworks/base/core/java/android/view/ViewRootImpl.java
edaf6af16a5c33557a9c4ed00f9bebdac0dd83aa 07-Sep-2013 Michael Wright <michaelwr@google.com> Merge "Remove tap to click from touch nav devices" into klp-dev
7b4f60deb2819496733c0c85c57c6236900fe0c2 07-Sep-2013 Michael Wright <michaelwr@google.com> Merge "Special case game controller fallback keys for Japan" into klp-dev
f66645671f9c3d8e621296e11fd65941c22f057f 04-Sep-2013 Romain Guy <romainguy@google.com> Don't draw with invalid display lists
Bug #10301674

Change-Id: I900322dcb9b53f0eb82741c94d4ab1eaf939259e
/frameworks/base/core/java/android/view/ViewRootImpl.java
88d7f7992553dde4d140325b306ac9d8f43b9387 28-Aug-2013 Michael Wright <michaelwr@google.com> Remove tap to click from touch nav devices

Bug: 10508608
Change-Id: I842a181e847af41b8401dd9dd7aed3f6af556a39
/frameworks/base/core/java/android/view/ViewRootImpl.java
4567e40eb04589d211af82f2dcb16cb3955c605e 17-Aug-2013 Michael Wright <michaelwr@google.com> Special case game controller fallback keys for Japan

Bug: 10306633
Change-Id: I647fc5286678ddd85599a00e68e2fd70c2c3db49
/frameworks/base/core/java/android/view/ViewRootImpl.java
007751276c210c39bd405ae9fa69854e67e80951 20-Aug-2013 Craig Mautner <cmautner@google.com> Merge "Notify ViewRootImpl when it's safe to modify Canvas." into klp-dev
bc57cd1b248bf23e443581f9fe44167c94699ce8 20-Aug-2013 Craig Mautner <cmautner@google.com> Notify ViewRootImpl when it's safe to modify Canvas.

When Activity.convert{To|From}Translucent() is called the
ViewRootImpl is now notified when it is safe to convert the Canvas
from translucent to opaque and back to translucent. This will make
it possible to save resources when compositing opaque layers.

Fixes bug 10349536.

Change-Id: I7282aee1d54601fb00611d20be204bf164d873f6
/frameworks/base/core/java/android/view/ViewRootImpl.java
46bfc4811094e5b1e3196246e457d4c6b58332ec 17-Aug-2013 Romain Guy <romainguy@google.com> Fix hardware layers lifecycle
Bug #10075732

Hardware layers could survive across EGL terminate events.

Change-Id: Ie8565d55cb29fe6625fa1584d695edfecd37ab5e
/frameworks/base/core/java/android/view/ViewRootImpl.java
973f3b4ebf79c8ce9233e2320d13c2b92d420f93 14-Aug-2013 Alan Viverette <alanv@google.com> Prevent refocus after entering touch mode

BUG: 10210009
Change-Id: I9a5d7016728cc7d1fb1c759708b6df41c81865bb
/frameworks/base/core/java/android/view/ViewRootImpl.java
30f420fd6a74ffa28b351b4aba74d44f5ea48dda 02-Aug-2013 keunyoung <keunyoung@google.com> add local focus mode and input event injection API to Window

- This enables keyboard navigation for window without focus.
- FLAG_LOCAL_FOCUS_MODE puts window into local focus mode.
- Application needs to put window in local focus mode, control focus, and
inject events to make dpad navigation work.
- Window in local focus mode does not interact with window manager or ime
regarding focus related events.
- Also renamed ViewRootImpl.dispatchKey to dispatchInputEvent to allow both key and touch events injection.

Change-Id: I8e8561f29e0dade3797fb7ae3ee7690e6b7f8895
/frameworks/base/core/java/android/view/ViewRootImpl.java
ed7821a60ca80197384b2a4678b6c4ea307457e6 25-Jul-2013 Alan Viverette <alanv@google.com> Use clearFocus() when entering touch mode

Calling unFocus() leaves the view hierarchy in an inconsistent
state. This is okay in ViewGroup, where the state is manually
updated, but causes issues in ViewRootImpl.

BUG: 9983358
Change-Id: Id63e62962d895e6bd4f816f202dcf77254ceab4e
/frameworks/base/core/java/android/view/ViewRootImpl.java
25b0c3096131e532e57f5aac48769430dca42c75 10-Jul-2013 Michael Wright <michaelwr@google.com> Debounce touch navigation taps and button presses

Bug: 8990644
Change-Id: Ib4ef2e2ab699a109c12614c1d64e4b7e63b514b0
/frameworks/base/core/java/android/view/ViewRootImpl.java
8d820ecffdc853aab88cc85bb45bfe72dd2ad893 16-Jul-2013 Svetoslav <svetoslavganov@google.com> Fixing bugs discovered by the CTS tests.

1. Delayed accessibility events sent when a view subtree changes may be
be delivered after accessibility is disabled leading to a crash. It is
possible that accessibility was disabled while we were waiting for
the timeout before sending the event. Added a check before dispatching.

2. When refreshing a cached node the accessibility node info cache was
not using the correct bypass cache argument value and as result was
not getting the latest node but its cached value. We really want to
get the latest state to update the cache.

3. The debugging cache integrity verification logic was incorrectly
removing nodes from the cache while doing its work.

4. Removed the comments for some debug logging.

bug:9857067

Change-Id: I20ee1a6ffa65ad35457b51d3f2dc0bc5d8d784e6
/frameworks/base/core/java/android/view/ViewRootImpl.java
4f09d517c5e61d4dfd34b89a7949897c86853881 01-Jul-2013 Craig Mautner <cmautner@google.com> Remove debug logging.

Bug has been fixed.

Change-Id: Ifda11ac6e83012498855e0c7254c99491b128f04
/frameworks/base/core/java/android/view/ViewRootImpl.java
f1f5054f7aed6c06657955e43a680ed54c463986 28-Jun-2013 Craig Mautner <cmautner@google.com> More debug for 9404689.

Changing focus to PhoneWindow.

Change-Id: I75c2ce6b1a20729daf8d2b7f83b2a871e1a7e642
/frameworks/base/core/java/android/view/ViewRootImpl.java
e7c58b6d7d761b93e785b0a399e5b00fdb82f4ce 13-Jun-2013 Craig Mautner <cmautner@google.com> Add debug for specific bug.

To be removed once the bug is fixed.

Change-Id: Ie273d4503bb0b534af0e9efe8f45c573766e9a74
/frameworks/base/core/java/android/view/ViewRootImpl.java
07f36c738e65b8cc2484107b4f8e3386d45d065d 24-Jun-2013 Craig Mautner <cmautner@google.com> Merge "Add activity token to display system."
48d0d1886731ff19ed3fb47a5997be5df0d1bba8 11-Jun-2013 Craig Mautner <cmautner@google.com> Add activity token to display system.

First step in adding activity specific information to displays.
Replace CompatibilityInfoHolder with DisplayAdjustmentsHolder that
holds an activity token in addition to the CompatibilityInfo.

Change-Id: Ie113cd8dd9c62e0b5311204e039a4829096bea68
/frameworks/base/core/java/android/view/ViewRootImpl.java
27e0bf627883e7042384d34cf37fbedf276ff553 21-Jun-2013 Romain Guy <romainguy@google.com> Safely dispose of the resize buffer

We just ensure there is a valid EGL context before
we destroy the associated layer.
/frameworks/base/core/java/android/view/ViewRootImpl.java
9dafebb8172d767d640c526d717eaef6a52167f3 19-Jun-2013 Svetoslav <svetoslavganov@google.com> Correctly update the source of recurring subtree change accessibility events.

Change-Id: I0b0fd9224a5208b274e5c889a27417ef13579849
/frameworks/base/core/java/android/view/ViewRootImpl.java
e89f48bfb1ed3a2e9241052b665a41fd2a8898cb 18-Jun-2013 Svetoslav <svetoslavganov@google.com> Crash in ViewRootImpl when accessibility is on.

We fire view subtree mutation events every X amount of time.
It was possible that the runnable that fires an event to be
scheduled more than once while this should not happen. As
a result there was a crash since we did not expect to have
a second run and nullified a reference.

bug:9422804

Change-Id: I914e163b026cd217e1536ab0ed3a6b11113c2c73
/frameworks/base/core/java/android/view/ViewRootImpl.java
8f303ad97007a9b38d6d927353c1fba812879ae5 14-Jun-2013 Craig Mautner <cmautner@google.com> Complete doDie() before executing addView().

If WindowManager.addView() is called soon after
WindowManager.removeView() then the MSG_DIE in the ViewRootImpl
mHandler queue may not have had time to execute. This will cause
WindowManagerGlobal to throw an exception since the DecorView
is being added before it has been removed.

This fix detects that situation by saving all Views that are queued
up for ViewRootImpl.doDie(). If addView() is called for one of these
Views then doDie() is called immediately and not called when MSG_DIE
eventually makes its way through the queue.

This change also makes doDie() non-reentrant by only allowing it to
carry out its functions the first time it is called. This keeps
dispatchDetachedWindows() from causing destruction by recursively
calling back into doDie(). This is usually caused by calling
dismissDialog() from within dispatchDetachedWindow().

Fixes bug 9404689.
Fixes bug 9406261.

Change-Id: Id4fc8054e273215d82366428fef51b9ba98385fe
/frameworks/base/core/java/android/view/ViewRootImpl.java
4969fecf074c3e38dc560aaa283868ea728be946 14-Jun-2013 Romain Guy <romainguy@google.com> Merge "Fix possible NPE when a ViewRoot doesn't have a view"
70d4c5a0fe7f3411254df99b8e84b8e633d1fd05 14-Jun-2013 Romain Guy <romainguy@google.com> Fix possible NPE when a ViewRoot doesn't have a view

Change-Id: I8f76a657fa44fc5c7e0bec3e609eaf49e269910f
/frameworks/base/core/java/android/view/ViewRootImpl.java
f76c17f0cb97bfe0b8751012ba70027b6edc07fd 13-Jun-2013 Craig Mautner <cmautner@google.com> Merge "Add debug for specific bug."
9e105e0a9a2fa5ca38073ed4fba0ec7fae2d5c39 13-Jun-2013 Craig Mautner <cmautner@google.com> Add debug for specific bug.

To be removed once the bug is fixed.

Change-Id: I83bd5b9fd722826c59b1178303fc4e7feb8eefd2
/frameworks/base/core/java/android/view/ViewRootImpl.java
405436021da156fbe3c5d4de48bdefa564cf7fc0 13-Jun-2013 Romain Guy <romainguy@google.com> Restore buildLayer()'s old behavior; it's synchronous again
Bug #9193833

Change-Id: I4ee07e65c0a8967f0b55da030ecaad6dfc46136f
/frameworks/base/core/java/android/view/ViewRootImpl.java
6b1d5a4ff220378407e19b7733e727be88b41376 10-Jun-2013 Svetoslav <svetoslavganov@google.com> Merge "Notification for changed subtree in accessibility mode not fired properly."
00dbe81fea7be57ee2ff8a97844faf1bc15a427f 10-Jun-2013 Svetoslav <svetoslavganov@google.com> Notification for changed subtree in accessibility mode not fired properly.

We fire notifications that the a view subtree changed for accessibility.
In some cases the notifications were fired if accessibility is not
enabled. This is now fixed. Also the runnable for making the recurring
subtree change was not dequeued if it was pending but we received a
request which we decided to run immediately.

bug:9337912

Change-Id: I27401b3d11f81c653e8761a704ee530263b08c3a
/frameworks/base/core/java/android/view/ViewRootImpl.java
f38fd8784487c72983b061fb41b2aef656ccf265 10-Jun-2013 Romain Guy <romainguy@google.com> am 7a6e1297: am 8d8fc469: Merge "Don\'t orphan footers with transient state Bug #8725945" into jb-mr2-dev

* commit '7a6e129759672f0c1b0ce462d389c0f469e7348f':
Don't orphan footers with transient state Bug #8725945
b7e0f7942b97c1f88f4aa2338cbf3623fdfdad97 08-Jun-2013 Romain Guy <romainguy@google.com> Don't orphan footers with transient state
Bug #8725945

Selecting text in an EditText causes the View to have transient
state. This would in turn cause the View to be removed from its
ListView parent. When removed, the EditText would lose its
AttachInfo, causing all sorts of problems. Headers and footers
must not be removed, only detached. This is the part of the fix
in AbsListView.

Fixing AbsListView triggered a second bug: when a View is removed
from the Window manager, it would keep its parent assigned, thus
making it impossible to add it again to the window manager. When
a ViewRootImpl goes through doDie(), it must set its content view's
parent to null to properly cleanup.

Change-Id: I0489daa74f8f7fcf85526f0928f8925ec30d4f42
/frameworks/base/core/java/android/view/ViewRootImpl.java
494cb689d09a82025b9d892241e62aa149ce3239 07-Jun-2013 Svetoslav <svetoslavganov@google.com> Merge "Optimizing AccessibilityNodeInfo caching."
05eb730ca42eec3a40f916062af7442218135303 04-Jun-2013 Craig Mautner <cmautner@google.com> Delay removal of windows from WindowManager

When relaunching activities the window manager clears out all windows
by calling a ViewRootImpl.die() in a deferred fashion. Then it
immediately deletes the ViewRootImpl and its view from its list
of windows. When the die() is eventually executed it calls
dispatchDetachedFromWindow() which tries to remove the previously
removed windows causing an Exception to be thrown.

This change waits to remove the windows until after die() has been
completed. Fixes bug 8253030.

Change-Id: I5b41be1c6b776e32128c064267653db98bd95292
/frameworks/base/core/java/android/view/ViewRootImpl.java
6254f4806dd3db53b7380e77fbb183065685573e 05-Jun-2013 Svetoslav <svetoslavganov@google.com> Optimizing AccessibilityNodeInfo caching.

1. Before we were firing an accessibility event from the common
predecessor of views with accessibility related state changes
every X amount of time. These events designate that the tree
rooted at the source is invalid and should not be cached.
However, some of the state changes do not affect the view tree
structure and we can just refresh the node instead of evicting
and recaching nodes infos for views that did not change. Hence,
we need a way to distinguish between a subtree changed over a
node changed.

Adding a new event type will not work since if say two siblings
have local changes and their predecessor fires a window state
change event, the client will drop the subtree rooted at the
parent including the two views with changes. Subsequent, more
specialized events emitted from the two changed siblings will
be useless since the parent which did not changed is already
evicted from the cache. Conversely, if the specialized events
are fired from the two siblings with local changes and they
are refreshed in the cache the subsequent window state change
event from the common predecessor will force the refreshed
nodes to be evicted.

Hence, to enable distinction between node being changed and
a subtree baing changed while not changing existing behavior,
we will fire only window content change event with an additional
argument specifying what changed - node or a subtree for now.
Also if the changes are local to a view we fire the window
content changed event from the view. So, the two siblings will
fire such an event independently and the client will know that
these are local changes and can just refresh the node. If the
changes are structural, then we fire the window state change
event from the common predecessor.

2. Added the input type of a text view as one of the properties
reported by an AccessibilityNodeInfo. It is nice to prompt the
user what input is expected.

3. Added a bundle for optional information to AccessiiblityNodeInfo.
For example, it will be used for putting web specific properties
that do not map cleanly to Android specific ones in WebView.

4. AccessibilityInteractionController was not taking into account
whether the current accessibility focused node is shown before
returing it. Hence, a disconnected node would be returned and
caching it puts our cahche in an inconsistent state.

Change-Id: I8ed19cfb4a70bdd7597c3f105487f1651cffd9e0
/frameworks/base/core/java/android/view/ViewRootImpl.java
608094041177193dcce7a91e8dc96a2556d29bfd 23-May-2013 Romain Guy <romainguy@google.com> Merge "Add PerfHUD ES profiling capabilities"
e9bc11f7121dbe373b0cbe5779ee6a12d824492c 23-May-2013 Romain Guy <romainguy@google.com> Add PerfHUD ES profiling capabilities

The eglGetSystemTimeNV extension can be used to enable profiling
in PerfHUD ES. When the delta of two calls to eglGetSystemTimeNV
equals 0, we now cancels display lists updates. This allows the
tool to redraw the same frame several times in a row to run its
analysis.

For better results profiling should only be attempted after
setting viewroot.profile_rendering to true using adb shell
setprop.

Change-Id: I02e3c237418004cff8d6cb0b9a37126efae44c90
/frameworks/base/core/java/android/view/ViewRootImpl.java
0c63d7c239b9288065a11543a0f2cdeb8a0c293f 22-May-2013 Romain Guy <romainguy@google.com> am 469cc57c: am 2f35d244: Merge "Avoid extraneous EGL surface allocations Bug #8667873" into jb-mr2-dev

* commit '469cc57ca77687420246dd679e94eb242fcec41d':
Avoid extraneous EGL surface allocations Bug #8667873
370ab062a0a18723531258896b352d5f5dd55ae7 21-May-2013 Romain Guy <romainguy@google.com> Avoid extraneous EGL surface allocations
Bug #8667873

windowShouldResize means we need to layout the window, it doesn't mean
the dimensions of the surface have changed. We should only check the
width and the height. With this fix we can avoid a surface allocation
every time the window shade is opened or closed.

Change-Id: I8afe97b820a865723f2aab7a5aa4ddc8eaaec6e1
/frameworks/base/core/java/android/view/ViewRootImpl.java
82f92ee5bddbb03f4efe348288150d133ab52e87 09-May-2013 Michael Jurka <mikejurka@google.com> am 7741b63c: am 6dee0a0f: Merge "Fix bug where thumbnails flashed more often in Recents" into jb-mr2-dev

* commit '7741b63c5a8e14b5123c4b735dc768cf55fa2ed5':
Fix bug where thumbnails flashed more often in Recents
5e6fbf269425ea182b8a46e6a33848e1645197f6 09-May-2013 Alan Viverette <alanv@google.com> am fa4c935e: am 239a0c0e: Ensure ViewRootImpl.setAccessibilityFocus() doesn\'t crash when reentrant.

* commit 'fa4c935edcfa09bb53a3aac411a285842a00ddee':
Ensure ViewRootImpl.setAccessibilityFocus() doesn't crash when reentrant.
f42d9010f1c7b47ca9d5e395c767eecf4d284daa 08-May-2013 Michael Jurka <mikejurka@google.com> Fix bug where thumbnails flashed more often in Recents

Bug: 8867698

Change-Id: I2773601d83507dbb55c3a1d0b723e3853e22d352
/frameworks/base/core/java/android/view/ViewRootImpl.java
239a0c0e6a6fc36025fdb1c662e1c7acaec144bb 08-May-2013 Alan Viverette <alanv@google.com> Ensure ViewRootImpl.setAccessibilityFocus() doesn't crash when reentrant.

Internal state must be cleared before calling any methods on the focus
host, since the method may be called again from the host and attempt to
recycle the same AccessibilityNodeInfo twice.

BUG: 8856860
Change-Id: I0410989fd6f3ce3ce29de8edebdfbf3847188843
/frameworks/base/core/java/android/view/ViewRootImpl.java
3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9 18-Apr-2013 Romain Guy <romainguy@google.com> Pack preloaded framework assets in a texture atlas

When the Android runtime starts, the system preloads a series of assets
in the Zygote process. These assets are shared across all processes.
Unfortunately, each one of these assets is later uploaded in its own
OpenGL texture, once per process. This wastes memory and generates
unnecessary OpenGL state changes.

This CL introduces an asset server that provides an atlas to all processes.

Note: bitmaps used by skia shaders are *not* sampled from the atlas.
It's an uncommon use case and would require extra texture transforms
in the GL shaders.

WHAT IS THE ASSETS ATLAS

The "assets atlas" is a single, shareable graphic buffer that contains
all the system's preloaded bitmap drawables (this includes 9-patches.)
The atlas is made of two distinct objects: the graphic buffer that
contains the actual pixels and the map which indicates where each
preloaded bitmap can be found in the atlas (essentially a pair of
x and y coordinates.)

HOW IS THE ASSETS ATLAS GENERATED

Because we need to support a wide variety of devices and because it
is easy to change the list of preloaded drawables, the atlas is
generated at runtime, during the startup phase of the system process.

There are several steps that lead to the atlas generation:

1. If the device is booting for the first time, or if the device was
updated, we need to find the best atlas configuration. To do so,
the atlas service tries a number of width, height and algorithm
variations that allows us to pack as many assets as possible while
using as little memory as possible. Once a best configuration is found,
it gets written to disk in /data/system/framework_atlas

2. Given a best configuration (algorithm variant, dimensions and
number of bitmaps that can be packed in the atlas), the atlas service
packs all the preloaded bitmaps into a single graphic buffer object.

3. The packing is done using Skia in a temporary native bitmap. The
Skia bitmap is then copied into the graphic buffer using OpenGL ES
to benefit from texture swizzling.

HOW PROCESSES USE THE ATLAS

Whenever a process' hardware renderer initializes its EGL context,
it queries the atlas service for the graphic buffer and the map.

It is important to remember that both the context and the map will
be valid for the lifetime of the hardware renderer (if the system
process goes down, all apps get killed as well.)

Every time the hardware renderer needs to render a bitmap, it first
checks whether the bitmap can be found in the assets atlas. When
the bitmap is part of the atlas, texture coordinates are remapped
appropriately before rendering.

Change-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0
/frameworks/base/core/java/android/view/ViewRootImpl.java
058feb4e1d18bc1fcedac019d2364ebfd9a4c383 23-Apr-2013 Michael Wright <michaelwr@google.com> am 58500051: am 5fe6e4c4: Merge "Rewrite input handling for native applications" into jb-mr2-dev

* commit '585000515faacc02736f920425ae6c323223ee58':
Rewrite input handling for native applications
a44dd26a75e24cc021802288fb81f4761e47be6b 11-Apr-2013 Michael Wright <michaelwr@google.com> Rewrite input handling for native applications

Bug: 8473020
Change-Id: Ic4353d8924ab877bec21aff8c2dba9fe725bf906
/frameworks/base/core/java/android/view/ViewRootImpl.java
cc6dda77501d0e8dd5ea267f51c02fd120476d28 13-Apr-2013 Mathias Agopian <mathias@google.com> am 4c87edfe: am 1763d6f9: Merge "always trigger a re-draw when updating the transparent region hint" into jb-mr2-dev

* commit '4c87edfe4d2dce71b7b723f25078cd4bd5d48456':
always trigger a re-draw when updating the transparent region hint
1763d6f957163faf6d3b629c36f4e8e90e0e31bd 13-Apr-2013 Mathias Agopian <mathias@google.com> Merge "always trigger a re-draw when updating the transparent region hint" into jb-mr2-dev
54e3d38490b60cd776ad3b988d923241498816e2 13-Apr-2013 Mathias Agopian <mathias@google.com> always trigger a re-draw when updating the transparent region hint

since SF now relies on receiving a frame for latching the
transparent region hint, we make sure we will indeed redraw
something.

Bug: 8581533

Change-Id: Ia12ddf5654a7deeac7628b799bfde4b8c16c992b
/frameworks/base/core/java/android/view/ViewRootImpl.java
ffe0c56c29fb3e981f954cc822dddd84d9e3bbb8 12-Apr-2013 Craig Mautner <cmautner@google.com> am 429664a5: am d5e7b8bf: Merge "Clear test rectangle if previous focus is null." into jb-mr2-dev

* commit '429664a52ab0d024757650a246297ae8224e60dc':
Clear test rectangle if previous focus is null.
d5e7b8bfb4381baa36feb241bc65d4681f664592 12-Apr-2013 Craig Mautner <cmautner@google.com> Merge "Clear test rectangle if previous focus is null." into jb-mr2-dev
26a84dfdd09011d6a93a3758f794e4585bf10c3d 12-Apr-2013 Craig Mautner <cmautner@google.com> Clear test rectangle if previous focus is null.

A bug in FolderEditText or DynamicLayout (b/8600683) was causing
the 'rectangle' parameter passed to scrollToRectOrFocus() to be
roughly 1000 feet to the right of the screen.

This bug is normally masked because the focus found in
mLastScrolledFocus never matches the new focus and consequently
the misleading 'rectangle' is nulled. However, on the first
time in to scrollToRectOrFocus when returning to Launcher
from another app, mLastScrolledFocus is null and the code
skips over the place where 'rectangle' is nulled. Without this
clearing it was determined that 'rectangle' was outside the viewable
area and scrolling not required. This is bug 8547155.

This change causes even null values of mLastScrollFocus to be
compared to the new focus thus masking the bug in all situations.
Bug 8600683 will be fixed in a separate CL.

Fixes bug 8547155.

Change-Id: Ic6cb22c42b0e93a9793dd2babc25727c2ba29155
/frameworks/base/core/java/android/view/ViewRootImpl.java
0f3e023b637fb6cd60ff6b3add527cee29463a27 11-Apr-2013 Michael Wright <michaelwr@google.com> am af543eb0: am 8881455a: Merge "Send joystick key repeat messages to correct handler" into jb-mr2-dev

* commit 'af543eb050546e2197bd54db7cf257e053add4c2':
Send joystick key repeat messages to correct handler
b9618523add13ca3835bbdaf83b8c2313ae277a2 11-Apr-2013 Michael Wright <michaelwr@google.com> Send joystick key repeat messages to correct handler

Change-Id: I7f8dbe21c9088553ad2c5efe70585f516ab78141
/frameworks/base/core/java/android/view/ViewRootImpl.java
54977db25a46edb0fb0467a41498e6aad8380acc 10-Apr-2013 Jeff Brown <jeffbrown@google.com> am 55198db2: am 4dac901f: Rewrite touch navigation dpad synthesis.

* commit '55198db2dbb55d4f9ac18db81cc05c553b6c6d23':
Rewrite touch navigation dpad synthesis.
4dac901f011e7c15882e260441225633a6435e49 10-Apr-2013 Jeff Brown <jeffbrown@google.com> Rewrite touch navigation dpad synthesis.

The new implementation more accurately tracks the velocity
of flings and takes care to avoid obvious discontinuities.
The main goal is for a fling to appear to be a linear
extension of the movement already in progress. The minimum
fling velocity is set to ensure that flings appear to be
fairly smooth despite being discretized.

Use sequences of repeated key events instead of individual
down/up events to represent continuous motions in one
direction which can be helpful for stopping flings at boundaries
such as when flinging the cursor position within a text view.

Compute the movement thresholds based on the physical
size of the touch pad, if known. If not known, we assume a
nominal size.

Support stopping flings with a tap just like we do for
normal touch events elsewhere in the framework.

Moved the detection of ASSIST swipes into the InputReader
where it belongs. These swipes must be detected globally
to ensure consistent behavior across the all applications.

Added a custom protocol in EventHub to enable input device
drivers to override the timestamp of the following events
in a packet. This change enables input device drivers
that have a better idea of when an input event was actually
generated to pass this information to the input system.
Particularly useful with uinput.

Bug: 8583760
Change-Id: I8ef4e827804786d549cfaa00793a2b9dd0fda465
/frameworks/base/core/java/android/view/ViewRootImpl.java
82c0edaad3ff9da2e28cd17520168e603fe394d5 10-Apr-2013 Jeff Brown <jeffbrown@google.com> am f1cee03b: am 678a1252: Split up the event synthesis code by source.

* commit 'f1cee03bf0e5d3144947609a23665d950e385635':
Split up the event synthesis code by source.
678a1252b4f3cdc18d20b411c05a4320d1d9b719 10-Apr-2013 Jeff Brown <jeffbrown@google.com> Split up the event synthesis code by source.

The goal is to better encapsulate this code to make it easier
to maintain and to facilitate some upcoming changes.

Some of the variables have been renamed but the logic is unchanged.

Bug: 8583760
Change-Id: I45501f7dabebcb938e42c386291d615d088a4c8c
/frameworks/base/core/java/android/view/ViewRootImpl.java
8140b05f1e4dfce773ce340b157fccda769b41d2 09-Apr-2013 Jeff Brown <jeffbrown@google.com> am 9acc8c9c: am 97b968b6: Merge "Fix trackball interpretation of precision." into jb-mr2-dev

* commit '9acc8c9c53a4d3adcf3e3f220ea5e4529c3e60a4':
Fix trackball interpretation of precision.
b437a79b050e8928ce7187899b7754f049008085 09-Apr-2013 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of 21dffd5d to master

Change-Id: I37c48dee471c9d43f19c1fe4a01f70db53e2441f
97b968b6b3baf40e8cfd5ff147f81cd81398638a 09-Apr-2013 Jeff Brown <jeffbrown@google.com> Merge "Fix trackball interpretation of precision." into jb-mr2-dev
3a2854bcee08e3af3ca1b042c1fef6ca68f8c70a 09-Apr-2013 Jeff Brown <jeffbrown@google.com> Merge "Queues, queues, queues and input." into jb-mr2-dev
c574b68cbb3d6cf20ef7e73fef9c145de93df3de 09-Apr-2013 Jeff Brown <jeffbrown@google.com> Fix trackball interpretation of precision.

The trackball to dpad synthesis was using the MotionEvent's precision
field to determine a threshold for movement but the calculations
involved did not actually make sense for any value of precision
less than 2.0. This worked fine before since the InputReader
hardcodes the trackball's precision to 6.

Injected trackball events may have a different precision which can
result in the thresholds being set inappropriately. For example,
it was not possible to move focus by one unit at a time when
the precision was set to 1.0.

The old code was probably using precision as a way to set a
threshold based on the trackball moving by some minimum number
of physical ticks, in this case 2. But the code will work just
as well if we set an absolute threshold based on distance
traveled given that the input system is already expected to
normalize the trackball movements before delivering them to the
application.

So stop using precision.

Bug: 8473020
Change-Id: I3c6f7fb1b507f8cf5608b47550e7345fea3352fa
/frameworks/base/core/java/android/view/ViewRootImpl.java
f9e989d5f09e72f5c9a59d713521f37d3fdd93dd 05-Apr-2013 Jeff Brown <jeffbrown@google.com> Queues, queues, queues and input.

Redesigned how ViewRootImpl delivers input events to views,
the IME and to native activities to fix several issues.

The prior change to make IME input event delegation use
InputChannels failed to take into account that InputMethodManager
is a singleton attached to the main looper whereas UI may be
attached to any looper. Consequently interactions with the
InputChannel might occur on the wrong thread. Fixed this
problem by checking the current thread and posting input
events or callbacks to the correct looper when necessary.

NativeActivity has also been broken for a while because the
default event handling logic for joysticks and touch navigation
was unable to dispatch events back into the native activity.
In particular, this meant that DPad synthesis from touch navigation
would not work in any native activity. The plan is to fix
this problem by passing all events through ViewRootImpl as usual
then forwarding them to native activity as needed. This should
greatly simplify IME pre-dispatch and system key handling
and make everything more robust overall.

Fixed issues related to when input events are synthesized.
In particular, added a more robust mechanism to ensure that
synthetic events are canceled appropriately when we discover
that events are no longer being resynthesized (because the
application or IME is handling or dropping them).

The new design is structured as a pipeline with a chain of
responsibility consisting of InputStage objects. Each InputStage
is responsible for some part of handling each input event
such as dispatching to the view hierarchy or to the IME.
As a stage processes an input event, it has the option of
finishing the event, forwarding the event to the next stage
or handling the event asynchronously. Some queueing logic
takes care to ensure that events are forwarded downstream in
the correct order even if they are handled out of order
by a given stage.

Cleaned up the InputMethodManager singleton initialization logic
to make it clearer that it must be attached to the main looper.
We don't actually need to pass this looper around.

Deleted the LatencyTimer class since no one uses it and we have
better ways of measuring latency these days using systrace.

Added a hidden helper to Looper to determine whether the current
thread is the indicated Looper thread.

Note: NativeActivity's IME dispatch is broken by this patch.
This will be fixed later in another patch.

Bug: 8473020
Change-Id: Iac2a1277545195a7a0137bbbdf04514c29165c60
/frameworks/base/core/java/android/view/ViewRootImpl.java
49084108f20e3f3737cb6fa1c1635a6ba348f159 05-Apr-2013 Romain Guy <romainguy@google.com> am 9ff408c1: am faec826b: Merge "Reduce the size of dirty invalidates" into jb-mr2-dev

* commit '9ff408c17be8cccc9820d46b207673be22bfbe84':
Reduce the size of dirty invalidates
faec826bd6051e41e1299cd14d580a4f50f6fe97 05-Apr-2013 Romain Guy <romainguy@google.com> Merge "Reduce the size of dirty invalidates" into jb-mr2-dev
e55945e219dbf4664683a757c5a9d462c98f2e19 05-Apr-2013 Romain Guy <romainguy@google.com> Reduce the size of dirty invalidates

Remove remnants from times long gone. We don't need to redraw the
union of the previous frame's dirty region and the new dirty
region.

Change-Id: I9fb96f99a6a72c2233f9ca563cf6432a42b2b65b
/frameworks/base/core/java/android/view/ViewRootImpl.java
e4d9a01bfc7451afff1ed399a5801c7aa2af2831 29-Mar-2013 Dan Morrill <morrildl@google.com> Phase 1 of refactoring SystemServer.

SystemServer is currently a monolithic class that brings up key system
services. This change is the first phase of refactoring it to be more
configurable. Specifically, it adds a set of on/off switches used to control
startup of individual services. Future plans include finer grained controls
and a more explicit and consistent startup sequence for these services.

Change-Id: I7299f5ce7d7b74a34eb56dffb788366fbc058532
/frameworks/base/core/java/android/view/ViewRootImpl.java
c99d3c1fd618c1f64103b4f39dd95330309be5a3 30-Mar-2013 Chet Haase <chet@google.com> Stop jank from window animations overlapping activity animations

Relaunching a running activity will sometimes cause animations in that
activity to run, causing jank due to too much happening (window animations
on that same window running at the same time).

An earlier fix pauses application rendering while window animations are running,
but only the first time the activity comes up. If the window is animated
after that (such as is the case with re-launching it while it is running
in the background), rendering, and therefore animations, happen as usual,
causing the jank.

The fix is to simply broaden the scope of when application rendering is
paused to include anytime the window is animating.

Issue #8472972 Make app animations play nice with window animations

Change-Id: I1dd8da039fcb4d1faf6c0811bae97ef2847deb84
/frameworks/base/core/java/android/view/ViewRootImpl.java
bf02096088ffff97738e9f9f01054a730d2f219f 29-Mar-2013 Michael Wright <michaelwr@google.com> Finish any event in the current input queue

When the pipelining optimization was added we never updated
handleImeFinishedEvent to look through the whole queue of items, so it was only
looking at the head.

Bug: 8498214
Change-Id: I79c62392a93b47e3e1eab3f4fe54a5c999dfb566
/frameworks/base/core/java/android/view/ViewRootImpl.java
ca3d655d20c13c71972a4475cec3b98efa7dbdd0 27-Mar-2013 Jeff Brown <jeffbrown@google.com> Merge "Use input transport for communications between app and IME." into jb-mr2-dev
c28867a1d67121ce5963de135e3ae2b1dbd9a33d 26-Mar-2013 Jeff Brown <jeffbrown@google.com> Use input transport for communications between app and IME.

The input method manager service now supplies an input channel for
communication while creating an IME session on behalf of the
application.

This change significanly reduces the overhead of IME event dispatch
by using a standard input channel to send input events rather than
using binder. This results in fewer thread context switches
and fewer object allocations.

What's more, the IME may perform additional batching of the motion
events that it receives which may help it catch up if it is
getting behind while processing them.

Bug: 7984576
Bug: 8473020
Change-Id: Ibe26311edd0060cdcae80194f1753482e635786f
/frameworks/base/core/java/android/view/ViewRootImpl.java
40f8f0d1366e8ba47a17376e51c9fc7291ffdc16 26-Mar-2013 Michael Wright <michaelwr@google.com> Deliver key repeats for artificial dpad events

Bug: 8425219
Change-Id: Ib41b06ed40d43f2e30ce2a647871a76cea80177b
/frameworks/base/core/java/android/view/ViewRootImpl.java
53d13667e39f12644d03278c33298351ac68ec26 21-Mar-2013 Michael Wright <michaelwr@google.com> Fix log tags in trackball debugging

Change-Id: I02a623c96aff8b6ffbe11161feea39ad26ba0e83
/frameworks/base/core/java/android/view/ViewRootImpl.java
1a89c5324badd10dac142a5a0c40a203503db65f 23-Mar-2013 Dianne Hackborn <hackbod@google.com> Merge "New media button API." into jb-mr2-dev
961cae92540763226648813d111c5b5c3b0f1597 20-Mar-2013 Dianne Hackborn <hackbod@google.com> New media button API.

This allows sending media buttons to any PendingIntent,
so they can be captured with a registered receiver.

Also add some new ViewTreeObserver APIs; this is all for
a new support library API to watch media buttons while an
app has input focus.

Change-Id: I3c51cef59460662b008c9a2cc87d6a6383c21855
/frameworks/base/core/java/android/view/ViewRootImpl.java
c8a7e54fefbb70341427fe5b384447f30e1816f2 21-Mar-2013 Michael Wright <michaelwr@google.com> Add pipelining optimization to IME dispatching

Rather than wait for the IME to return before sending it the next input event,
send all available input events as soon as we receive them.

Bug: 7984576
Change-Id: Ie0b1086efc4f9e1ececac22afd997829304bf180
/frameworks/base/core/java/android/view/ViewRootImpl.java
95ae9429ee3555f4a1f396da423413ba496bdf33 14-Mar-2013 Michael Wright <michaelwr@google.com> Add tracing for pending queue size

Change-Id: Ib31c2245feca31d0276ef1ebf6e6d237d0297671
/frameworks/base/core/java/android/view/ViewRootImpl.java
b38258f357a7857ce5d53caad0af9c38053ab071 15-Mar-2013 Chet Haase <chet@google.com> Merge "Fix erroneous requestLayout-during-layout issues" into jb-mr2-dev
107a48236ad73cf4627069edbeaa45a189e0d8ac 13-Mar-2013 Chet Haase <chet@google.com> Fix erroneous requestLayout-during-layout issues

In general, calling requestLayout() during layout is a Bad Idea.
However, ListView does this during the normal course of its layout, as it
removes and adds views during layout. However, it handles this properly,
ensuring that the views in its hierarchy are all measured and laid out
properly by the time its layout process is done.

A previous fix to the request-during-layout issue attempted to distinguish
the correct from incorrect behavior by checking whether views had been properly
laid out since the requestLayout() call, and making sure the views were
visible in the hierarchy (parented, attached, and !GONE), since otherwise
the views would not be laid out, the flags wouldn't be cleared, and requests
are superfluous anyway. However, this logic only checked whether the
requesting views were GONE, whereas the check should include the entire
parent hierarchy of the views (since a view with a GONE parent is still not
visible to the user).

This fix adds that additional check and cleans up other parts of the previous
code, such as not bothering to post() requests that occur during the second
layout pass unless those requests are also valid (coming from visible views).

Issue #8370042 Path seems to be in an infinite layout loop

Change-Id: I7aaf701229adfeee349a9a7c9ec14585735ba9f6
/frameworks/base/core/java/android/view/ViewRootImpl.java
e7a9ae8ba0fb7fc61960e3facd0c5534e9ffce1e 09-Mar-2013 Michael Wright <michaelwr@google.com> Add touch navigation input source

Bug: 8276741
Change-Id: I674b9804bf9ae76d694ae7073b54a7d43474a43c
/frameworks/base/core/java/android/view/ViewRootImpl.java
c4aad01cbbb69c916ef323693e1fd0560b0eccba 23-Feb-2013 Dianne Hackborn <hackbod@google.com> Formalize overscan metrics.

The window manager now maintains and reports a new formal
"overscan insets" for each window, much like the existing
content and visible insets. This is used to correctly
position the various UI elements in the various combination
of layout options. In particular, this allows us to have
an activity that is using fitSystemWindows to have the content
of its UI extend out to the visible content part of the screen
while still positioning its fixed UI elements inside the
standard content rect (and the entire window extending all
the way into the overscan area to fill the screen as desired).

Okay, maybe that is not written so clearly. Well, it made
my head hurt too, so suffer!

The key thing is that windows now need to know about three
rectangles: the overall rectangle of the window, the rectangle
inside of the overscan area, and the rectangle inside of the
content area. The FLAG_LAYOUT_IN_OVERSCAN option controls
whether the second rectangle is pushed out to fill the entire
overscan area.

Also did some improvements to debug dumping in the window
manager.

Change-Id: Ib2368c4aff5709d00662c799507c37b6826929fd
/frameworks/base/core/java/android/view/ViewRootImpl.java
52036b19a5f82bc4d75cfcbff99c65df8d25a99b 15-Feb-2013 Romain Guy <romainguy@google.com> Expose display list APIs

The exposed APIs are slightly simpler than the full APIs used internally.
Only APIs useful to applications are exposed.

Change-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54
/frameworks/base/core/java/android/view/ViewRootImpl.java
9dd4c5c6867f8b6de19096d2d68365dccb744c19 09-Feb-2013 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7381967 Add RTL APIs to ViewParent

- add RTL apis to ViewParent
- remove awful and performance bottleneck casts in View during LayoutDirection,
TextDirection and TextAlignment resolutions.

Change-Id: I92a56b16382e13c28c1dad35f6f205620eb01bfe
/frameworks/base/core/java/android/view/ViewRootImpl.java
39938752b368ae282b821a43efbc568c925ecc34 09-Feb-2013 Jeff Brown <jeffbrown@google.com> Fix build break due to merge.

Change-Id: I08c39690ee9de825ff51afc7d102ee622af6ba13
/frameworks/base/core/java/android/view/ViewRootImpl.java
e624e0c70409773df6c3eb274852f9dd7961f025 09-Feb-2013 Jeff Brown <jeffbrown@android.com> am 110fe9b3: am fe1f3a1b: Merge "Fix ViewRootImpl to find missing focus using D-pad."

# By Ki-Hwan Lee
# Via Android Git Automerger (1) and others
* commit '110fe9b303be527c30a8af95b6fb7afac12968b5':
Fix ViewRootImpl to find missing focus using D-pad.
110fe9b303be527c30a8af95b6fb7afac12968b5 09-Feb-2013 Jeff Brown <jeffbrown@android.com> am fe1f3a1b: Merge "Fix ViewRootImpl to find missing focus using D-pad."

# By Ki-Hwan Lee
# Via Gerrit Code Review (1) and Ki-Hwan Lee (1)
* commit 'fe1f3a1beff9f73f6a04bcc35239038a21bc38ff':
Fix ViewRootImpl to find missing focus using D-pad.
ccac8c95577aeb2c327c090678011733fa24fba4 07-Feb-2013 Chris Craik <ccraik@google.com> Merge "Correctly resume profileRendering"
ae4f3204ec2c9251e0e408816e74502079cd1a6c 07-Feb-2013 Chris Craik <ccraik@google.com> Correctly resume profileRendering

Ensure profileRendering reschedules a previously created profiler callback if
disabled and reenabled

Change-Id: I181ac5043966b99bb8d21e69ce4fdd7494102acb
/frameworks/base/core/java/android/view/ViewRootImpl.java
c2293025a25e04b26bf53713d71f85fd9ca5e8e9 07-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: track system windows, monitoring changes.

Change-Id: I273e82bdad66ada3bf0f7ec9176bc304b9ee1ee8
/frameworks/base/core/java/android/view/ViewRootImpl.java
4ef158baa3382909c436cbc31e123ef981387e4e 08-Jan-2013 Ki-Hwan Lee <kihwanl@google.com> Fix ViewRootImpl to find missing focus using D-pad.

By using D-pad, no-focus in non touch mode is rare but legal in a case like below.

1. The first request to get focus for a new activity is handled in the first
performTraversals() call when activity is not ready for a complete view hierarchy.
So there might be no focusable yet.
2. If the activity has some menus, ActionMenuView can be attached to the view hierarchy
in the PhoneWindow.preparePanel() soon.
So there can be focusables but still not focused.

Fixed ViewRootImpl.deliverKeyEventPostIme() to handle this case to resurrect a focus
if there are focusables.

How to reproduce:
(1) Open "API Demos" application -> Views -> Search View
(2) Select "Action Bar" item using the D-pad
(3) Try to focus the Search View, using the D-pad.

Change-Id: Ic379774f0307f168f0ed775d0f6a9078ac5c9713
/frameworks/base/core/java/android/view/ViewRootImpl.java
ef35927abcd089652f87a985dd6dde7afde58b92 01-Feb-2013 Romain Guy <romainguy@google.com> Tag HardwareRenderers with a name to help debugging

The name of the renderer is the same as the window it belongs to.

Change-Id: Ie9adc0a1978afa026923ea41f5540eda6ba65a92
/frameworks/base/core/java/android/view/ViewRootImpl.java
d0fd54648ca6249f56cf469c57181b5a7bbb71d0 29-Jan-2013 Svetoslav Ganov <svetoslavganov@google.com> Merge "Adding UI test automation APIs."
3696779bca4e5bc1b60c056db6f892e72e51a20f 28-Jan-2013 Romain Guy <romainguy@google.com> Reinitialize hardware renderer after eglTerminate()
Bug #8066455

ViewRootImpl was properly detecting that the renderer was not
ready to draw but would simply schedule another frame, thus sending
the systemui into an inifite redraw loop. This change reinitializes
the renderer if needed (if the renderer is requested but not enabled.)

This CL also fixes an issue caused by the default wallpaper. Since it
never calls eglTerminate(), managed contexts are never reclaimed.

Change-Id: Idb8caa672be8ee35f6e6a7e942d9abd8aa100967
/frameworks/base/core/java/android/view/ViewRootImpl.java
80943d8daa6ab31ab5c486d57aea406aa0730d58 02-Jan-2013 Svetoslav Ganov <svetoslavganov@google.com> Adding UI test automation APIs.

This change adds APIs support for implementing UI tests. Such tests do
not rely on internal application structure and can span across application
boundaries. UI automation APIs are encapsulated in the UiAutomation object
that is provided by an Instrumentation object. It is initialized by the
system and can be used for both introspecting the screen and performing
interactions simulating a user. UI test are normal instrumentation tests
and are executed on the device.

UiAutomation uses the accessibility APIs to introspect the screen and
a special delegate object to perform privileged operations such as
injecting input events. Since instrumentation tests are invoked by a shell
command, the shell program launching the tests creates a delegate object and
passes it as an argument to started instrumentation. This delegate
allows the APK that runs the tests to access some privileged operations
protected by a signature level permissions which are explicitly granted
to the shell user.

The UiAutomation object also supports running tests in the legacy way
where the tests are run as a Java shell program. This enables existing
UiAutomator tests to keep working while the new ones should be implemented
using the new APIs. The UiAutomation object exposes lower level APIs which
allow simulation of arbitrary user interactions and writing complete UI test
cases. Clients, such as UiAutomator, are encouraged to implement higher-
level APIs which minimize development effort and can be used as a helper
library by the test developer.

The benefit of this change is decoupling UiAutomator from the system
since the former was calling hidden APIs which required that it is
bundled in the system image. This prevented UiAutomator from being
evolved separately from the system. Also UiAutomator was creating
additional API surface in the system image. Another benefit of the new
design is that now test cases have access to a context and can use
public platform APIs in addition to the UiAutomator ones. Further,
third-parties can develop their own higher level test APIs on top
of the lower level ones exposes by UiAutomation.

bug:8028258

Also this change adds the fully qualified resource name of the view's
id in the emitted AccessibilityNodeInfo if a special flag is set while
configuring the accessibility service. Also added is API for looking
up node infos by this id. The id resource name is relatively more stable
compared to the generaed id number which may change from one build to
another. This API facilitate reuing the already defined ids for UI
automation.

bug:7678973

Change-Id: I589ad14790320dec8a33095953926c2a2dd0228b
/frameworks/base/core/java/android/view/ViewRootImpl.java
ebf7c74361baefb826591bd90cdacd9244a2eb59 18-Jan-2013 Dake Gu <dake@google.com> am 85a06152: am fe88f1be: Merge "Fix bug of SimulatedTrackball" into jb-mr1-aah-dev

* commit '85a06152ce9b7d3a198639eb1918a9c2a3fd34d4':
Fix bug of SimulatedTrackball
f8739b992f53fdd2e4be73ee10716df32434100a 17-Jan-2013 Dake Gu <dake@google.com> Fix bug of SimulatedTrackball

Simulated trackball should not generate KeyEvent if dispatchGenericMotionEvent
returns true

b/8022205

Change-Id: I1857e25407c508c98ef4db85fe146b1e25a0803e
/frameworks/base/core/java/android/view/ViewRootImpl.java
9afb2e1a95b92d5dfb0612bbb606a09aa528ee5d 14-Jan-2013 Jeff Brown <jeffbrown@google.com> Optimize focused input event dispatch in view root. DO NOT MERGE

The efficiency of key, trackball and generic motion event
dispatch is greatly influenced by the IME dispatch cycle.
This change simplifies the dispatch of focused input events
and avoids causing event processing to be requeued on the
handler and delayed unnecessarily.

Bug: 7984576
Change-Id: Id82624a3f32c05efe6ee5c322bd55bf2ab21525d
/frameworks/base/core/java/android/view/ViewRootImpl.java
22a94cb03ad39c5256608e4954fe4e85179d9ed6 15-Jan-2013 Jeff Brown <jeffbrown@google.com> Merge "Optimize focused input event dispatch in view root."
29c0ed2c130521ce1b648dd517a0d25457004de3 14-Jan-2013 Jeff Brown <jeffbrown@google.com> Optimize focused input event dispatch in view root.

The efficiency of key, trackball and generic motion event
dispatch is greatly influenced by the IME dispatch cycle.
This change simplifies the dispatch of focused input events
and avoids causing event processing to be requeued on the
handler and delayed unnecessarily.

Bug: 7984576
Change-Id: Id82624a3f32c05efe6ee5c322bd55bf2ab21525d
/frameworks/base/core/java/android/view/ViewRootImpl.java
149567f9d59a07a9d7793ea455ff4c2586c3ae53 09-Jan-2013 Svetoslav Ganov <svetoslavganov@google.com> Fixing a memory leak in ViewRootImpl and a focus change callback issue.

1. ViewRootImpl was keeping reference to the old focused view so it can
call back the global on focus change listener when another view gets
focus. The stashed reference, however was not cleared which caused a
memory leak if the last focused view was removed from the view tree.
In general keeping additional state for the last focus in ViewRootImpl
is not a good idea since this add complexity due to additional book
keeping work that is required. The view tree already keeps track of
where the focus is and it should be the only place that holds this
data. Since focus does not change that frequently it is fine to look
up the focus since this operation is O(m) where m is the depth of the
view tree. This change removes the duplicate book keeping from
ViewRootImpl and the focus is looked up as needed.

2. ViewRootImpl was calling the global focus change callbacks when focus
is gained, lost, or transferred to another view. This was done in
*ChildFocus methods. In the case of a child losing focus, i.e. in
clearChildFocus, there was a check whether focus searh yields a view
to take focus and if so it did not call back the global focus listener
assuming the the found view will take focus (the view tree gives focus
to the first focusable when a view looses focus). This is not a correct
assumption since some views override methods called as a result of
View.requestFocus that determine what the next focused view should
be. For example, HorizontalScrollView overrides onRequestFocusInDescendants
and changes the direction of the search. In fact focus search does not
take into accound ViewGroup descendant focusability. Hence, the view found
by calling the focus search from the root is not necessarily the one
that will get focus after calling requestFocus. Actually, it is
possible that the focus search will find a view but no view will
take focus. Now the View class is responsible for calling the
global focus listeners which avoids the above problem. Also this
saves book keeping in ViewRootImpl.

bug:7962363

Change-Id: Ic95a18b364e997021f3f6bb46943559aac07d95a
/frameworks/base/core/java/android/view/ViewRootImpl.java
e422737fda48f73cdd74800c9a9b9d15d0186b6d 19-Dec-2012 Justin Koh <justinkoh@google.com> am a90c92a1: am 86903699: Merge "Start RecognitionActivity with an upswipe gesture." into jb-mr1-aah-dev

* commit 'a90c92a1c97830de5e1766bb64ff421a2a50ed56':
Start RecognitionActivity with an upswipe gesture.
cc699b4fe396b3f93d45211d0df6f02baa325b2f 13-Dec-2012 Chet Haase <chet@google.com> Fix for requestLayout-during-layout inefficiencies

An earlier fix made it possible to call requestLayout() during layout
(which is not recommended in most cases outside of a ListView) without
ending up with blank content and internal layout flags in a confused state.
However, that fix incorrectly detected a problem in some cases (such as
ListView practices of adding views during layout) which were actually okay;
as long as you make sure to measure and layout your children properly
before returning from layout(), then it's not a problem. We were improperly
spamming the log with supposed problems, and causing more overhead in correct
cases by running a full request/measure/layout pass after the first layout
pass, all of which is unnecessary in cases where the containers know what
they're doing.

This new fix changes the logic to only cause the second layout pass (and third,
posted to the next frame, if things are really done incorrectly) if the layout-request
flags are still set on the requesting views after the full layout pass is complete.
This situation causes the blank screens we've seen in buggy apps, and is exactly
what we should avoid. However, correct cases (e.g., ListView) will not have these
problems because they run measure/layout correctly after the request calls, which
clears these flags. The upshot is that buggy cases will be detected and compensated for
(by clearing the flags and then running a second request/measure/layout pass, as in the
original fix) and non-buggy cases will be noop'd, going back to their previous, working
logic flow.

The bug below is one of the buggy apps to demonstrate this problem. I noticed that the
original problem (blank screen) is no longer reproducible. I suspect that logic was
added to the app to force a refresh after it is attached. You can still detect the problem
(and the fix) by seeing that prior to the fix (say, on mr1.1) there is a delay of about
a second between the end of the progress bar updates and the showing of content on a
screen that used to just remain blank. With the fix (both the previous version and this
one), the content is updated immediately, because we now handle the buggy request-
during-layout situation in the same frame as it occurs.

Issue #6914123 News and Weather app sometimes loads to a blank screen

Change-Id: I4c34817cc3dd44ba422ff50de4321624c0824d83
/frameworks/base/core/java/android/view/ViewRootImpl.java
05cb363bf3e714d0a5fb1bc97dfed639c9c9f950 12-Dec-2012 Ben Pietrzak <bpietrzak@google.com> Start RecognitionActivity with an upswipe gesture.

Change-Id: I7dd91bef3eb551bb7617307cc9a4777226b5ded7
/frameworks/base/core/java/android/view/ViewRootImpl.java
ee0ff18c36ff27977a868c4a6ea695a21723f52b 04-Dec-2012 Romain Guy <romainguy@google.com> Merge "Optimize onAttachedTo/onDetachedFromWindow"
fbb93fa2f3abf8b50ea945a319c0a190f2aae213 04-Dec-2012 Romain Guy <romainguy@google.com> Optimize onAttachedTo/onDetachedFromWindow

Apps detaching/attaching large subtrees would waste a few milliseconds
dealing with dirty display lists. This change removes the need to do
ArrayList.remove() on every detachedFromWindow().

Change-Id: Icee72516c40d48ff0fd9d6f3128589f99bf61428
/frameworks/base/core/java/android/view/ViewRootImpl.java
2c5f782094c5668a9615e2f9f41063386ae52b28 04-Dec-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Refactoring of the screen magnification feature."
152e9bb81aa5b2ab4637f4b2dae04b3ce89fa891 13-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
3efa7b597c9d95d47c6d31b73da05117d6d5d244 03-Dec-2012 Chet Haase <chet@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
5bb3c730f5ebd2a0db1b02a8981c6fdbea6c1a2e 30-Nov-2012 Romain Guy <romainguy@google.com> Apply dev. settings at runtime
Bug #7434649

Change-Id: I16f00eaa8a5eefd9f9849e196cf2cb1659215390
/frameworks/base/core/java/android/view/ViewRootImpl.java
d075031944171139c1235bbc96c9533eaeeceb08 29-Nov-2012 Romain Guy <romainguy@google.com> Improve profiling by using Choreographer

This will avoid jank and lead to better measurements.

Change-Id: Id18587a0a0b7d45adb3a65dfc427800565cc5d0b
/frameworks/base/core/java/android/view/ViewRootImpl.java
abae2a1b891772d36d8f781adfcc8969e551691f 28-Nov-2012 Svetoslav Ganov <svetoslavganov@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
d5a835259d1dd79893f043ce4813e3d24b6e54d5 22-Nov-2012 Chet Haase <chet@google.com> 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
/frameworks/base/core/java/android/view/ViewRootImpl.java
b104b202bdf7998018b21dcad96059eded9f7ef9 02-Nov-2012 Svetoslav Ganov <svetoslavganov@google.com> am cb5c66b9: am 5e27e55a: am 28e8f76c: Merge "Cannot click on partially visible views in touch exploration." into jb-mr1-dev

* commit 'cb5c66b9c1602b750bb481641253604ba3d59ac6':
Cannot click on partially visible views in touch exploration.
5e27e55aecea63c6cf0477ab75f4c39b7b68c9cd 02-Nov-2012 Svetoslav Ganov <svetoslavganov@google.com> am 28e8f76c: Merge "Cannot click on partially visible views in touch exploration." into jb-mr1-dev

* commit '28e8f76c50b26efd657bc0740fee25ac18520f9e':
Cannot click on partially visible views in touch exploration.
a94c3194ffa896632f025b983ca57095cd4ba277 01-Nov-2012 Svetoslav Ganov <svetoslavganov@google.com> Cannot click on partially visible views in touch exploration.

1. In touch exploration mode the system clicks in the center of the
accessibility focus rectangle. However, if this rectangle is only
partially shown on the window or on the screen the system may not
be able to perform the click, if the accessibility focus center
is not on the screen, or click on the wrong window, if the access
focus center is outside of the window.

This change clips the rectangle to the window bounds which and the
display bounds. This will ensure no clicks are sent to the wrong
window and no clicks are sent outside of the screen.

bug:7453839

Change-Id: I79f98971e7ebcbb391c37284467dc76076172c5f
/frameworks/base/core/java/android/view/ViewRootImpl.java
990c1b7f3e8f3f63f3362c8eae263ddbb7050f95 24-Oct-2012 Craig Mautner <cmautner@google.com> am a170dcb7: am 9e96c69e: am 6757572b: Merge "Add throwing InvalidDisplayException from addView." into jb-mr1-dev

* commit 'a170dcb7b6908d0ea4dd7c2717d2d2b1da59262c':
Add throwing InvalidDisplayException from addView.
9e96c69e3e9ebdb820acd347b4691c32a5d76be4 24-Oct-2012 Craig Mautner <cmautner@google.com> am 6757572b: Merge "Add throwing InvalidDisplayException from addView." into jb-mr1-dev

* commit '6757572b39d3802c4d7b69467b5ebf69a96c208b':
Add throwing InvalidDisplayException from addView.
6757572b39d3802c4d7b69467b5ebf69a96c208b 24-Oct-2012 Craig Mautner <cmautner@google.com> Merge "Add throwing InvalidDisplayException from addView." into jb-mr1-dev
16a5ad8345f2518947bbd47f072a02fd97dd1c67 24-Oct-2012 Chet Haase <chet@google.com> am 4a82a0fc: am f5fa64f2: am fbba753f: Merge "Handle offscreen animations correctly" into jb-mr1-dev

* commit '4a82a0fc09f4743b59b5de483329fb76e60aab07':
Handle offscreen animations correctly
5d7cc93625b0cbad545082dab39a391e96047832 24-Oct-2012 Romain Guy <romainguy@google.com> am be815669: am 9389d447: am b75ade9c: Merge "Use existing display list to render the resize buffer Bug #7400903" into jb-mr1-dev

* commit 'be815669d1c41a95f79222aaa7caa4462bddfb2d':
Use existing display list to render the resize buffer Bug #7400903
f5fa64f24b0ee6aa53ac2803590e8729122c445b 24-Oct-2012 Chet Haase <chet@google.com> am fbba753f: Merge "Handle offscreen animations correctly" into jb-mr1-dev

* commit 'fbba753f62f13a12d9287c67921d1ea60e92768d':
Handle offscreen animations correctly
fbba753f62f13a12d9287c67921d1ea60e92768d 24-Oct-2012 Chet Haase <chet@google.com> Merge "Handle offscreen animations correctly" into jb-mr1-dev
9389d447c175b4ef9fb85cd296f53cf24be4fd7d 24-Oct-2012 Romain Guy <romainguy@google.com> am b75ade9c: Merge "Use existing display list to render the resize buffer Bug #7400903" into jb-mr1-dev

* commit 'b75ade9cce02dffb967ff4719381254585074c58':
Use existing display list to render the resize buffer Bug #7400903
6018aeec27914f138f36b00d8f00136a87562fd3 23-Oct-2012 Craig Mautner <cmautner@google.com> Add throwing InvalidDisplayException from addView.

Throw an InvalidDisplayException to addView if the display being
added to has been removed. Handle this exception in Dialog.show()
by removing the view after it has been added and rethrow the
exception from there.

Add javadoc to ViewManager.addView and Presentation.show explaining
the new exception and how best to handle it.

Bug: 7368565 partially fixed. It remains for the Videos app to
handle Presentation.show throwing the InvalidDisplayException.

Change-Id: Ib4303c9b3f7bf7a0cfa95d19bd60a0c128658c48
/frameworks/base/core/java/android/view/ViewRootImpl.java
3561d062ff01f3455c984e4cfcd101a64a2e902f 23-Oct-2012 Chet Haase <chet@google.com> Handle offscreen animations correctly

A bug in software rendering caused animations on views that are offscreen
to not get drawn, therefore the animation doesn't continue (since old-style
animations depend on the logic in the drawing code to keep running). Fix is
to special case the isAnimating case in ViewRoot to go ahead and schedule
a traversal even if the dirty rect does not intersect with the visible region.

Issue #7396035 Animations starting offscreen don't draw run/end/draw properly (sw rendering only)

Change-Id: Iae25b3a424ddc5a16ba431ecd68cf42d5500db3f
/frameworks/base/core/java/android/view/ViewRootImpl.java
3a2d6aaf8e71a89f82517369acc03d46ffe9bb22 23-Oct-2012 Romain Guy <romainguy@google.com> Use existing display list to render the resize buffer
Bug #7400903

Change-Id: Ia2e534e47b4f67c280e2de7ce99cae0202751c42
/frameworks/base/core/java/android/view/ViewRootImpl.java
573f1429a028e8fea8b7339b28e139b501a79d4d 23-Oct-2012 Romain Guy <romainguy@google.com> am 2635e743: am d04fe3c1: am 04c8d402: Merge "Properly draw the window background on window resize Bug #7385090" into jb-mr1-dev

* commit '2635e7431a74b89c338ea9d56715f94b9c328cc1':
Properly draw the window background on window resize Bug #7385090
d04fe3c1aeaf4ce63f6a6f3def61a8cc5faff705 23-Oct-2012 Romain Guy <romainguy@google.com> am 04c8d402: Merge "Properly draw the window background on window resize Bug #7385090" into jb-mr1-dev

* commit '04c8d402fa824c548dc5de82c56e63eb5df02371':
Properly draw the window background on window resize Bug #7385090
41308e2936c768103d0e9c82500e97938d6797f1 23-Oct-2012 Romain Guy <romainguy@google.com> Properly draw the window background on window resize
Bug #7385090

This change gets rid of two silly asumptions:
- That a layer needs to be cleared with opaque black (it shouldn't,
it's already cleared to transparent and the view will cover it up
with its own background)
- The the clip should be dirty at the beginning of a frame only
when the render target is opaque

Change-Id: I415b6d3cab196057fb0281419a53fef601a44e28
/frameworks/base/core/java/android/view/ViewRootImpl.java
da391700c964077306ff43fd4296f31536942e9d 19-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> resolved conflicts for merge of e549a602 to master

Change-Id: I37dc0e48321d4baea49d77b6ef22bca19dcb0d9b
af26ac3130c0e956e28443d6e42212b02d4da611 19-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> am 398a6713: Merge "Fix bug #7367429 Popup window should get its direction from it Anchor View if it can" into jb-mr1-dev

* commit '398a6713c355cf59af071e944268aec7c0096b5a':
Fix bug #7367429 Popup window should get its direction from it Anchor View if it can
398a6713c355cf59af071e944268aec7c0096b5a 19-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Merge "Fix bug #7367429 Popup window should get its direction from it Anchor View if it can" into jb-mr1-dev
b003e28c1d65d06fcb5690ff2955d007d8f7a626 18-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7367429 Popup window should get its direction from it Anchor View if it can

- set the popup layout direction depending on the anchor view's layout direction
(if not defined before)
- make first pass of ViewRootImpl.performTraversals() and configuration update
not override any layout direction that could have been set before

Change-Id: I8e86ca805f0caf52c058d06aa7861df56fb862e6
/frameworks/base/core/java/android/view/ViewRootImpl.java
8ebb55429496887590aad0bf99d35f745ed5577d 18-Oct-2012 Chet Haase <chet@google.com> am b7379d3e: am 68716710: am 6f3e7bbf: Merge "Fix for previous commit on non-interesecting invalidations" into jb-mr1-dev

* commit 'b7379d3e4808fc1b4af4f4a6286e4432aa2b7036':
Fix for previous commit on non-interesecting invalidations
6871671063262759c906e6a24829d37a91d3b278 17-Oct-2012 Chet Haase <chet@google.com> am 6f3e7bbf: Merge "Fix for previous commit on non-interesecting invalidations" into jb-mr1-dev

* commit '6f3e7bbf14d43553dfca6a59bbbb1c6ee19a70fc':
Fix for previous commit on non-interesecting invalidations
9911d18f0ebc9a68e41838471de507a04ea8fd9d 17-Oct-2012 Chet Haase <chet@google.com> Fix for previous commit on non-interesecting invalidations

An error in the logic meant that some valid invalidations weren't getting through,
causing Launcher (for one) to get stuck sometimes.

Change-Id: I180622623b19770cd61034a5bd7991a5e2fd0a64
/frameworks/base/core/java/android/view/ViewRootImpl.java
6d166b7c5f86581cbccd52bc55bd45d724968a1e 17-Oct-2012 Chet Haase <chet@google.com> am a1954051: am e31cc171: am d95316e2: Merge "Skip drawing offscreen objects" into jb-mr1-dev

* commit 'a195405199f8d70ffce3de015bfe49316992faa4':
Skip drawing offscreen objects
e31cc17159f5a6eada40ffda20cb0b0560a0bc5c 17-Oct-2012 Chet Haase <chet@google.com> am d95316e2: Merge "Skip drawing offscreen objects" into jb-mr1-dev

* commit 'd95316e2c78c7e6cfacac9cced66f7ace36d6497':
Skip drawing offscreen objects
d95316e2c78c7e6cfacac9cced66f7ace36d6497 17-Oct-2012 Chet Haase <chet@google.com> Merge "Skip drawing offscreen objects" into jb-mr1-dev
b78ee0ef60e5323b15b4ffdc97be4d889e272b79 17-Oct-2012 Chet Haase <chet@google.com> Skip drawing offscreen objects

Previous logic in ViewRoot would schedule and perform a draw
when it was requested by offscreen objects. The problem was that the
logic checking for an interesection between the offscreen invalidation rectangle
and the onscreen display rectangle was flawed. The fix was to use the return value
from Rect.intersect() to do the right thing and skip drawing.

Issue #7366568 Offscreen invalidates can cause useless work for framework

Change-Id: Ie4e277c695dacee39848a8a223f0c4ee34d9bb4d
/frameworks/base/core/java/android/view/ViewRootImpl.java
7cfd0a2809ee39d4a6c484384615f873a133979d 17-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> am 86a8b251: am d8989364: am e9a33c60: Merge "Fix bug #7363252 Popup and Dialog UI widgets should be RTL aware" into jb-mr1-dev

* commit '86a8b25114fbc033c474a214699ad77a9140af5e':
Fix bug #7363252 Popup and Dialog UI widgets should be RTL aware
d89893642f81f854455da601e4735d226cf95214 17-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> am e9a33c60: Merge "Fix bug #7363252 Popup and Dialog UI widgets should be RTL aware" into jb-mr1-dev

* commit 'e9a33c6098f51c687665adbed799860df2569ad0':
Fix bug #7363252 Popup and Dialog UI widgets should be RTL aware
e9a33c6098f51c687665adbed799860df2569ad0 17-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Merge "Fix bug #7363252 Popup and Dialog UI widgets should be RTL aware" into jb-mr1-dev
cf12897cf553bfd07734dad3de071915fd21d4eb 17-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7363252 Popup and Dialog UI widgets should be RTL aware

- set the Configuration's layout direction in ViewRootImpl instead of PhoneWindow$DecorView
- then remove unecessary API on ListPopupWindow for passing the layout direction

Change-Id: Ia2c6e4aa8cb82aed9b088bc3b8004ea0a1ded1f3
/frameworks/base/core/java/android/view/ViewRootImpl.java
1c80844464fbe977c5303cd56af9abb81a2bc218 16-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> am 7d5de594: am d46503d5: am 40b7ea44: Merge "Accessibility focus drawing does not take into account view\'s transformation matrix." into jb-mr1-dev

* commit '7d5de5941d24aadf57d883198f79cf39da324635':
Accessibility focus drawing does not take into account view's transformation matrix.
d46503d5088b46f3e45a94b81efa406856559ca8 16-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> am 40b7ea44: Merge "Accessibility focus drawing does not take into account view\'s transformation matrix." into jb-mr1-dev

* commit '40b7ea443612213e9c973393658f07c176c3269e':
Accessibility focus drawing does not take into account view's transformation matrix.
78bd9835eb99fd829026a05dc543c6708367ca5b 16-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility focus drawing does not take into account view's transformation matrix.

1. We are using the view drawing bounds but did not take into account the transformation
matrix. This leads to showing ugly artifacts on the launcher's hotseat which is
pretty much the first thing we see.

2. Updated the documentation of View.getDrawingRect to be more explicit that the
results does not have the transformation matrix applied.

bug:7354033

Change-Id: Ief2e0ea8da05471d71e215ce4497d94ff6e92d1a
/frameworks/base/core/java/android/view/ViewRootImpl.java
9c377bd2d6c8315c6917ed58b2b7a5f6fb8b8a4c 06-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> am 481a0aac: am 88ae2e2a: am d9c99124: Merge "Incorrect temporary detach of accessibility focused view may lead to a crash." into jb-mr1-dev

* commit '481a0aac1f28233854ead339f0c9697eb1286653':
Incorrect temporary detach of accessibility focused view may lead to a crash.
88ae2e2abeda94f3ec1d87ffad35e7e5d716a94f 06-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> am d9c99124: Merge "Incorrect temporary detach of accessibility focused view may lead to a crash." into jb-mr1-dev

* commit 'd9c99124d4870361c7c1e28fb78adf245eb1305a':
Incorrect temporary detach of accessibility focused view may lead to a crash.
c8860602726d771c69a3fefedfa03419d1c03b1c 06-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> Incorrect temporary detach of accessibility focused view may lead to a crash.

1. If an app naither reattaches nor removes detached view that has
accessibility focus, an exception in the drawing of accessibility
focus occurs since we are trying to compute the focused rect by
offseting the bounds of the focused view in coords of the root
but the focused one is not attached.

bug:7297191

Change-Id: Ib69d52e474b8ea365754f5311f5e809bd757dd1a
/frameworks/base/core/java/android/view/ViewRootImpl.java
82fa5ffbbc4a0b9842c809d0d4fdbec622819f38 04-Oct-2012 Romain Guy <romainguy@google.com> am bf8d8e73: am 5971d03f: am f7ee2a03: Merge "Fix rendering artifacts on tiled renderers Bug #7275145" into jb-mr1-dev

* commit 'bf8d8e73e4123f529845e88de6d74b62853b9786':
Fix rendering artifacts on tiled renderers Bug #7275145
5971d03f233c52d697e55ee83d8e514adac21527 04-Oct-2012 Romain Guy <romainguy@google.com> am f7ee2a03: Merge "Fix rendering artifacts on tiled renderers Bug #7275145" into jb-mr1-dev

* commit 'f7ee2a03c1f930db4b20c04225f496ada97e646b':
Fix rendering artifacts on tiled renderers Bug #7275145
dfab363807b3b44be4032e410f016e0a0d018426 03-Oct-2012 Romain Guy <romainguy@google.com> Fix rendering artifacts on tiled renderers
Bug #7275145

This change fixes ViewRoot and adds extra debug information. It does
not solve the problem entirely. Another CL will.

Change-Id: I7e604ba38aad7f421769783dcbd998d6905ab2d9
/frameworks/base/core/java/android/view/ViewRootImpl.java
e3eb2c7754b2eea24e9c1f6551cf15fc533b3262 29-Sep-2012 Jean-Baptiste Queru <jbq@google.com> am 3c45765a: Merge from jb-mr1-aah-dev

* commit '3c45765a2a15c685aa28b74f626c6c10c909c133': (21 commits)
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Send Trackball clicks instead of Enter Key for taps
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Fix auto-merger error in I74c0644c6938d28c20c42d88d995ffb56a71d703
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
Converts hover touch events to trackball events
Import translations. DO NOT MERGE
Import translations. DO NOT MERGE
...
06e7a030c029294a4c03c87652cfc161f8f29b3a 28-Sep-2012 Chet Haase <chet@google.com> am d3451ae8: am 4af11461: Merge "Force redraw of new/resized windows" into jb-mr1-dev

* commit 'd3451ae8e07fefad529d6abf4f48ca83e177b4fb':
Force redraw of new/resized windows
22904334a0866c15dde8287d3f103e39cb76df5a 28-Sep-2012 Chet Haase <chet@google.com> am 4af11461: Merge "Force redraw of new/resized windows" into jb-mr1-dev

* commit '4af1146145550dee904bcaa744abfa582c8756b7':
Force redraw of new/resized windows
391fef0f5d99c13df3d86a5798614c0695046732 28-Sep-2012 Chet Haase <chet@google.com> Force redraw of new/resized windows

Our use of the GL flag EGL_SWAP_BEHAVIOR_PRESERVED_BIT caused a problem
with windows that are resized, where some of the contents were not being
updated when the window was first placed/resized. The fix is to force the
window to redraw completely when it is first resized.

Issue #7246918 Label selection view disappears

Change-Id: I3562141569502af581a3d63b1290c598abb57ade
/frameworks/base/core/java/android/view/ViewRootImpl.java
2c9141206ceaee137ef02dd1a145ae7ca1a48283 26-Sep-2012 Ben Pietrzak <bpietrzak@google.com> Send Trackball clicks instead of Enter Key for taps

Change-Id: Ib1e77a1bdad81db18f84bb33402e9144517a0f4c
/frameworks/base/core/java/android/view/ViewRootImpl.java
749bbe97ee775fb997df0270f0f9fc7470efb4f6 24-Sep-2012 Dianne Hackborn <hackbod@google.com> am 55fd212f: am c0e1f268: Merge "Fix issue #7184877: Calendar Locksceen Widget crashes and forces phone to reboot" into jb-mr1-dev

* commit '55fd212f914a28d0a64202a09f0127fa0a1b4175':
Fix issue #7184877: Calendar Locksceen Widget crashes and forces phone to reboot
a611a53292049e070f39f5d98092a06415f4e6ec 24-Sep-2012 Dianne Hackborn <hackbod@google.com> am c0e1f268: Merge "Fix issue #7184877: Calendar Locksceen Widget crashes and forces phone to reboot" into jb-mr1-dev

* commit 'c0e1f268451550368d1d3d3558f8ce2459ed5713':
Fix issue #7184877: Calendar Locksceen Widget crashes and forces phone to reboot
3b84206bba19ae2bc9decef6a88f97951c2a205c 23-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7184877: Calendar Locksceen Widget crashes and forces phone to reboot

Don't kill the system uid if we are running out of RAM.

Change-Id: Ie1818a3241fc80d4dfa19f8e8bdad22d164d7baa
/frameworks/base/core/java/android/view/ViewRootImpl.java
18c166bcd68a141d932717b8d3abd863093d7c50 22-Sep-2012 Romain Guy <romainguy@google.com> am 3f7c246f: Merge "Update layers in a single batch at the beginning of a frame Bug #7186819" into jb-mr1-dev

* commit '3f7c246f3ea85af9fb98cba37387bb55658d4614':
Update layers in a single batch at the beginning of a frame Bug #7186819
7fdf367d7ad63c90c13ddf553d05f58030454191 21-Sep-2012 Romain Guy <romainguy@google.com> am 0b697061: am 3f7c246f: Merge "Update layers in a single batch at the beginning of a frame Bug #7186819" into jb-mr1-dev

* commit '0b69706103dc6ddf765fa2e86265a6428f6728bb':
Update layers in a single batch at the beginning of a frame Bug #7186819
11cb642756093a4af901b1525375b1eb2b5c3e2b 21-Sep-2012 Romain Guy <romainguy@google.com> Update layers in a single batch at the beginning of a frame
Bug #7186819

Change-Id: Ice5926dfedfb3be3a3064e65008dafa2852407da
/frameworks/base/core/java/android/view/ViewRootImpl.java
b4641b5cd45331102c831635dd1856c35e1ba6e0 21-Sep-2012 Justin Koh <justinkoh@google.com> Merge "Converts hover touch events to trackball events" into jb-mr1-aah-dev
971405797f1131d69cb77ac449e66ac4a6276100 13-Sep-2012 Chet Haase <chet@google.com> Handle requestLayout() calls during layout

Calling requestLayout() during a layout pass is inadvisable, but
happens often enough in applications (especially when it occurs in
very indirect means that the application may not easily be able to
control) that we need to handle the situation without breaking. In particular,
applications that have run across this problem have had artifacts which are
difficult to debug (like things just not showing up on the screen) and
also difficult to fix. One of the side-effects of the problem is that it
leaves the view hiearchy in an unpredictable state where some views have
requested layout and are waiting to be layed out while the root view has
not received those requests, so it is never calling layout on those views.

The fix is to try to do the 'right' thing, while avoiding getting into
an inifinite loop (which could result from calling layout, which calls requestLayout(),
which causes another layout, which ...). The solution is two-tier: we handle
all requests that happen during layout by delaying them until after the current
layout is done. We then process those requests and call layout again.
If we receive more requests during that second layout, we post them to the
next frame, to allow us to finish the current one.

Issue #7155974 handle requestLayout() during layout more robustly

Change-Id: I9d13c405be28a19c86add22210e69817ddddaf8b
/frameworks/base/core/java/android/view/ViewRootImpl.java
dc4b5037a33956b3b04a45a24ef272e81eeb5438 10-Sep-2012 Ben Pietrzak <bpietrzak@google.com> Converts hover touch events to trackball events

Change-Id: Ibb843fcc0c525250a775d3b3567f8ca964f525c0
/frameworks/base/core/java/android/view/ViewRootImpl.java
603f6de35f21d74ae242d52d501f4f5c25ff4f4c 15-Sep-2012 Chet Haase <chet@google.com> Fix occasional crash bug with layers

Launcher occasionally crashes with a stack trace indicating that the memory
of a Layer object is corrupt. It is possible for us to delete a Layer
structure and then, briefly, use it to draw a DisplayList again before
that DisplayList gets recreated (without the layer that got deleted).

When this happens, if the memory got corrupted, it's possible to crash.

The fix is to add Layer to the other objects which we currently refcount
(bitmaps, shaders, etc.). Then instead of deleting a Layer, we decrement the
refcount. We increment when creating it, then increment it again when it's
referenced from a DisplayList. Then we decrement the refcount instead of
deleting it, and decrement when we clear a DisplayList that refers to it.
Then when the refcount reaches 0, we delete it.

Issue #6994632 Native crash in launcher when trying to launch all apps screen

Change-Id: I0627be8d49bb2f9ba8d158a84b764bb4e7df934c
/frameworks/base/core/java/android/view/ViewRootImpl.java
f84208faf8e9ab7bbf81224006662fc3219c6ad4 14-Sep-2012 Romain Guy <romainguy@google.com> Prevent crash when invalidating all Views
Bug #7165793

A ViewRootImpl's root view can be null. Check for this condition to
prevent an NPE invalidateWorld(). Other messages perform a similar
check to properly handle the case where mView == null.

Change-Id: I5bcfc41c48a469d38b21be74df2f6c715b0f9352
/frameworks/base/core/java/android/view/ViewRootImpl.java
dcd8c81bf4beb719888b6be1b9418303c9075938 13-Sep-2012 Craig Mautner <cmautner@google.com> Merge "Propagate systemUiVisibility changes to window manager" into jb-mr1-dev
7eac0f557cd87486d0f10b7c72e25aeb195a4351 13-Sep-2012 Craig Mautner <cmautner@google.com> Propagate systemUiVisibility changes to window manager

The mAttachInfo.mSystemUiVisibility value was changing in
View.dispatchAttachedToWindow but
mAttachInfo.mRecomputeGlobalAttributes was not being set.
Consequently ViewRootImpl.collectViewAttributes was returning
without updating the subtreeSystemUiVisibility. This is fixed
by calling needGlobalAttributesUpdate in dispatchAttachedToWindow.

WIthin ViewRootImpl.collectViewAttributes the assignment to
subtreeSystemUiVisibility was only being made if
mAttachInfo.mSystemUiVisibility was changed within
collectViewAttributes. But mAttachInfo.mSystemUiVisibility
was changing outside of collectViewAttributes in
dispatchAttachedToWindow. Consequently subtreeSystemUiVisibility
was never updated. By looking for a mismatch between
subtreeSystemUiVisibility and mSystemUiVisibility
subtreeSystemUiVisibility gets assigned whenever it is out of
sync.

Fixes bug 7091817.

Change-Id: I1e97a7dec14dc9594876175ae26370fb9030a8a6
/frameworks/base/core/java/android/view/ViewRootImpl.java
8d5e6f8d4a2bd39c6656cbac4f963d2527d707bf 11-Sep-2012 Dianne Hackborn <hackbod@google.com> Maybe fix issue #7146119: exception in FragmentManager

Seems like we should never be dispatching input events to windows
that currently don't have focus.

Change-Id: I524796df69f3fdda4147cb37e7b85b79bad88762
/frameworks/base/core/java/android/view/ViewRootImpl.java
b38070caa5143ab9fd1883e0c7c879533a480bc7 24-Aug-2012 Victoria Lease <violets@google.com> IME support for trackball and generic motion events

Trackball and generic motion events now pass through the IME in case
it would like to handle them before passing them on to the view
hierarchy.

While I was at it, I also...
...fixed the documentation on InputMethodService.onKeyUp()
...added documentation to InputMethodService.onTrackballEvent()
...added trackball and generic motion events to the "input" command
...fixed input consistency verification involving ACTION_OUTSIDE

Bug: 7050005
Change-Id: I40ab68df4a9542af6df25de6ec2ec500e4c02902
/frameworks/base/core/java/android/view/ViewRootImpl.java
1cf70bbf96930662cab0e699d70b62865766ff52 06-Aug-2012 Svetoslav Ganov <svetoslavganov@google.com> Screen magnification - feature - framework.

This change is the initial check in of the screen magnification
feature. This feature enables magnification of the screen via
global gestures (assuming it has been enabled from settings)
to allow a low vision user to efficiently use an Android device.

Interaction model:

1. Triple tap toggles permanent screen magnification which is magnifying
the area around the location of the triple tap. One can think of the
location of the triple tap as the center of the magnified viewport.
For example, a triple tap when not magnified would magnify the screen
and leave it in a magnified state. A triple tapping when magnified would
clear magnification and leave the screen in a not magnified state.

2. Triple tap and hold would magnify the screen if not magnified and enable
viewport dragging mode until the finger goes up. One can think of this
mode as a way to move the magnified viewport since the area around the
moving finger will be magnified to fit the screen. For example, if the
screen was not magnified and the user triple taps and holds the screen
would magnify and the viewport will follow the user's finger. When the
finger goes up the screen will clear zoom out. If the same user interaction
is performed when the screen is magnified, the viewport movement will
be the same but when the finger goes up the screen will stay magnified.
In other words, the initial magnified state is sticky.

3. Pinching with any number of additional fingers when viewport dragging
is enabled, i.e. the user triple tapped and holds, would adjust the
magnification scale which will become the current default magnification
scale. The next time the user magnifies the same magnification scale
would be used.

4. When in a permanent magnified state the user can use two or more fingers
to pan the viewport. Note that in this mode the content is panned as
opposed to the viewport dragging mode in which the viewport is moved.

5. When in a permanent magnified state the user can use three or more
fingers to change the magnification scale which will become the current
default magnification scale. The next time the user magnifies the same
magnification scale would be used.

6. The magnification scale will be persisted in settings and in the cloud.

Note: Since two fingers are used to pan the content in a permanently magnified
state no other two finger gestures in touch exploration or applications
will work unless the uses zooms out to normal state where all gestures
works as expected. This is an intentional tradeoff to allow efficient
panning since in a permanently magnified state this would be the dominant
action to be performed.

Design:

1. The window manager exposes APIs for setting accessibility transformation
which is a scale and offsets for X and Y axis. The window manager queries
the window policy for which windows will not be magnified. For example,
the IME windows and the navigation bar are not magnified including windows
that are attached to them.

2. The accessibility features such a screen magnification and touch
exploration are now impemented as a sequence of transformations on the
event stream. The accessibility manager service may request each
of these features or both. The behavior of the features is not changed
based on the fact that another one is enabled.

3. The screen magnifier keeps a viewport of the content that is magnified
which is surrounded by a glow in a magnified state. Interactions outside
of the viewport are delegated directly to the application without
interpretation. For example, a triple tap on the letter 'a' of the IME
would type three letters instead of toggling magnified state. The viewport
is updated on screen rotation and on window transitions. For example,
when the IME pops up the viewport shrinks.

4. The glow around the viewport is implemented as a special type of window
that does not take input focus, cannot be touched, is laid out in the
screen coordiates with width and height matching these of the screen.
When the magnified region changes the root view of the window draws the
hightlight but the size of the window does not change - unless a rotation
happens. All changes in the viewport size or showing or hiding it are
animated.

5. The viewport is encapsulated in a class that knows how to show,
hide, and resize the viewport - potentially animating that.
This class uses the new animation framework for animations.

6. The magnification is handled by a magnification controller that
keeps track of the current trnasformation to be applied to the screen
content and the desired such. If these two are not the same it is
responsibility of the magnification controller to reconcile them by
potentially animating the transition from one to the other.

7. A dipslay content observer wathces for winodw transitions, screen
rotations, and when a rectange on the screen has been reqeusted. This
class is responsible for handling interesting state changes such
as changing the viewport bounds on IME pop up or screen rotation,
panning the content to make a requested rectangle visible on the
screen, etc.

8. To implement viewport updates the window manger was updated with APIs
to watch for window transitions and when a rectangle has been requested
on the screen. These APIs are protected by a signature level permission.
Also a parcelable and poolable window info class has been added with
APIs for getting the window info given the window token. This enables
getting some useful information about a window. There APIs are also
signature protected.

bug:6795382

Change-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00
/frameworks/base/core/java/android/view/ViewRootImpl.java
df2390adc3879b7040425e75e4acc64729612b9c 30-Aug-2012 Craig Mautner <cmautner@google.com> Don't die(immediate) if from performTraversals.

The Drive application was calling PopupWindow.dismiss from within
onMeasure. This caused dispatchDetachedFromWindow to be called
from within performTraversals. Since dispatchDetachedFromWindow
destroys much of what performTraversals uses this was a disaster
waiting to happen.

This fix adds a check for seeing if die(immediate=true) is being
called from within performTraversals. If it is then die doesn't
execute doDie immediately, but instead treats it as a call to
die(immediate=false).

Fixes bug 6836841.

Change-Id: I833289e12c19fd33c17a715b2ed2adcf8388573a
/frameworks/base/core/java/android/view/ViewRootImpl.java
98365d7663cbd82979a5700faf0050220b01084d 20-Aug-2012 Jeff Brown <jeffbrown@google.com> Refactor for multi-display support.

Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class. This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault(). This represents the
bulk of this change. Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids. Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
/frameworks/base/core/java/android/view/ViewRootImpl.java
4702a856973a553deb82f71b1d3b6c3db5dbf4ba 18-Aug-2012 Dianne Hackborn <hackbod@google.com> More view hierarchy, fragment debugging.

Add a View.toString() method.

Rename all of the View private flags to have a PFLAG prefix to
avoid going insane trying to figure out which constant goes with
which flag.

Activity.dump() now includes a summary of the activity's view
hierarchy, using the View.toString() method.

All exceptions thrown by FragmentManager now perform a dump of
the owning activity state, where appropriate.

Change-Id: I6482e397e10cb5a0612ab02ce6ed5131823437a6
/frameworks/base/core/java/android/view/ViewRootImpl.java
c89b14bba0f6cc2c91629080617f7ed215f697f3 08-Aug-2012 Romain Guy <romainguy@google.com> It seems that apparently useless public APIs are actually useful
Bug #6953651

Change-Id: Ic47ce504e63262711f5d3edc76f7d2b9c12471ad
/frameworks/base/core/java/android/view/ViewRootImpl.java
17112ad8a21a77620eb1ff14dcf8bdd6b7859712 07-Aug-2012 Romain Guy <romainguy@google.com> Cleanup of libhwui

Change-Id: Ib7f5771548462c00027a8ad57badfb68c50644f9
/frameworks/base/core/java/android/view/ViewRootImpl.java
758143ecfedbe08cc6c4fed0ad8ad7a854194ca4 07-Aug-2012 Svetoslav Ganov <svetoslavganov@google.com> Window position not reported if the window is not moved.

1.If a window is shown but never moved the window window
is never notified for its current location. Therefore,
accessibility nodes do not contain correct bounds in
screen coordinates.

bug:6926295

Change-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393
/frameworks/base/core/java/android/view/ViewRootImpl.java
908aecc3a63c5520d5b11da14a9383f885b7d126 01-Aug-2012 Dianne Hackborn <hackbod@google.com> Start moving away from DisplayMetrics.DENSITY_DEVICE.

This puts in most of the infrastructure needed to allow us to
switch between different densities at run time. The main remaining
uses of the global are to initialize the Bitmap object (not sure
what to do about that since it doesn't have anything passed in
the constructor to get this information from), and being able to
load drawables if we need a different density than what was preloaded
by zygote.

Change-Id: Ifdbfd6b7a5c59e6aa22e63b95b78d96af3d96848
/frameworks/base/core/java/android/view/ViewRootImpl.java
6881a10557acf3b0270de54799d6f19437acf584 27-Jul-2012 Craig Mautner <cmautner@google.com> Small step towards supporting multiple displays

Change-Id: I353449c2b464394988c7e0203656b5851a0c9127
/frameworks/base/core/java/android/view/ViewRootImpl.java
a8b9defade5b937d4ad64f9aff4bca792298f43c 23-Jul-2012 Jeff Brown <jeffbrown@google.com> Stop using raw display size except in window manager.

We don't actually need the raw size in these places.
The logical size is good enough.

Starting to move dependencies on surface flinger
and window manager out of the Display class.

Change-Id: I2065bee8e5bf7f42c5a452dd1e8479e40ebb0d37
/frameworks/base/core/java/android/view/ViewRootImpl.java
63cf0752226383cfc8fa35a3233413301b49fab7 25-Jul-2012 Romain Guy <romainguy@google.com> Merge "Make HardwareRenderer able to target generic Surface objects"
786fc93d71b833ab6b02b0c7ea5e30f25cceeedf 25-Jul-2012 Romain Guy <romainguy@google.com> Make HardwareRenderer able to target generic Surface objects

Change-Id: I4b7199a1eb30e0df354ae12c4819adc69db5df40
/frameworks/base/core/java/android/view/ViewRootImpl.java
23e7c35ab5d43242d35b1019ce1a50bfb495cd27 20-Jul-2012 Jeff Brown <jeffbrown@google.com> Remove dead code in window manager.

The 'nest' parameter is always false so we can get rid of support
for redundantly added views.

Change-Id: I30c6a856797bdc72c4e1aa4cb26b930a33ce9a16
/frameworks/base/core/java/android/view/ViewRootImpl.java
c9c9a48e7bafae63cb35a9aa69255e80aba83988 16-Jul-2012 Svetoslav Ganov <svetoslavganov@google.com> Removing a workaround for incorrect window position on window move.

1. The window manager was not notifying a window when the latter
has been moved. This was causing incorrect coordinates of the
nodes reported to accessibility services. To workaround that
we have carried the correct window location when making a
call from the accessibility layer into a window. Now the
window manager notifies the window when it is moved and the
workaround is no longer needed. This change takes it out.

2. The left and right in the attach info were not updated properly
after a report that the window has moved.

3. The accessibility manager service was calling directly methods
on the window manager service without going through the interface
of the latter. This leads to unnecessary coupling and in the
long rung increases system complexity and reduces maintability.

bug:6623031

Change-Id: Iacb734b1bf337a47fad02c827ece45bb2f53a79d
/frameworks/base/core/java/android/view/ViewRootImpl.java
fbf885b652272013f44da71e9f77923333bf62eb 10-Jul-2012 Craig Mautner <cmautner@google.com> Merge "Notify client side of window movement."
05e91ed5a7ea17f021e1811166942a7d758e1cce 03-Jul-2012 Chet Haase <chet@google.com> Force invalidates on non-visible views to traverse the hierarchy

An optimization prunes invalidates on views which are not inside their
parent's bounds. This works in most cases, but it is possible to run
a situation where a view has been invalidated (and is thus waiting to
be redrawn), but the pruning logic ensures that that draw call
will not happen. Further, when/if the view comes into the bounds
of its parent again, it may still not be redrawn, because now future
invalidates on the view are noop'd because it is already in an invalidated
state (and thus will not propagate invalidates up the hierarchy).

The fix is to remove the optitmization. This will cause some overhead
sending the invalidation request up to the view root, but this
overhead is minimal (and only extra for cases of out-of-bounds views),
and the more expensive part of rendering these views will still not be done
since the view root will avoid re-drawing the hierarchy when the dirty
rectangle is empty.

Issue #6773607 Layered views animating from offscreen sometimes remain invisible

Change-Id: Ia2c1a2b9d3e7f267253cb325ccceff1e7fdbe8bd
/frameworks/base/core/java/android/view/ViewRootImpl.java
27e2da7c171afa39358bbead18fbe3e6b8ea6637 03-Jul-2012 Svetoslav Ganov <svetoslavganov@google.com> Remove the accessibility focus search code.

1. In JellyBean we have added some APIs to search for next accessibility
focus in various directions and set accessibility focus from hover.
However, we have decided that there is not clean answer for how this
should behave and the APIs were hidden. Now the accessibility service
is responsible for that. The unused code is now taken out.

2. This patch also takes out the hidden attribute accessibiligyFocusable
since we moved the responsibility for implementing focus search strategy
to accessibility services and we did not need that for Jellybean which
is a good sign that this is not needed. I general this is one less thing
for an app developer to worry about. We can add this if needed later.

bug:6773816

Change-Id: I0c858d72c93a2b7ff1f8f35a08d33ec4b9eb85fd
/frameworks/base/core/java/android/view/ViewRootImpl.java
5702d4dfb5b81491f873a3617f8d8fc8dc5279e6 30-Jun-2012 Craig Mautner <cmautner@google.com> Notify client side of window movement.

Add a one way method to notify Views that the window has moved
on the screen. Fixes issues arising from the IME popping up and
translating the window that uses it. Accessibility was left unaware
of these movements and was drawing the box around the wrong widgets.
Similarly PopupWindow used getLocationOnScreen to determine how
much screen real estate was above and below the anchor point to
determine where to put an anchored window.

Fixes bug 6623031.

Change-Id: I4731a94d5424c1ec77bf1729fba8fc9ea34cae46
/frameworks/base/core/java/android/view/ViewRootImpl.java
c32b2091d6441e7709342ca62f0976fc4a0367e4 18-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> am 45c4a8df: am ec7c7ebf: Merge "API for finding accessibility focus in virtual tree not needed." into jb-dev

* commit '45c4a8df9487f53af37ded1f5a1ebe500e89b493':
API for finding accessibility focus in virtual tree not needed.
45a02e0809c14a52aa24658666df0d41ce661857 18-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> API for finding accessibility focus in virtual tree not needed.

1. The function for finding where the accessibility focus in a virtual
node tree presented by an AccessibilityNodeProvider is not needed
API since the framework already keeps track of the accessibility
focused virtual node in order to draw the focus rectangle. This API
adds unnecessary complexity to developers of AccessibilityNodeProviders.

bug:6675330

Change-Id: I84774686b06a995073a39e45b8ef22f2cd04b773
/frameworks/base/core/java/android/view/ViewRootImpl.java
04ddf3c0508f3d50e6ab82cecc0adc92f52b7803 14-Jun-2012 Jeff Brown <jeffbrown@google.com> Allow applications to recover from IME related ANRs.

Timeout after 2.5 seconds.

Because communication with an IME occurs asynchronously
using oneway binder calls, it's possible for an input event
that was delegated to the IME to be dropped on the floor.
When this happens, the app (not the IME!) will get blamed
for the problem and will ANR forever.

Even if an event is not dropped on the floor, we should
eventually time out event dispatch to the IME if it's
being too slow.

This patch implements a timeout on all events delegated
to the IME. When the timeout expires, the event is marked
as having not been handled by the IME and the application
gets a crack at it. We also write a message to the log when
this occurs.

Ensure that we do not invoke the event finished callback
while holding the InputMethodManager's lock to avoid
potential deadlocks.

Fixed a minor bug where the InputMethodManager would not
remember the id of the current input method. This caused
the log messages and dumpsys state to print "null" as the
current input method id.

Bug: 6662465
Change-Id: Ibb3ddeb087ee6998996b0b845134e16a18aa3057
/frameworks/base/core/java/android/view/ViewRootImpl.java
54ab347fdde0e4d14d923cca80e5bcc7b879fc52 14-Jun-2012 Romain Guy <romainguy@google.com> Don't create a giant layer for all notifications
Bug #6642475

When expanding the status bar, create one layer per notification instead of
a single giant layer for the pile of notifications. This prevents layer
creation failure when the total height of the notifications is larger
than the maximum allowed texture size in OpenGL ES 2.0.

This change only enables layers on notifications that will be visible
once the notification area is fully expanded.

Change-Id: I3c791a66cf5ac0973f3a65cfcd84b95209d580f3
/frameworks/base/core/java/android/view/ViewRootImpl.java
9d0908919a65a4f3158a8fc50aaf320dfed36278 12-Jun-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6634325: View.setKeepScreenOn and...

...MediaPlayer.setScreenOnWhilePlaying seem broken

We need to correctly clear the keep screen on flag when the view
hierarchy request is gone... and to do that, we need to keep the
actual state of the flag requested by the app. Also when the app
changes its state, we need to compute the proper value based on
both the app request and any requests in the view hierarchy.

Bug: 6634325
Change-Id: I060e9a34a10faffbaa77c06098cf21298bb4969f
/frameworks/base/core/java/android/view/ViewRootImpl.java
527ee91b60426b5a344e9905c7f9a14d6d26219e 11-Jun-2012 Romain Guy <romainguy@google.com> Prevent crash in WebView when disabling the hw renderer
Bug #6596807

A crash would occur in the following situation:
- WebView registers a functor with the hardware renderer
- The hardware renderer gets disabled
- WebView attemps to unregister its functor

Unregistering the functor fails because the hardware renderer is now disabled.
When the renderer becomes enabled again, the functor is invoked, which leads
to a native crash.

This change simply allows functors to always be unregistered, even when the
renderer is disabled. A disabled renderer only means that it will not be used
for rendering; as such, unregistering a functor is a valid operation and
should be allowed.

Change-Id: I0ff897a0cca7e048c609033215cd0f7f5c940bcc
/frameworks/base/core/java/android/view/ViewRootImpl.java
86783474fdec98a22bc22e224462767eab13e273 07-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Cannot interact with dialogs when IME is up and on not touch explored popups.

1. If the last touch explored location is within the active window we
used to click on exact location if it is within the accessibility
focus otherwise in the accessibility focus center. If the last touch
explored location is not within the active window we used to just
click there. This breaks in the case were one has touch explored
at a given place in the current window and now a dialog opens *not*
covering the touch explored location. If one uses swipes to move
accessibility focus i.e. to traverse the dialog without touching
it one cannot activate anything because the touch explorer is using
the last touch explored location that is outside of the active
window e.g the dialog.

The solution is to clear the last touch explored location when a
window opens or accessibility focus moves. If the last touch
explored location is null we are clicking in the accessibility
focus location.

bug:6620911

2. There is a bug in the window manager that does not notify a
window that its location has changed (bug:6623031). This breaks
accessibility interaction with dialogs that have input because
when the IME is up the dialog is moved but not notified. Now
the accessibility layer gets incorrect location for the
accessibility focus and the window bounds.

The soluion is when the accessibility manager service calls
into the remove thress to obtain some accessibility node infos
it passes the window left and top which it gets from the
window manager. These values are used to update the attach info
window left and top so all accessibility node infos emitted
from that window had correct bounds in screen coordinates.

bug:6620796

Change-Id: I18914f2095c55cfc826acf5277bd94b776bda0c8
/frameworks/base/core/java/android/view/ViewRootImpl.java
932b7f6765968bd526c03512f3805fbc3924dc29 06-Jun-2012 Chris Craik <ccraik@google.com> Revert "Add more temporary logging for investigating detachFunctor"

bug:6608646

This reverts commit 8857b2f76abad1e4ec742dfd85d0c997880be376

Change-Id: I1563b5974c52b84201ae448298f804eb0dcc235d
/frameworks/base/core/java/android/view/ViewRootImpl.java
8857b2f76abad1e4ec742dfd85d0c997880be376 05-Jun-2012 Chris Craik <ccraik@google.com> Add more temporary logging for investigating detachFunctor

bug:6596807
Change-Id: Ic9e34e323b12a887f2e8df0773a6155627b6a64f
/frameworks/base/core/java/android/view/ViewRootImpl.java
41ee465734d0006797a8fd36e88976c1e85d161c 01-Jun-2012 Chris Craik <ccraik@google.com> Force webview invalidates on unsuccessful functor attach

Functor attach should always be successful, but adding a fallback just in
case. Also invalidates the WebView on initial content arriving.

bug:6511995
Change-Id: Ibca16505afec9f693ea4a7cc4966cd6d7353725c
/frameworks/base/core/java/android/view/ViewRootImpl.java
38c2ece5ce4c59f30e5832779bf1d86d68b1c442 24-May-2012 Romain Guy <romainguy@google.com> Clear bitmap references from display lists as early as possible
Bug #6555840

Apps like Google+ with large bitmaps displayed in listivews could
run into memory issues because of these references.

Change-Id: I39486bda13ce00c5a3b6481139ad54547506a8b4
/frameworks/base/core/java/android/view/ViewRootImpl.java
f40628645df750991ced8dde803dd57225fca04f 22-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Accessibility focus and input focus do not sync - part 2" into jb-dev
525ae2075cf96d3a2ac67cd3a662069fd579f42d 22-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility focus and input focus do not sync - part 2

1. This patch has somecode that syncs input and accessibility
focus or tries to put accessibility focus on the top most
container that was missed by the previous patch.

Change-Id: I08f21670b1c6e9f363d5714b1976fb52d84baae4
/frameworks/base/core/java/android/view/ViewRootImpl.java
e2d7f182ff2db26723089206c7d01f6695bd3dfc 21-May-2012 Romain Guy <romainguy@google.com> Remove DEBUG_LATENCY flag

This flag was replaced with the more versatile and powerful systrace.

Change-Id: I2267698f86fe9ba9e1102856795ca641001fecd5
/frameworks/base/core/java/android/view/ViewRootImpl.java
13b907353f18215b52b5ceda24bbf520d91d72a1 21-May-2012 Romain Guy <romainguy@google.com> Remove unused, obsolete debug code

All these features have either been abandonned and left un-maintained
for years or can be replaced by systrace.

Change-Id: I42e4579a8078744047e5fe08a7a15254970b09bc
/frameworks/base/core/java/android/view/ViewRootImpl.java
dddcd22b7ea56b1d3e31f2bbc35c80cb047de879 19-May-2012 Romain Guy <romainguy@google.com> Don't crash on Surface.unlockAndPost() but log & try again
Bug #6482593

Change-Id: Ib477b58e2b7a6cb19a87d05f2aa0448e04d82f7c
/frameworks/base/core/java/android/view/ViewRootImpl.java
648337b3a8024b22a77977024cdf171f83999d56 17-May-2012 Adam Powell <adamp@google.com> Merge "Fix a bug where late-invalidating views with animations would be held for too long by ViewRootImpl" into jb-dev
3e3c4ee0475ad7096201a5f00f2e9be22fb891dd 17-May-2012 Adam Powell <adamp@google.com> Fix a bug where late-invalidating views with animations would be held
for too long by ViewRootImpl

Change-Id: I1e32bf2683b50f8834f215a753f881b5d4b8dbc9
/frameworks/base/core/java/android/view/ViewRootImpl.java
c8d2668bc4506aa9e771931534c6379cf687d41e 17-May-2012 Jeff Brown <jeffbrown@google.com> Add systrace method tags for measure and layout.

Change-Id: I739f6384b390d1b34b09b622ca0f752de1dd7304
/frameworks/base/core/java/android/view/ViewRootImpl.java
413baf8a03db180607efaca0bb60c15a153c4322 16-May-2012 Romain Guy <romainguy@google.com> Don't draw onto a hw surface using the software renderer
Bug #6485955

If an invalidate gets scheduled right before the EGL surface is destroyed,
the next draw pass is done in software. This causes the software renderer
to connect to the surface forever which prevents the hardware renderer
from coming back when the screen is turned back on.

The fix here is to ignore the draw request when hw acceleration is requested
but not yet available. Proper software fallback will still happen when an
error is encountered with hardware rendering (in which case hw acceleration
will not be marked as requested anymore.)

Change-Id: I1edc4a51c8dd38240aa2345092a18a081a756fc1
/frameworks/base/core/java/android/view/ViewRootImpl.java
78cb7cf7d1d82834c4405650a17e387370004570 15-May-2012 Chris Wren <cwren@android.com> Allow animations to run past cancelled draws, if the view is visible.

Bug: 6475482
Change-Id: Iecb3a04744282135efa0049f1b70a46dc4a6bb23
/frameworks/base/core/java/android/view/ViewRootImpl.java
791fd31a68c59395952005886ba799169f80a29a 15-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility focus traversal in virtual nodes.

1. Finished the implementation of support for maintaining
accessibility focus in view with virtual descendants.

2. Finished the NumberPicker implementation of virtual
subtree such that all requred attributes are reported
and ensuring that it support accessibility focus in
its virtual descentants.

3. Fixed a bug where if a predecessor of the view that is
accessiiblity focused is removed the accessibliity focus
host in ViewRootImpl is not cleared leading to a crash
when trying to draw the accessibility focus highlight.:

bug:6472646
bug:6433864

Change-Id: I3645642b87b4a26025c0b2ba9dfaad92d11a48f1
/frameworks/base/core/java/android/view/ViewRootImpl.java
8ce2d78aa89e89e9a5607d8809bf6d248508a531 15-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Improving accessibility focus traversal." into jb-dev
e5dfa47d84668376b84074c04570fb961870adeb 09-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Improving accessibility focus traversal.

1. Now the views considered during the accessibility focus search
are the ones that would get accessibility focus when thovered
over. This way the user will get the same items i.e. feedback
if he touch explores the screen and uses focus traversal. This
is imperative for a good user experience.

2. Updated which focusables are considered when searching for access
focus in ViewGroup. Generally accessibility focus ignores focus
before/after descendants.

3. Implemented focus search strategy in AbsListView that will traverse
the items of the current list (and the stuff withing one item
before moving to the next) before continuing the search if
forward and backward accessibility focus direction.

4. View focus search stops at root namespace. This is not the right
way to prevent some stuff that is not supposed to get a focus in
a container for a specific state. Actually the addFocusables
for that container has to be overriden. Further this approach
leads to focus getting stuck. The accessibility focus ignores
root names space since we want to traverse the entire screen.

5. Fixed an bug in AccessibilityInteractionController which was not
starting to search from the root of a virtual node tree.

6. Fixed a couple of bugs in FocusFinder where it was possible to
get index out of bounds exception if the focusables list is empty.

bug:5932640

Change-Id: Ic3bdd11767a7d40fbb21f35dcd79a4746af784d4
/frameworks/base/core/java/android/view/ViewRootImpl.java
85afd1b6f871d471fdff1980134676a5f1690525 13-May-2012 Dianne Hackborn <hackbod@google.com> Implement new window cropping.

The window manager now performs the crop internally, evaluating
it every animation from, to be able to update it along with
the surface position.

Change-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32
/frameworks/base/core/java/android/view/ViewRootImpl.java
78b8ef3f3ad8ab935f677d8d672db0d97bff8119 07-May-2012 Jamie Gennis <jgennis@google.com> Surface: replace active rect with window crop

This change replaces the setActiveRectCrop method on Surface, which was called
from app processes, with the setWindowCrop method that is to be called from the
window manager.

Bug: 6299171
Change-Id: Ica51efcd8c488a526e7013b83d80df4856694519
/frameworks/base/core/java/android/view/ViewRootImpl.java
cf67578c7f99492273a8f8446dd18ddc5af2ae76 11-May-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6475693: OnSystemUiVisibilityChangeListener reporting...

...incorrect visibility when the ActionBar overflow menu is opened

Don't report layout flags in system UI visibility callback. Update
docs to reflect this.

Change-Id: Icfa411b5537de037cafbcac04991101e8b9138c4
/frameworks/base/core/java/android/view/ViewRootImpl.java
a482d36635cbfbbfb4aee9fc79d55514bf6b7464 10-May-2012 Dianne Hackborn <hackbod@google.com> Merge "Fixed typo in findAccessibilityFocus API." into jb-dev
57aab755441a28c2e5c78c35a57b940afc2799e0 10-May-2012 alanv <alanv@google.com> Fixed typo in findAccessibilityFocus API.

Change-Id: I3ca1448792a1b712f781c1bfa73823ca08ea3d39
/frameworks/base/core/java/android/view/ViewRootImpl.java
571d4cbeec4adad050b8e188770e7e7dedc558f1 10-May-2012 Jeff Brown <jeffbrown@google.com> Merge "Fix bugs in fallback key handling." into jb-dev
a53de0629f3b94472c0f160f5bbe1090b020feab 09-May-2012 Dianne Hackborn <hackbod@google.com> Add callback hack to find out when to load system properties.

Use this to reload the trace and layout bounds properties.

This is ONLY for debugging.

Change-Id: I1c4bdb52c823520c352c5bac45fa9ee31160793c
/frameworks/base/core/java/android/view/ViewRootImpl.java
fd23e3ed976b22b9a92ddb2cb3a46f9d2a0ce23f 09-May-2012 Jeff Brown <jeffbrown@google.com> Fix bugs in fallback key handling.

If a fallback key is generated using a key plus a modifier,
then it's possible we might get a different fallback key
generated if the modifier has changed. PhoneWindowManager
needs to remember which fallback is last generated for a
given key code so that it can apply the same fallback action.

When generating cancellation events, it's important to have
preserved the policyFlags of the original event. Otherwise
we may not dispatch the cancellation properly. For example,
some actions are not performed if the POLICY_FLAG_TRUSTED
is not specified.

Remember the metaState associated with a key event so we can
include it when canceled.

Tell the policy when a fallback is being cancelled so that it
can clean up its state.

After a SEARCH shortcut is invoked, clear the flag indicating
that a shortcut is pending. This is to prevent SEARCH from
getting stuck down in the case where we might forget to send
the up. (Shouldn't happen anymore after the prior fixes.)

Bug: 5616255
Change-Id: I68f0a9679c7af464eaf31c099f2aa50b53fecf1f
/frameworks/base/core/java/android/view/ViewRootImpl.java
2a0f228a30c85a124f92a5a7c1b10a81cf69af6d 08-May-2012 Romain Guy <romainguy@google.com> Invalidate display lists immediately when views are removed/added quickly

The deferred invalidation of display list could cause problems with
view like TextureView who destroy resources when detached from the
window but only recreate them later at draw time. This would cause
temporary flashes or other visual glitches on screen.

Change-Id: I018488ba09743df21c6434ea610813014fb80a85
/frameworks/base/core/java/android/view/ViewRootImpl.java
ec4d9040f603b57b1706299f51838b6cc68b8f99 06-May-2012 Romain Guy <romainguy@google.com> Merge "Attempt to recover from apps destroying their window at draw time Bug #6436642" into jb-dev
1f59e5c19bf72f88eed6f8de08b0a879d999f61c 06-May-2012 Romain Guy <romainguy@google.com> Attempt to recover from apps destroying their window at draw time
Bug #6436642

Change-Id: I906b9c68225683f97b9c97c153a1132cf9ac6509
/frameworks/base/core/java/android/view/ViewRootImpl.java
139e5aa1da51b27231ab36344cf2d0dafab23f1e 06-May-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6404215: New ActionBar auto-hide can conflict with application

The action bar now maintains separate states for the things that can
impact its visibility (calls from the app, action mode, system UI) so
that the changes in these won't incorrectly mix together.

Also added a hack to force the status bar to be shown when showing
the action bar for an action mode, when the UI is in a state where
the action bar would be shown with a gap above where the status bar
is.

Change-Id: Ib0950a7f585c5d2c9e77d11b237ba6e150f15ebd
/frameworks/base/core/java/android/view/ViewRootImpl.java
3556c9a8068497d0de8964fd3be719c68eae1f00 05-May-2012 Dianne Hackborn <hackbod@google.com> Implement cropping of windows based on system UI elements.

Start calling Surface.setActiveRect().

Change-Id: I94197059c971c6ab7820e615ea8f285482b86c75
/frameworks/base/core/java/android/view/ViewRootImpl.java
3fe38c0e73e520c6c38454a41a4cffa16faaf67d 04-May-2012 Craig Mautner <cmautner@google.com> Retain current visibility when copying layoutparam

The LayoutParams members, systemUiVisibility and
subtreeSystemUiVisibility are derived values rather than app-generated
values. When copying LayoutParams members make sure these values are
not overwritten.

Overwriting them was causing the STATUS_BAR_DISABLE_XXX flags to be
overwritten exposing elements that should have remained hidden.

Fixes bug b6374541.

Change-Id: Iaae4b4167e1b148bbdba4d05f473844f7fa3bf8d
/frameworks/base/core/java/android/view/ViewRootImpl.java
fb68fdb9c6e915e38ec5c7f4b0d526b613e4ea8b 01-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Accessibility should not change input focus behavior." into jb-dev
cf8a3b82241a320f568f8448184df6da5bbcf152 01-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility should not change input focus behavior.

1. Removed a change in the input focus behavior I forgot
to take out when submitted the main accessibility focus
patch. Ugh..

bug:6320098

Change-Id: Id7942e8aac64ba4bf6df7e19f733fa70b368d1bb
/frameworks/base/core/java/android/view/ViewRootImpl.java
1e945c4fda0242e8ae02ccb7a2262556f41b42cc 30-Apr-2012 Dianne Hackborn <hackbod@google.com> Merge "Add system insets to windows." into jb-dev
2f87014ea2f177e715032b07004d05e2549a63a8 30-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Enabling accessibility focus only if explore by touch is on." into jb-dev
18dcf2f1cd3f84cbdffd8394e16475a13d6243df 30-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Fixing crash when drawing accessibility focus indicator." into jb-dev
07b726c86b1d0b22e51b08cb4234f8212864d9f9 30-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Enabling accessibility focus only if explore by touch is on.

1. Now we will enable the accessibility focus only if Explore by
Touch is enabled. Enabling this feature allows a blind user to
touch the screen and set the accessibility focus at this
location as well as get spoken feedback. Also an accessibility
service can move the accessibility as a result of user gestures
detected only if Explore by Touch is enabled. Since we will
handle some gestures by default if not accessibility service
does so to provide reasonable built-in navigation of the UI
by "objects" we need the accessibility focus functionality.

bug:6383361

Change-Id: I13ce6072a90f5838c7656379788144c99a772bf0
/frameworks/base/core/java/android/view/ViewRootImpl.java
5c58de3a523a384c47b0b1e0f5dd9728a74cd9f7 29-Apr-2012 Dianne Hackborn <hackbod@google.com> Add system insets to windows.

This will be used to determine which parts of a window a completely
hidden by system UI elements (status bar, nav bar, system bar) so
that they can be clipped out from rendering.

Change-Id: I2c6c6ac67dbdfeed82d2c089ef806fb483165bd9
/frameworks/base/core/java/android/view/ViewRootImpl.java
1d74df226619101d905d872c8e609d315409695e 29-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Fixing crash when drawing accessibility focus indicator.

1. Added a lacking null check for the accessibility node
info returned by an accessibility node provider. If
the provider implementation is not correct this may
happen.

2. Added clearing of the current accessibility focused
node when the window focus changes. Now it is cleared
in every case and if it happens that accessibility is
enabled when the window gets focus, the accessibility
focus will be properly set.

bug:6381296

Change-Id: Ieea1b07762745e6d932fc4ed4febfe77760b25b7
/frameworks/base/core/java/android/view/ViewRootImpl.java
79c6346100b555a8a3d51b3b1c34dbbe99305b9a 28-Apr-2012 Dianne Hackborn <hackbod@google.com> Merge "When a window is first shown only draw once while animating." into jb-dev
771526c88f5cc4b56a41cb12aa06a28d377a07d5 28-Apr-2012 Jeff Brown <jeffbrown@google.com> Resample touch events on frame boundaries.

Bug: 6375101
Change-Id: I8774e366306bb2b6b4e42b913525bf25b0380ec3
/frameworks/base/core/java/android/view/ViewRootImpl.java
12d3a94397c33fdb773a1eaaaa13cab80bf0c571 27-Apr-2012 Dianne Hackborn <hackbod@google.com> When a window is first shown only draw once while animating.

On some hardware allocating a new graphics buffer is quite
expensive, which blocks updates to the UI. This can cause
glitches when performing window animations.

To reduce these glitches, the view hierarchy will now only
allow itself to be drawn once if its window is being shown
while the window manager is animating, not resuming draws
until it is told that the animation is done.

Change-Id: Ie15192f6fddbd0931b022a72c76ddd55ca266d84
/frameworks/base/core/java/android/view/ViewRootImpl.java
330314c6fb7c178c0f0da65d6aa8c9e7d3004568 27-Apr-2012 Jeff Brown <jeffbrown@google.com> Simplify the consume before traversal heuristic.

Calling doConsumeBatchedInput() from doTraversals() can result
in redundant attempts to consume batched input. Instead of making
this call directly, just schedule consume batched input at the
same time as traversals are scheduled. This should have the same
overall effect.

Bug: 6375101
Change-Id: Ie5799e6a68fedbd1978cca6d03852d9a7f1b1f64
/frameworks/base/core/java/android/view/ViewRootImpl.java
97d5c418730946a0332f601cd140ed0b12ea19c1 27-Apr-2012 Jeff Brown <jeffbrown@google.com> Remove unused pipelining optimization.

Bug: 6375101
Change-Id: I5fcbbabfafae9e1661adac7b2becc748e42c4b66
/frameworks/base/core/java/android/view/ViewRootImpl.java
ba6be8a62dcdb3ffd210cd36b9af4e3a658eac47 24-Apr-2012 Romain Guy <romainguy@google.com> Prevent WebView from crashing when detached from the window
Bug #6365056

WebView enqueues a functor in the hardware renderer to handle
animations and this functor is called at a later time by the
hardware renderer. However, the functor was not removed from
the queue when WebView was removed from the window. This could
cause the hardware renderer to attempt to execute an invalid
functor and lead to a crash.

Change-Id: I9d38e80f3fdc5e29d4d0cdfa1e893c251a954508
/frameworks/base/core/java/android/view/ViewRootImpl.java
72de2062485f711c9a2291c204fd2c0fb6c4e20f 21-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Adding support for traversing the content of a node info at granularity."
aa780c110922148a6a4ba06734bb2b0bb8c98f93 20-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Adding support for traversing the content of a node info at granularity.

1. A view that creates an accessibility node info may add to the info
a list of granularity labels. These are granularities by which the
source view can iterate over its content. For example a text view
may support character, word link while a web view may additionally
support buttons, tables, etc. There are actions on accessibility
node info to go to the next/previous at a given granularity which
is passesed as an argument.

2. Added Bundle argument to the APIs for performing accessibility
actions. This is generic and extensible.

bug:5932640

Change-Id: I328cbbb4cddfdee082ab2a8b7ff1bd7477d8d6f9
/frameworks/base/core/java/android/view/ViewRootImpl.java
d6b1098e1f46530528dfea415655468ec994bbb6 20-Apr-2012 John Reck <jreck@google.com> Support fallback action if unhandled key event

Bug: 6023055

Change-Id: Ib802c4b9d1b606f9ea7a5081e30c50b5bd78e30c
/frameworks/base/core/java/android/view/ViewRootImpl.java
b78c284bd535f48207750e5a406474ea22381edd 19-Apr-2012 Chet Haase <chet@google.com> Always execute actions on the runQueue

A View that is not attached will place posted actions on the
ViewRoot's runQueue. Previously, this runQueue was only ever executed
during a layout (during performTraversals()). This works in most situations
(a View that is added to or removed from the hierarchy will force a layout
in general), but not in all cases. For example, a new View being added to
a ListView will not cause a layout, so any actions posted to that View
prior to its being attached will not be run until some indeterminate time
later when a layout happens to run.

The fix is to execute the (typically empty) runQueue on every traversal.

Issue #6366678 View.post() ignored when called on an unattached ListView item

Change-Id: I94e6fdd9da6bb57fd83b547f8d742cd0ddfecbd6
/frameworks/base/core/java/android/view/ViewRootImpl.java
f01d3dd710e8b86b3e2846af62835158fd4e0db1 18-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Adding some more gestures and actions for accessibility."
005b83b0c62d3d0538f0d566b08bd457015ec661 17-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Adding some more gestures and actions for accessibility.

1. Added more gesture for accessibility. After a meeting
with the access-eng team we have decided that the current
set of gestures may be smaller than needed considering
that we will use four gestures for home, back, recents,
and notifications.

2. Adding actions for going back, home, opening the recents,
and opening the notifications.

3. Added preliminary mapping from some of the new gestures
to the new actions.

4. Fixed a bug in the accessibility interaction controller
which was trying to create a handled on the main looper
thread which may be null if the queried UI is in the
system process. Now the context looper of the root view
is used.

5. Fixed a bug of using an incorrect constant.

6. Added a missing locking in a couple of places.

7. Fixed view comparison for accessibilityt since it was
not anisymmetric.

bug:5932640
bug:5605641

Change-Id: Icc983bf4eafefa42b65920b3782ed8a25518e94f
/frameworks/base/core/java/android/view/ViewRootImpl.java
09dd116cd39613a3736dbbf028544e1655002430 17-Apr-2012 John Reck <jreck@google.com> Fix a bug with enterTouchMode removing focus

Bug: 6347083
Fix an issue where enterTouchMode would remove focus from the
view that already has focus and is focusableInTouchMode. This
causes issues with WebView, as it updates internal state when
losing and gaining focus.

Change-Id: I5c1f72cc08baf3445e2be9e0496606a53fb9929e
/frameworks/base/core/java/android/view/ViewRootImpl.java
4213804541a8b05cd0587b138a2fd9a3b7fd9350 20-Mar-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility focus - framework

Usefulness: Keep track of the current user location in the screen when
traversing the it. Enabling structural and directional
navigation over all elements on the screen. This enables
blind users that know the application layout to efficiently
locate desired elements as opposed to try touch exploring the
region where the the element should be - very tedious.

Rationale: There are two ways to implement accessibility focus One is
to let accessibility services keep track of it since they
have access to the screen content, and another to let the view
hierarchy keep track of it. While the first approach would
require almost no work on our part it poses several challenges
which make it a sub-optimal choice. Having the accessibility focus
in the accessibility service would require that service to scrape
the window content every time it changes to sync the view tree
state and the accessibility focus location. Pretty much the service
will have to keep an off screen model of the screen content. This
could be quite challenging to get right and would incur performance
cost for the multiple IPCs to repeatedly fetch the screen content.
Further, keeping virtual accessibility focus (i.e. in the service)
would require sync of the input and accessibility focus. This could
be challenging to implement right as well. Also, having an unlimited
number of accessibility services we cannot guarantee that they will
have a proper implementation, if any, to allow users to perform structural
navigation of the screen content. Assuming two accessibility
services implement structural navigation via accessibility focus,
there is not guarantee that they will behave similarly by default,
i.e. provide some standard way to navigate the screen content.
Also feedback from experienced accessibility researchers, specifically
T.V Raman, provides evidence that having virtual accessibility focus
creates many issues and it is very hard to get right.
Therefore, keeping accessibility focus in the system will avoid
keeping an off-screen model in accessibility services, it will always
be in sync with the state of the view hierarchy and the input focus.
Also this will allow having a default behavior for traversing the
screen via this accessibility focus that is consistent in all
accessibility services. We provide accessibility services with APIs to
override this behavior but all of them will perform screen traversal
in a consistent way by default.

Behavior: If accessibility is enabled the accessibility focus is the leading one
and the input follows it. Putting accessibility focus on a view moves
the input focus there. Clearing the accessibility focus of a view, clears
the input focus of this view. If accessibility focus is on a view that
cannot take input focus, then no other view should have input focus.
In accessibility mode we initially give accessibility focus to the topmost
view and no view has input focus. This ensures consistent behavior accross
all apps. Note that accessibility focus can move hierarchically in the
view tree and having it at the root is better than putting it where the
input focus would be - at the first input focusable which could be at
an arbitrary depth in the view tree. By default not all views are reported
for accessibility, only the important ones. A view may be explicitly labeled
as important or not for accessibility, or the system determines which one
is such - default. Important views for accessibility are all views that are
not dumb layout managers used only to arrange their chidren. Since the same
content arrangement can be obtained via different combintation of layout
managers, such managers cannot be used to reliably determine the application
structure. For example, a user should see a list as a list view with several
list items and each list item as a text view and a button as opposed to seeing
all the layout managers used to arrange the list item's content.
By default only important for accessibility views are regared for accessibility
purposes. View not regarded for accessibility neither fire accessibility events,
nor are reported being on the screen. An accessibility service may request the
system to regard all views. If the target SDK of an accessibility services is
less than JellyBean, then all views are regarded for accessibility.
Note that an accessibility service that requires all view to be ragarded for
accessibility may put accessibility focus on any view. Hence, it may implement
any navigational paradigm if desired. Especially considering the fact that
the system is detecting some standard gestures and delegates their processing
to an accessibility service. The default implementation of an accessibility
services performs the defualt navigation.

bug:5932640
bug:5605641

Change-Id: Ieac461d480579d706a847b9325720cb254736ebe
/frameworks/base/core/java/android/view/ViewRootImpl.java
067b091d46c3c2d11a33d25e81c8348fb609b7ab 13-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility query APIs report invisible views.

1. The accessibility querying APIs failed to check whether
all predecessors of a view are visible before reporting it.

bug:6291855

Change-Id: I364a6f08e8d02c7105c00c9fdff0fec033829554
/frameworks/base/core/java/android/view/ViewRootImpl.java
aa6f3de253db6c0702de0cc40028750c1fcfb22c 10-Apr-2012 Svetoslav Ganov <svetoslavganov@google.com> Some view not shown on the screen are reported for accessibility.

1. Some applications are keeping around visible views off screen
to improve responsiveness by drawing them in layers, etc. While
such a view is not visible on the screen the accessibility layer
was reporting it since it was visible. Now the check is improved
to verify whether the view is attached, is in visible window,
is visible, and has a rectangle that is not clipped by its
predecessors.

2. AccessibilityNodeInfo bounds in screen were not properly set
since only the top left point was offset appropriately to
take into account any predecessor's transformation matrix
and the not transformed width and height were used. Now
the bounds are properly offset.

bug:6291855

Change-Id: I244d1d9af81391676c1c9e0fe86cf4574ff37225
/frameworks/base/core/java/android/view/ViewRootImpl.java
edbca1285e4757900e43d31087451d1953555d7d 05-Apr-2012 Romain Guy <romainguy@google.com> Make sure we clean up after ourselves

Because of the mAdded=false statement a few lines above, a large section
of doDie() was not executed. Things would eventually get cleaned up
but it seems better to do it at the right time.

Change-Id: I1a2f3a8e05057dd7cd7205b6d3f9c145d6c0241d
/frameworks/base/core/java/android/view/ViewRootImpl.java
25eba5c5029bd91ff7e396b2cca0e4ce024124ed 05-Apr-2012 Romain Guy <romainguy@google.com> Add a new OnDrawListener to ViewRoot

This can be used by app to efficiently listen for draw passes. This listener
is guaranteed to not generate any garbage unlike OnPreDrawListener.

Change-Id: Ida40d11a3f8a5d2617bafe722906ee5c9af48602
/frameworks/base/core/java/android/view/ViewRootImpl.java
3a3a6cfd8ec12208ca75c0d0d871d19d76c34194 26-Mar-2012 Dianne Hackborn <hackbod@google.com> Add new feature to let apps layout over status bar / system bar.

The main change is a few new flags you can supply to
View.setSystemUiVisibility(). One is a new visibility mode,
SYSTEM_UI_FLAG_FULLSCREEN, which is basically the same as
the global FLAG_FULLSCREEN option for windows, but driven as
part of the system UI state.

There are also three new flags for telling the framework that you
would like to have your application's UI ignore screen
decorations -- SYSTEM_UI_FLAG_LAYOUT_NO_NAVIGATION for going
behind the navigation bar and SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
for ignoring full screen decorations (that is the status bar).

In combination with this you can use SYSTEM_UI_FLAG_LAYOUT_STABLE
to have the framework report consistent insets to your application.

When using NO_NAVIGATION, when the user taps the screen we now
also automatically clear ONLY_CONTENT, so that we atomically show
both UI elements. This should make it easy for apps like video
players that want to move between fully full-screen and regular
modes.

The ActionBar has also been extended when in overlay mode so
that it will adjust the system window insets to also account
for its space, and allow it to be hidden using the new
SYSTEM_UI_FLAG_FULLSCREEN.

Change-Id: Ic8db1adec49a0f420bfe40c1d92eb21307856d0b
/frameworks/base/core/java/android/view/ViewRootImpl.java
fa8b27c858438554fd94c014de959d8ec6b208bb 30-Mar-2012 Jeff Brown <jeffbrown@google.com> Improve responsiveness by always consuming batched events.

Change-Id: I2eb88f8fde97ce0cd820f39da4ebe8698a7db95c
/frameworks/base/core/java/android/view/ViewRootImpl.java
a08f3e866a46c990e786defa95013ee0313b0887 30-Mar-2012 Jeff Brown <jeffbrown@google.com> Merge "Enable vsync traversals by default."
ebb2d8d708c5c58c79ae88ac2bd10450a856f702 24-Mar-2012 Jeff Brown <jeffbrown@google.com> Enable vsync traversals by default.

Improved how the various callbacks are managed and sequenced
to reduce code duplication.

Added a heuristic to avoid postponing traversals until
the next vsync frame if we did not actually do any drawing during
the previous frame. This helps in the very common case where
drawing occurs in response to input.

Change-Id: I277d9eeaf50408f8745a3cfd181db1d140770658
/frameworks/base/core/java/android/view/ViewRootImpl.java
a998dff5d49a423aaf7097aa8f96bf5bdc681d25 24-Mar-2012 Romain Guy <romainguy@google.com> Destroy the hardware renderer when ViewRootImpl's die is post-poned
Bug #6109035

ViewRootImpl.die() can be invoked in such a way that doDie() will be
executed later. On memory limited device, an eglTerminate() may happen
before doDie() is executed which leads to unstable behaviors. This
change makes sure the renderer is destroyed as soon as possible.

Change-Id: I3322410cdd744b464951e2055aeade6069d1d673
/frameworks/base/core/java/android/view/ViewRootImpl.java
006f0e41abca961bade88908d7ef56ae63c429fb 21-Mar-2012 Craig Mautner <cmautner@google.com> Override not drawing to screen when screen is off.

A new test had been added to performDraw to provide an early return if
the screen was off. Drawing should have proceeded however if
mReportNextDraw is set. Otherwise views that turn on the screen (such
as the alarm) are not shown.

Fixes bug 6168158.

Change-Id: If9013d9dbd39d60ee1de8aeb3e0c1facbc5a7db5
/frameworks/base/core/java/android/view/ViewRootImpl.java
7b2f8b8fb7064a1d3b6d942b978c30c24c9d7299 20-Mar-2012 Romain Guy <romainguy@google.com> Pre-scale bitmaps on the native heap

Change-Id: I9819b532b89a997ab775b31ffee46445f1d16e20
/frameworks/base/core/java/android/view/ViewRootImpl.java
51e4d4db296c252641161b39e98f49acebc46062 16-Mar-2012 Romain Guy <romainguy@google.com> Better implementation to clear display lists

Change-Id: I58f9af4bae70a8117db1455a50c0c5daf19b2f4a
/frameworks/base/core/java/android/view/ViewRootImpl.java
481c1570dc5cdf58265b53f657801709dd05d1df 09-Mar-2012 Jeff Brown <jeffbrown@google.com> Add Java wrappers for new atrace functionality.

Instrument a few parts of the input dispatcher and the
view hierarchy.

Change-Id: I49285c9fb3502253baa1ffed60f521b8c24fccaf
/frameworks/base/core/java/android/view/ViewRootImpl.java
df813c03b16ed32c25a8c8fee82a7a98088ac940 09-Mar-2012 Jeff Brown <jeffbrown@google.com> Merge "Use the Choreographer for Drawable animations."
bb9908b828a8cfd5965553be66faa6af89973697 08-Mar-2012 Romain Guy <romainguy@google.com> Dispatch screen state change events to Views
Bug #6120957

Using this new callback, views can interrupt and resume their
animations or other periodic tasks based on the current state
of the display.

Change-Id: I398f4abd421e9c5f207107bf1009a7b92cf45daa
/frameworks/base/core/java/android/view/ViewRootImpl.java
250069bf6bf3d7e2ef85c49e0cd100e80c3c8b7d 08-Mar-2012 Romain Guy <romainguy@google.com> Merge "Ignore draw requests when the display is off"
7ae9d5faad5816f7e567ec1ec77e78d746cf7e5c 06-Mar-2012 Jeff Brown <jeffbrown@google.com> Use the Choreographer for Drawable animations.

Change-Id: Ifcbf33434bf3c32d1900fd0b3f5bde004604ce8a
/frameworks/base/core/java/android/view/ViewRootImpl.java
5bebea436e631aa77aeb0f39a34c9e830c9638f5 06-Mar-2012 Jeff Brown <jeffbrown@google.com> Rename remove callback methods.

Change-Id: Ib9ef32fedbe0db2ea5efd250693915d626d7d8ae
/frameworks/base/core/java/android/view/ViewRootImpl.java
6cb7b46c56449e84434b11eb12f9b8977fcd0398 05-Mar-2012 Jeff Brown <jeffbrown@google.com> Change widgets to post invalidate to the animation timer.

Change-Id: I8377e924529fb9d8afd8a834003a17de616e8e87
/frameworks/base/core/java/android/view/ViewRootImpl.java
7e4e561bc717a6eea4e0d06ec4173ad27420425f 05-Mar-2012 Romain Guy <romainguy@google.com> Ignore draw requests when the display is off

When WindowManagerService's events are enabled/disabled, the state of the
display is dispatched to the known windows. This allows ViewRootImpl to
ignore draw requests until the screen is turned back on. This can potentially
lead to significant battery savings. For instance, a launcher widget showing
a repeating animation will cause the CPU and the GPU to wake up regularly
without this change.
(Change submitted by Intel and merged manually)

Change-Id: I7f93b0e60c3e6de1705f619e80860c36b1cdb978
/frameworks/base/core/java/android/view/ViewRootImpl.java
00d0c14a0fe8e6dff8dd3e230ee4b61dd275f860 24-Feb-2012 Svetoslav Ganov <svetoslavganov@google.com> Regression: Cannot query the content of certain windows.

1. A bad merge on my part caused ViewRootImpl not to register
for accessibility state change.

bug:6064348

Change-Id: Idf7b8b444e9021e9d9ec3749164cfe448c8268ab
/frameworks/base/core/java/android/view/ViewRootImpl.java
42d840b91d161fe98ebe3305f011b3b0f6d4561c 24-Feb-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Fixing issues with the AccessibilityNodeInfo cache."
57c7fd5a43237afc5e8ef31a076e862c0c16c328 24-Feb-2012 Svetoslav Ganov <svetoslavganov@google.com> Fixing issues with the AccessibilityNodeInfo cache.

1. Before there were two caches one in the app process that
kept track only the ids of infos that were given to a
querying client and one in the querying client that
holds the infos. This design requires precise sync
between the caches. Doing that is somehow complicated
since the app has cache for each window and it has
to intercept all accessibility events from that window
to manage the cache. Each app has to have a cache for
each querying client. This approach would guarantee that
no infos are fetched twice but due to its stateful nature
and the two caches is tricky to implement and adds
unnecessary complexity. Now there is only one cache in
the client and the apps are stateless. The client is
passing flags to the app that are a clue what nodes to
prefetch. This approach may occasionally fetch a node
twice but it is considerably simpler and stateless
from the app perspective - there is only one cache.
Fetching a node more than once does not cause much
overhead compared to the IPC.

Change-Id: Ia02f6fe4f82cff9a9c2e21f4a36747de0f414c6f
/frameworks/base/core/java/android/view/ViewRootImpl.java
cfef12374c15b11b3c2a1041582be9728152e15d 23-Feb-2012 Romain Guy <romainguy@google.com> Perform early intersect to avoid unnecessary draws

Change-Id: I48d61c4488e622f93733d8e53a50c93e6a20166d
/frameworks/base/core/java/android/view/ViewRootImpl.java
0d04e245534cf777dfaf16dce3c51553837c14ff 21-Feb-2012 Svetoslav Ganov <svetoslavganov@google.com> Improving accessibility APIs used for UI automation.

1. UiTestAutomationBridge was accessing the root node in the
active window by tracking the accessibility event stream
and keeping the last active window changing event. Now
the bridge is stateless and the root node is fetched by
passing special window and view id with the request to
the system.

2. AccessibilityNodeInfos that are cached were not finished,
i.e. not sealed, causing exception when trying to access
their children or rpedecessors.

3. AccessibilityManagerService was not properly restoring its
state after the UI automation bridge disconnects from it.
I particular the devices was still in explore by touch mode
event if no services are enabled and the sutomation bridge
is disconnected.

4. ViewRootImpl for the focused window now fires accessibility
events when accessibility is enabled to allow accessibility
services to determine the current user location.

5. Several missing null checks in ViewRootImpl are fixed since
there were scenraios in which a NPE can occur.

6. Update the internal window content querying tests.

7. ViewRootImpl was firing one extra focus event.
bug:6009813
bug:6026952

Change-Id: Ib2e058d64538ecc268f9ef7a8f36ead047868a05
/frameworks/base/core/java/android/view/ViewRootImpl.java
539ee8716b4f81260bab2e9f3dc5d88d81c99985 04-Feb-2012 Adam Powell <adamp@google.com> Add transient state tracking to Views

Transient state is temporary bookkeeping that Views need to perform
that the app should not need to be aware of. Examples include text
selection regions and animation state.

Transient state is a problem for AdapterViews like ListView that do
view recycling. Unless the app takes responsibility for tracking and
restoring transient state as if it were a part of the adapter's data
set, it cannot correctly recycle views. Selections disappear when an
EditText is scrolled out of sight and animations seem to play on the
wrong views.

Views can now flag themselves as having transient state. (As the name
implies, this should be a temporary condition.) If a ViewGroup
contains a child with transient state, that ViewGroup also has
transient state.

AbsListView's recycler now tracks views with transient state
separately. Views with transient state will be retained, and until a
data set change occurs the same view will be reused for that position
instead of calling the adapter's getView() method.

The API to set and check transient state is currently hidden.

Change-Id: Idfd8eaac2c548337686d8d9f98fda4c64be5b8a0
/frameworks/base/core/java/android/view/ViewRootImpl.java
e0dbd002750856e55d637e883b629e09adfc8a4e 16-Feb-2012 Jeff Brown <jeffbrown@google.com> Mark input and sensor messages as asynchronous.

Set a barrier on traversals.

Vsync is still not enabled by default in this patch so there
should be no observable effect from these changes.

Change-Id: Ie12081b95a8f1e81ed686edf747cc62f2e044b7e
/frameworks/base/core/java/android/view/ViewRootImpl.java
a175a5b7ea3682cb58cca7f9726d0b8171cd549d 16-Feb-2012 Jeff Brown <jeffbrown@google.com> Encapsulate the ViewRootImpl's handler.

This change makes it much easier to make sense of the messages that
get posted to the ViewRootImpl's handler by encapsulating their point
of dispatch within the ViewRootImpl itself.

As part of this change, the View.AttachInfo now carries a reference
to the ViewRootImpl itself, which simplifies some code that used
to try to find the ViewRootImpl by getting the root view's parent.

In principle, it might have been nice to hide the ViewRootImpl from
the View hierarchy but in practice the two were coupled in many ways.

Change-Id: I51ebccdf5f8c8c505cd6f17cdf594174d041dc54
/frameworks/base/core/java/android/view/ViewRootImpl.java
4a06c8008b2edd6677f9a411af79b0a4971b87fe 16-Feb-2012 Jeff Brown <jeffbrown@google.com> Simplify Choreographer API.

Removed the listeners and schedule animation / draw methods.
Instead all requests are posted as one-shot callbacks, which is a
better match for how clients actually use the Choreographer.

Bug: 5721047
Change-Id: I113180b2713a300e4444d0d987f52b8157b7ac15
/frameworks/base/core/java/android/view/ViewRootImpl.java
b36a0ac9709e9e1c7098559c0435cfbdc09e6c46 15-Feb-2012 Svetoslav Ganov <svetoslavganov@google.com> Incorrect behavior of View clear focus v2.0.

The framework tries to have a focused view all the time. For
that purpose when a view's focus is cleared the focus is given
to the first focusable found from the top. The implementation
of this behavior was causing the following issues:

1. If the fist focusable View tries to clear its focus it
was getting focus but the onFocusChange callbacks were not
properly invoked. Specifically, the onFocusChange for
gaining focus was called first and then the same
callback for clearing focus. Note that the callback
for clearing focus is called when the View is already
focused.

2. If not the first focusable View tries to clear focus,
the focus is given to another one but the callback
for getting focus was called before the one for clearing,
so client code may be mislead that there is more than
one focused view at a time.

3. (Nit) The implementaion of clearFocus and unFocus in ViewGroup
was calling the super implementaion when there is a
focused child. Since there could be only one focused View,
having a focused child means that the group is not focused
and the call to the super implementation is not needed.

4. Added unit tests that verify the correct behavior, i.e.
the focus of the first focused view cannot be cleared
which means that no focus change callbacks are invoked.
The callbacks should be called in expected order.
Now the view focus clear precedes the view focus gain
callback. However, in between is invoked the global
focus change callback with the correct values. We may
want to call that one after the View callbacks. If
needed we can revisit this.

Change-Id: I8cfb141c948141703093cf6fa2037be60861cee0
/frameworks/base/core/java/android/view/ViewRootImpl.java
dd29f8c4e3db3338bc055302145c3bc51a27566f 15-Feb-2012 Amith Yamasani <yamasani@google.com> Merge "Revert "Incorrect behavior of View clear focus.""
73eb97f628b298c7bd032aa9db11dadf05f5b539 15-Feb-2012 Amith Yamasani <yamasani@google.com> Revert "Incorrect behavior of View clear focus."

This reverts commit c6fd88e213703a581fe4680259981f09ae0444f2
/frameworks/base/core/java/android/view/ViewRootImpl.java
072ec96a4900d4616574733646ee46311cb5d2cb 07-Feb-2012 Jeff Brown <jeffbrown@google.com> Implement batching of input events on the consumer side.

To support this feature, the input dispatcher now allows input
events to be acknowledged out-of-order. As a result, the
consumer can choose to defer handling an input event from one
device (because it is building a big batch) while continuing
to handle input events from other devices.

The InputEventReceiver now sends a notification when a batch
is pending. The ViewRoot handles this notification by scheduling
a draw on the next sync. When the draw happens, the InputEventReceiver
is instructed to consume all pending batched input events, the
input event queue is fully processed (as much as possible),
and then the ViewRoot performs traversals as usual.

With these changes in place, the input dispatch latency is
consistently less than one frame as long as the application itself
isn't stalled. Input events are delivered to the application
as soon as possible and are handled as soon as possible. In practice,
it is no longer possible for an application to build up a huge
backlog of touch events.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420

Change-Id: I42c01117eca78f12d66d49a736c1c122346ccd1d
/frameworks/base/core/java/android/view/ViewRootImpl.java
f9261d20b3773f9785d98f32f62ccfedefba8083 03-Feb-2012 Jeff Brown <jeffbrown@google.com> Process input events immediately when received.

Reduce the latency for handling input events by ensuring that they are
handled as soon as they are received from the dispatcher. This also
makes it easier for the input system to intelligently batch motion events.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420
Change-Id: I0b3f6cbb3de5ac3c4eed35dfc774d6bd4a0b07fc
/frameworks/base/core/java/android/view/ViewRootImpl.java
c38fa1f63674971f9ac6ced1a449fb81026b62f7 02-Feb-2012 Chet Haase <chet@google.com> Add Developer Option setting for Animator scaling.

This new setting allows users to set a scale factor for the
duration and startDelay of all Animator-based animations. This
setting is very similar to the Transition animation scale and
Window animation scale settings, except this one applies specifically
to Animator animations. The property is only accessible by users
through the Settings UI, not programmatically. The value applies
system-wide and is picked up per-process at the time of the first
ValueAnimator construction.

This is an update to a previous CL; this approach uses the WindowManager
to store the animator scale settings, instead of SystemProperties.

Change-Id: I8295fab060aa6d597ae507ded8f9c9d6077be966
/frameworks/base/core/java/android/view/ViewRootImpl.java
bbf1bc8b6c3348265930ce08506efbbd3c5ab61f 02-Feb-2012 Romain Guy <romainguy@google.com> Merge "Add optional metadata to initiliaze the render threat."
211370fd943cf26905001b38b8b1791851b26adc 02-Feb-2012 Romain Guy <romainguy@google.com> Add optional metadata to initiliaze the render threat.

The render threat is likely to break your application if you initiate it.
As such it must be explicitely requested using the following meta-data
tag in your manifest's application tag:

<meta-data android:name="android.graphics.renderThread" android:value="true" />

Change-Id: Ibf0a48af2a0d091562bf6907eac970e3d1d601c4
/frameworks/base/core/java/android/view/ViewRootImpl.java
2eecea3b48ece6f45b30fef9b41dc20075ccc94f 01-Feb-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Speedup the accessibility window querying APIs and clean up."
c6fd88e213703a581fe4680259981f09ae0444f2 26-Jan-2012 Svetoslav Ganov <svetoslavganov@google.com> Incorrect behavior of View clear focus.

The framework tries to have a focused view all the time. For
that purpose when a view's focus is cleared the focus is given
to the first focusable found from the top. The implementation
of this behavior was causing the following issues:

1. If the fist focusable View tries to clear its focus it
was getting focus but the onFocusChange callbacks were not
properly invoked. Specifically, the onFocusChange for
gaining focus was called first and then the same
callback for clearing focus. Note that the callback
for clearing focus is called when the View is already
focused. Also note that at the end the View did not
clear its focus, hence no focus change callbacks
should be invoked.

2. If not the first focusable View tries to clear focus,
the focus is given to another one but the callback
for getting focus was called before the one for clearing,
so client code may be mislead that there is more than
one focused view at a time.

3. (Nit) The implementaion of clearFocus and unFocus in ViewGroup
was calling the super implementaion when there is a
focused child. Since there could be only one focused View,
having a focused child means that the group is not focused
and the call to the super implementation is not needed.

4. Added unit tests that verify the correct behavior, i.e.
the focus of the first focused view cannot be cleared
which means that no focus change callbacks are invoked.
The callbacks should be called in expected order.
Now the view focus clear precedes the view focus gain
callback. However, in between is invoked the global
focus change callback with the correct values. We may
want to call that one after the View callbacks. If
needed we can revisit this.

Change-Id: Iee80baf5c75c82d3cda09679e4949483cad475f1
/frameworks/base/core/java/android/view/ViewRootImpl.java
79311c4af8b54d3cd47ab37a120c648bfc990511 18-Jan-2012 Svetoslav Ganov <svetoslavganov@google.com> Speedup the accessibility window querying APIs and clean up.

1. Now when an interrogating client requires an AccessibilibtyNodeInfo
we aggressively prefetch all the predecessors of that node and its
descendants. The number of fetched nodes in one call is limited to
keep the APIs responsive. The prefetched nodes infos are cached in
the client process. The node info cache is invalidated partially or
completely based on the fired accessibility events. For example,
TYPE_WINDOW_STATE_CHANGED event clears the cache while
TYPE_VIEW_FOCUSED removed the focused node from the cache, etc.
Note that the cache is only for the currently active window.
The ViewRootImple also keeps track of only the ids of the node
infos it has sent to each querying process to avoid duplicating
work. Usually only one process will query the screen content
but we support the general case. Also all the caches are
automatically invalidated so not additional bookkeeping is
required. This simple strategy leads to 10X improving the
speed of the querying APIs.

2. The Monkey and UI test automation framework were registering a
raw event listener for accessibility events and hence perform
connection and cache management in similar way to an AccessibilityService.
This is fragile and requires the implementer to know internal framework
stuff. Now the functionality required by the Monkey and the UI automation
is encapsulated in a new UiTestAutomationBridge class. To enable this
was requited some refactoring of AccessibilityService.

3. Removed the *doSomethiong*InActiveWindow methods from the
AccessibilityInteractionClient and the AccessibilityInteractionConnection.
The function of these methods is implemented by the not *InActiveWindow
version while passing appropriate constants.

4. Updated the internal window Querying tests to use the new
UiTestAutomationBridge.

5. If the ViewRootImple was not initialized the querying APIs of
the IAccessibilityInteractionConnection implementation were
returning immediately without calling the callback with null.
This was causing the client side to wait until it times out. Now
the client is notified as soon as the call fails.

6. Added a check to guarantee that Views with AccessibilityNodeProvider
do not have children.

bug:5879530

Change-Id: I3ee43718748fec6e570992c7073c8f6f1fc269b3
/frameworks/base/core/java/android/view/ViewRootImpl.java
44d79747b5e434e8f43928b5548442c65e40e5c3 13-Jan-2012 Romain Guy <romainguy@google.com> Remove unused parameter

Change-Id: I0896b2cdb9f1fa9c5e191e4ea425e22ac6f10f29
/frameworks/base/core/java/android/view/ViewRootImpl.java
bdc18b28eb04b8c8cc00313096f8bfb142e407e3 09-Dec-2011 Jeff Brown <jeffbrown@google.com> am 03e63427: am 8e0ecbfc: Merge "Shortcut keys should be handled on down, not up." into ics-mr1

* commit '03e634270d880407316b51fac2278e604fc82703':
Shortcut keys should be handled on down, not up.
7bedf2449041a425899448cb672e91b0a5c97c62 08-Dec-2011 Jeff Brown <jeffbrown@google.com> Shortcut keys should be handled on down, not up.

Bug: 5720360
Change-Id: I3afc278e576ea992c76f024c8b6bad14b214239c
/frameworks/base/core/java/android/view/ViewRootImpl.java
07069a04ef2e52ad6cebd9041b5288bebd811a38 07-Dec-2011 Jeff Brown <jeffbrown@google.com> Fix PIN pad.

Some widgets apparently inject keys into the ViewRoot by sending
a DISPATCH_KEY message to its handler. Ugh.

Bug: 5711577
Change-Id: Ibe9aaf705095d152ec866c536f31f5d85e27b97f
/frameworks/base/core/java/android/view/ViewRootImpl.java
96e942dabeeaaa9ab6df3a870668c6fe53d930da 01-Dec-2011 Jeff Brown <jeffbrown@google.com> Use a Choreographer to schedule animation and drawing.

Both animations and drawing need to march to the beat of
the same drum, but the animation system doesn't know
abgout the view system and vice-versa so neither one
can drive the other.

We introduce the Choreographer as a drummer to keep
everyone in time and ensure a magnificent performance.

This patch enabled VSync based animations and drawing by
default. Two system properties are provided for testing
purposes to control the behavior.

"debug.choreographer.vsync": Enables vsync based animation
timing. Defaults to true. When false, animations are
timed by posting delayed messages to a message queue in
the same way they used to be before this patch.

"debug.choreographer.animdraw": Enables the use of the animation
timer to drive drawing such that drawing is synchronized with
animations (in other words, with vsync or the timing loop).
Defaults to true. When false, layout traversals and drawing
are posted to the message queue for execution without any delay or
synchronization in the same way they used to be before this patch.

Stubbed out part of the layoutlib animation code because it
depends on the old timing loop (opened bug 5712395)

Change-Id: I186d9518648e89bc3e809e393e9a9148bbbecc4d
/frameworks/base/core/java/android/view/ViewRootImpl.java
92cc2d8dc35f2bdd1bb95ab24787066371064899 02-Dec-2011 Jeff Brown <jeffbrown@google.com> Remove type tests when recycling input events.

Change-Id: I1c2d5980a763c457a0546bbf601e686c601a4c03
/frameworks/base/core/java/android/view/ViewRootImpl.java
32cbc3855c2a971aa5a801fd339fb6a37db91a1a 01-Dec-2011 Jeff Brown <jeffbrown@google.com> Refactor InputQueue as InputEventReceiver.

This change simplifies the code associated with receiving input
events from input channels and makes it more robust. It also
does a better job of ensuring that input events are properly
recycled (sometimes we dropped them on the floor).

This change also adds a sequence number to all events, which is
handy for determining whether we are looking at the same event or a
new one, particularly when events are recycled.

Change-Id: I4ebd88f73b5f77f3e150778cd550e7f91956aac2
/frameworks/base/core/java/android/view/ViewRootImpl.java
4952dfd16a0f839559ffa78f5016394caf85294f 01-Dec-2011 Jeff Brown <jeffbrown@google.com> Ensure input events are processed in-order in the application.

As it turns out, it used to be possible for there to be multiple
input events simultaneously in flight in an application. Although
it worked, it made it hard to reason about what was going on.
The problem was somewhat exacerbated by the introduction of a
queue of "InputEventMessage" objects as part of an earlier latency
optimization.

This change restores order from chaos and greatly simplifies the
invariants related to input event dispatch within the application.

Change-Id: I6de5fe61c1fe2ac3dd33edf770d949044df8a019
/frameworks/base/core/java/android/view/ViewRootImpl.java
95db2b20d7bc0aaf00b1d4418124f5cf0a755d74 01-Dec-2011 Jeff Brown <jeffbrown@google.com> Improve latency instrumentation.

Change-Id: I4edfa0a5659d207f7e46722e48ffa1dc43d2aa13
/frameworks/base/core/java/android/view/ViewRootImpl.java
c0b7f65ae0594e19d1272e5caf2d83638041d19c 29-Nov-2011 Dianne Hackborn <hackbod@google.com> am 496f6e2a: am b54980d1: Merge "Fix issue #5588689: Black camera preview after coming back from gmail" into ics-mr1

* commit '496f6e2ad656c5bb8a277e191554d16abd290b58':
Fix issue #5588689: Black camera preview after coming back from gmail
b54980d1d4d903f68cdfa952256afff01902cd94 29-Nov-2011 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #5588689: Black camera preview after coming back from gmail" into ics-mr1
d3ea6b40bb8f0fbc2a877963db1ab4fa0fc02b2f 29-Nov-2011 Chet Haase <chet@google.com> am 38928899: am 8990cb57: Merge "Fix flashing wifi dialog after rotating back from landscape." into ics-mr1

* commit '3892889952b0ad3fa0b095c96d8ae2ae110585e2':
Fix flashing wifi dialog after rotating back from landscape.
08837c246c9c27902c59b41c8661c2f27a4aa2bc 28-Nov-2011 Chet Haase <chet@google.com> Fix flashing wifi dialog after rotating back from landscape.

There was an error in some of the OpenGL layer logic such that we would
occasionally set up a layer for rendering and then not clean up when it was
done. This caused future OpenGL rendering to go into that layer instead of
to the buffers being displayed on the screen, resulting in artifacts including
flashes and displaying of stale content. This happened specifically when
using the wifi settings dialog with the InputMethod keyboard displayed,
but it was probably visible in other situations as well.

Issue #5628248: Flickering/flashing after entering password for WiFi

Change-Id: I38139f620b310f4309570fa7224552d2ee633999
/frameworks/base/core/java/android/view/ViewRootImpl.java
6d05fd3c795088ac60f86382df5a66d631e8a0cb 19-Nov-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5588689: Black camera preview after coming back from gmail

Make surface management between SurfaceView and the window manager
much more controlled, to ensure that SurfaceView always gets to report
the current surface is destroyed before the window manager actually
destroys it.

Also a small tweak to allow windows that have a wallpaper background
to still have a preview window. This makes launching home after it
has been killed feel much more responsive.

Change-Id: I0d22cf178a499601a770cb1dbadef7487e392d85
/frameworks/base/core/java/android/view/ViewRootImpl.java
3526b00a53a2582a51ff8b98ac1400a48f351107 22-Nov-2011 Romain Guy <romainguy@google.com> am c26e4d18: am 8cd39e3a: Merge "Notify views when EGL resources are about to be destroyed Bug #5639899" into ics-mr1

* commit 'c26e4d18a20ab0b3e769fb3e547994f1c27d6713':
Notify views when EGL resources are about to be destroyed Bug #5639899
31f2c2e94656530fbf6282803e62edb47e9a894d 21-Nov-2011 Romain Guy <romainguy@google.com> Notify views when EGL resources are about to be destroyed
Bug #5639899

Change-Id: I7c5d8bebf02294426f5b3ab1358a31c38a4fd064
/frameworks/base/core/java/android/view/ViewRootImpl.java
1333742bedc9b462024302f302e3a7f27053df66 11-Nov-2011 Akwasi Boateng <akwasi.boateng@ti.com> am cb0db030: Merge branch \'ics-mr1-plus-aosp\' of ssh://android-git:29418/platform/frameworks/base into ics-mr1-plus-aosp

* commit 'cb0db0306b5849a35d3d99eea1b34ce019c6f0d8':
Make the overridden ImageView#setVisibility remotable
Clamp non-monotonic stats instead of dropping.
DO NOT MERGE. Fix leak in LayoutTransition
Fix lastVisible/global rects
Fix Wimax-less build.
Fix leak in LayoutTransition
Deferring wallpaper update to improve workspace scrolling (issue 5506959)
Terminate EGL when an app goes in the background
boot animation is dithered and scaled
Fix NdefRecord byte-stream constructor.
PopupWindow dismiss() can get into a recursive loop.
Fold WiMAX state into the mobile RSSI.
Remove dedicated wimax icon to fix RSSI layout.
8ff6b9ebeeb24a6161ec6098e6bfdf8790ee5695 10-Nov-2011 Romain Guy <romainguy@google.com> Terminate EGL when an app goes in the background

This does not happen on high end gfx devices. This happens
only if only one EGL context is initialized in the current
process.

Change-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e
/frameworks/base/core/java/android/view/ViewRootImpl.java
2a639347aebb56febdef21a78c70fb0433adc1e5 05-Nov-2011 Chet Haase <chet@google.com> resolved conflicts for merge of aa4d2f69 to master

Change-Id: Iadb63ecf52d8bd2911276fa3db55a43c9c378620
1f4786bbe1ed7ae54b94cd52c0e1a4a826fecd68 02-Nov-2011 Chet Haase <chet@google.com> Improve Launcher drag performance.

Launcher swiping looks choppy. It's because we deliver the
motion events of the drags asynchronously, and sometimes we
may get an event to redraw before the motion event is posted, so we
end up drawing again without updating to the latest motion
information.

This fix makes input event processing more proactive. Every time
we run ViewRootImpl.performTraversals() (which is what
happens whenever we need to layout, measure, and/or draw), we
first process all pending input events, ensuring that we are
completely up-to-date with posted events prior to drawing, so that the
drawing we do is synchronous with the events we've received.
This eliminates the choppiness and means that we can now get the full
refresh rate on the screen with drag events.

The fix was done for Launcher, but it is pervasive in the system,
so this may fix other laggy drag behavior as well.

Change-Id: I8dbed6acadc2662f317f736e769f536f555701aa
/frameworks/base/core/java/android/view/ViewRootImpl.java
f31aba7346c6991ac8848f3b3992651a68781a10 29-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> Fixing the build breakage due to bad merge.

Change-Id: I2804bccc44e061229c3f7b2ad9e00b9e0a0ba916
/frameworks/base/core/java/android/view/ViewRootImpl.java
f79f476fd1e25d3d7bf77e890d064a503537e939 29-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> resolved conflicts for merge of c00d2ddc to master

Change-Id: I075cc5b5df2909152ee463f8a0c7534344b47c62
af5b4f471df108ffbe1c3861d18b2141710d7bf8 28-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> Fixing a memory leak in accessibility enteraction APIs.

1. AccessibilityInteractionConnection was non-static inner
class, hence keeping a handle to the enclosing ViewRootImpl
resulting in leaking activities.

bug:5525412

Change-Id: Ie438861663d623d503995844125d9e15d677fc32
/frameworks/base/core/java/android/view/ViewRootImpl.java
021078554b902179442a345a9d080a165c3b5139 04-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> Adding APIs to enable reporting virtual view hierarchies to accessibility serivces.

Added an interface that is the contract for a client to expose a virtual
view hierarchy to accessibility services. Clients impement this interface
and set it in the View that is the root of the virtual sub-tree. Adding
this finctionality via compostion as opposed to inheritance enables apps
to maintain backwards compatibility by setting the accessibility virtual
hierarchy provider on the View only if the API version is high enough.

bug:5382859

Change-Id: I7e3927b71a5517943c6cb071be2e87fba23132bf
/frameworks/base/core/java/android/view/ViewRootImpl.java
972b7d2c3bbb54a61a505d9d78927a158356ffb6 21-Oct-2011 Gilles Debunne <debunne@google.com> Merge "Typo in ViewRootImpl"
5ac84423a28fea4924eb1c389d647defe1c1b93c 19-Oct-2011 Gilles Debunne <debunne@google.com> Typo in ViewRootImpl

Change-Id: I4a5acfb091ce05f56cdbaa0a56809f377cbf9b39
/frameworks/base/core/java/android/view/ViewRootImpl.java
841d79497d9eff2d4df6948380b79db316d24dc3 18-Oct-2011 Chet Haase <chet@google.com> am 87bc53de: Merge "Make notification panel delete-all animation smoother" into ics-mr0

* commit '87bc53de2adf479ad5a5e226bf3d8fd31af6dc21':
Make notification panel delete-all animation smoother
2f2022afa1eb85018368398bd150e9575fc099c9 11-Oct-2011 Chet Haase <chet@google.com> Make notification panel delete-all animation smoother

Making the notfication delete-all animation smoother by carefully
choreographing the various parts of it. The problem with the previous
animation was that there was simply too much going on at the
same time, causing things like layout and recreating display-lists
in the middle of animations that became choppy as a result. This
approach swipes all items off quickly, then scrolls the shade up to the
top, making both sets of animations smoother as a result.

Fixes #5431207: Notification delete-all should be smoother

Change-Id: Iefe8ab5d661e05adcd10379dab85227d17904450
/frameworks/base/core/java/android/view/ViewRootImpl.java
856d4e1a872b5aed6792b33e0360554cb3d19eed 15-Oct-2011 Romain Guy <romainguy@google.com> Disable hardware acceleration for apps in compatibility mode

Change-Id: I2d1c01a30c6fe6fff85c2a9bd6ee6de98e1ed422
/frameworks/base/core/java/android/view/ViewRootImpl.java
85b9edf2da0534bc53d139bb88cda8866d265afe 07-Oct-2011 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #5371530: SYSTEMUI_FLAG_HIDE_NAVIGATION reasserts itself immediately"
9a230e01a1237749a8a19a5de8d46531b0c8ca6a 06-Oct-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5371530: SYSTEMUI_FLAG_HIDE_NAVIGATION reasserts itself immediately

This cleans up how ui flags are managed between the client and window manager.
It still reports the global UI mode state to the callback, but we now only clear
certain flags when the system goes out of a state (currently this just means the
hide nav bar mode), and don't corrupt other flags in the application when the
global state changes.

Also introduces a sequence number between the app and window manager, to avoid
using bad old data coming from the app during these transitions.

Change-Id: I40bbd12d9b7b69fc0ff1c7dc0cb58a933d4dfb23
/frameworks/base/core/java/android/view/ViewRootImpl.java
40e0383dce630ed9b2b1aa0e497709b89dfab6ef 06-Oct-2011 Chet Haase <chet@google.com> Fix issue #5384631: hw windows not resizing correctly

When the SystemUi becomes visible, the activity window resizes.
The hardware renderer was not begin resized to suit, so it was drawing
to a surface larger than that of the activity window, and some of the
rendering (like the action bar) appeared off the screen.

The fix is to keep track of the surface size in HardwareRenderer and to
recreate the surface when the size changes.

This change also removes the BUFFER_CHANGE flag from WindowManager.LayoutParams.
The only reason the flag existed was to trigger a hardware surface recreation,
but checking the old/new size is a more direct way of handling this.

Change-Id: I9d6bf6385794886d1d93c60609c170864cdcdfab
/frameworks/base/core/java/android/view/ViewRootImpl.java
2588a07730ff511329c87b5f61b20419b2443d48 04-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> Merge "The logic for not populating text to some accessibility events is scattered."
2cdedffcfa5594f9d516fa235d5edf4d4f92c21d 03-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> Accessibility services cannot obtain the source of an event coming from a root namespace descendant.

1. The user can touch the screen at an arbitrary location potentially crossing the root namespace
bounday which will send an accessibility event to accessibility services and they should be able
to obtain the event source. Also accessibility ids are guaranteed to be unique in the window.
Added a package scoped findViewByAccessibilityId method that dives into nested root namespaces.

2. Added accessibility support to the AnalogClock.

bug:5405934

Change-Id: I84edcb554bae41aafcbbc2723c5e62c1ef8a6ddf
/frameworks/base/core/java/android/view/ViewRootImpl.java
82e236d72ac197d6673d0b4d484fe5f0b9436731 30-Sep-2011 Svetoslav Ganov <svetoslavganov@google.com> The logic for not populating text to some accessibility events is scattered.

1. Some accessibility evenents should not and were not dispatched for
text population but there was no centralized location for enforcing
this - rather the system was firing them in a specific way or there
were conditions in a few places enforcing that. Now this is centralized
and clean.

2. Updated the documentation with some new event types the were lacking.

3. Explicitly stated in the documentaition which events are dispatched to
the sub-tree of the source for text populatation.

bug:5394527

Change-Id: I86e383807d777019ac98b970c7d9d02a2f7afac6
/frameworks/base/core/java/android/view/ViewRootImpl.java
4f59f8be0e177435a9a493668a74c793971b3bb5 16-Sep-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5300880: setSystemUiVisibility() always triggers a surface reallocation

Change-Id: Ia0a9d8acba6b62ef095e4c615099466c52eec8e4
/frameworks/base/core/java/android/view/ViewRootImpl.java
ea515aeafa01de6f50c854ee381b972ef2478284 15-Sep-2011 Svetoslav Ganov <svetoslavganov@google.com> Update the public APIs for finding views by text to optionally use content description.

1. Added flags to the search method to specify whether to match text or
content description or both.

2. Added test case for the seach by content description.

3. Updated the code in AccessibilityManager service to reflect the latest
changes there so test automation service works - this is the fake
service used for UI automation.

Change-Id: I14a6779a920ff0430e78947ea5aaf876c2e66076
/frameworks/base/core/java/android/view/ViewRootImpl.java
180c48489f07ebd748700a5a312070583fefdb45 13-Sep-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5309443: Ninjump crashes on boot with...

...java.lang.IllegalArgumentException: Window type can not be
changed after the window is added

Change-Id: I4e34622c99d721fa214fd534a9bbfc8006184770
/frameworks/base/core/java/android/view/ViewRootImpl.java
aacbf9111b58f10f7474fbd3a8debb02713f8b18 08-Sep-2011 Svetoslav Ganov <svetoslavganov@google.com> Merge "Not visible view should not be announced or interacted with."
0b0a41d8e26eaf0f1d9d922621494daf40964a9a 08-Sep-2011 Svetoslav Ganov <svetoslavganov@google.com> Not visible view should not be announced or interacted with.

1. Some invisible views' text was reported by accessibility events.

2. Accessibility actions could have been perfromed on invisible views.

bug:5264355

Change-Id: I68184fb436a3e10e947ec6f1eae02aa3d0d1cb7f
/frameworks/base/core/java/android/view/ViewRootImpl.java
d56c6951755a902a354e13e5fa05fb0984132cc6 07-Sep-2011 Chet Haase <chet@google.com> Add end functionality to LayoutTransition

This new hidden API is called by ViewRootImpl when there is a pending
transition but the parent window is not visible.

Change-Id: Idd6a0959b391fae542e675e8740b6a16f8963678
/frameworks/base/core/java/android/view/ViewRootImpl.java
3791dc9b1c849bfacbff6de7fb53b77f414d1e4b 07-Sep-2011 Chet Haase <chet@google.com> Merge "Fix issue with LayoutTransition on non-visible windows."
61158c621d0834d6d4e1e0310596d9b7a1071178 07-Sep-2011 Chet Haase <chet@google.com> Fix issue with LayoutTransition on non-visible windows.

There's a problem with how LayoutTransition cleans up after itself
when the target view is in a Window that is not on the screen.
The quick fix is to always start (and therefore properly end and clear)
transitions, regardless of whether the window is in the tree.

Change-Id: I23f4f4f04176f3943e5c6e1d78acba0190a96930
/frameworks/base/core/java/android/view/ViewRootImpl.java
f21c9b0f52d5a1de5050f90f0818467fad014eaa 07-Sep-2011 Romain Guy <romainguy@google.com> Don't destroy a window's buffers when moving it

Change-Id: Ib08608373ae4299639c1b157421ba633e4293446
/frameworks/base/core/java/android/view/ViewRootImpl.java
6b0c11da5a7a7ea236fd9dc409d1ce7a33bff9c2 03-Sep-2011 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #5150899: Call activity takes 15MB we never get back."
3c4ce72c4d66d9ee041924259f20381b658c1529 03-Sep-2011 Chet Haase <chet@google.com> Fix artifact with LayoutTransitions on disappearing window.

Logic in performTraversals() starts a transition running at the
proper time. But when a view's parent window goes away, this transition
may not start at that time because drawing gets canceled. But the
transition still hung off of the ViewRoot, waiting until some later
drawing operation to kick it off. This resulted in some weird animations
like the Recents panel appearing and having a single item animate off of it.

The fix is to delete pending transitions when drawing is skipped.

Change-Id: I3ab7702c16e069644a163424f977350743e2cecc
/frameworks/base/core/java/android/view/ViewRootImpl.java
5d927c2d8e832fcfcb0154c8741f896001141ef4 02-Sep-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5150899: Call activity takes 15MB we never get back.

Persistent process can no longer use hardware acclerated drawing
when running on a low-memory device.

Change-Id: I3110335617af1c98fcede9bf41f4a1d0c20d0e87
/frameworks/base/core/java/android/view/ViewRootImpl.java
08a1c04b9668e51ca3043a4e531b7649b018b245 01-Sep-2011 Romain Guy <romainguy@google.com> Merge "Dispatch onDetachedFromWindow before destroying everything Bug #5245686"
16260e73f6c1c9dc94acf0d328a3c564426b8711 01-Sep-2011 Romain Guy <romainguy@google.com> Dispatch onDetachedFromWindow before destroying everything
Bug #5245686

Change-Id: I637178ee0bb47fbec9b59198b388bb8de22c1786
/frameworks/base/core/java/android/view/ViewRootImpl.java
cc4f7db698f88b633a286d8ab1105b28a474cd09 31-Aug-2011 Jeff Brown <jeffbrown@google.com> Fix input channel leak.
Bug: 5156144

Input channels could leak or simply live longer than they should
in some cases.

1. Monitor channels (used by the pointer location overlay) are never
unregistered, so they would leak.

Added code to handle failures in the receive callback by closing
the input channel.

2. The DragState held onto its input window and application handles
even after the input channel was disposed.

Added code to null these handles out when they are no longer needed.

3. Input channels previously used as input event targets would stick
around until the targets were cleared (usually on the next
event).

Added code to detect when the input dispatcher is in
an idle state and to proactively clear the targets then
to ensure that resources are released promptly.

4. Native input window handles held onto the input channel even
after the input window was removed from the input dispatcher.
Consequently, the input channel would not be disposed until
the input window handle itself was freed. Since the input
window handle is held from managed code, this meant that the
window's input channel could stick around until the next GC.

Refactored the input window handle to separate the properties
(info) and identify (handle) state into different objects.
Then modified the dispatcher to release the properties (info)
when no longer needed, including the input channel.

7. The pointer location overlay does not actually use its
standard input channel, only the monitor input channel.

Added INPUT_FEATURE_NO_INPUT_CHANNEL to allow windows to
request that they not be provided with an input channel
at all.

Improved some of the error handling logic to emit the status
code as part of the exception message.

Change-Id: I01988d4391a70c6678c8b0e936ca051af680b1a5
/frameworks/base/core/java/android/view/ViewRootImpl.java
eca9b1f53c2c291cbfb89b5f3cc45db7bdca6c7d 26-Aug-2011 Romain Guy <romainguy@google.com> Prevent crash in VPN settings
Bug #5217245

Change-Id: Ibacf4cbd40537cd417f1518b5ac4367a3f3d7d03
/frameworks/base/core/java/android/view/ViewRootImpl.java
12bde60b39affbfdcb7ef6317e0a5f99c3f41b10 25-Aug-2011 Svetoslav Ganov <svetoslavganov@google.com> Merge "Intra-process view hierarchy interrogation does not work."
6ff0037792619c4441d9d3caa4f9ab4f45c11236 25-Aug-2011 Dianne Hackborn <hackbod@google.com> Merge "Fix to show the correct HW accel background in the preview window."
07213e6d8895af10951851435adf96a779863f6c 25-Aug-2011 Dianne Hackborn <hackbod@google.com> Fix to show the correct HW accel background in the preview window.

Also tweak wallpaper service to do a cleaner transition to a
static wallpaper.

Change-Id: I876a32091f92dd5a529d7fd809d3b8e730bb7d2a
/frameworks/base/core/java/android/view/ViewRootImpl.java
fa6b35be126ffcc3b5818393c26aff724ac65daf 25-Aug-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5050039: Launcher is sometimes rendering underneath the system/status bar

It looks like this is caused by the change in HC to stop activities when
the screen is off. ViewRootImpl (a.k.a. ViewRoot) has special code to
avoid doing work when it is stopped, and it is now stopped when the screen
is off. The problem here is if the window's activity is stopped when the
window is first displayed, then it would never do the initial fitSystemWindows()
with the status bar offsets given by the window manager, and never do this
again until the status bar changes.

Also included here is some re-arranging of the code dealing with the offsets
changing, because it was dealt with in two places and only one had a bunch of
code dealing with HW accelerated drawing and performing the fade transition
between states. Now all of that is unified into one place.

Change-Id: I9828f02664cc622dbf186effb1f685a8aa4456a1
/frameworks/base/core/java/android/view/ViewRootImpl.java
8bd69610aafc6995126965d1d23b771fe02a9084 23-Aug-2011 Svetoslav Ganov <svetoslavganov@google.com> Intra-process view hierarchy interrogation does not work.

The content retrieval APIs are synchronous from a client's
perspective but internally they are asynchronous. The client thread
calls into the system requesting an action and providing a callback
to receive the result after which it waits up to a timeout for that
result. The system enforces security and then delegates the request
to a given view hierarchy where a message is posted (from a binder
thread) describing what to be performed by the main UI thread the
result of which it delivered via the mentioned callback. However,
the blocked client thread and the main UI thread of the target view
hierarchy can be the same one, for example an accessibility service
and an activity run in the same process, thus they are executed on the
same main thread. In such a case the retrieval will fail since the UI
thread that has to process the message describing the work to be done
is blocked waiting for a result is has to compute! To avoid this scenario
when making a call the client also passes its process and thread ids so
the accessed view hierarchy can detect if the client making the request
is running in its main UI thread. In such a case the view hierarchy,
specifically the binder thread performing the IPC to it, does not post a
message to be run on the UI thread but passes it to the singleton
interaction client through which all interactions occur and the latter is
responsible to execute the message before starting to wait for the
asynchronous result delivered via the callback. In this case the expected
result is already received so no waiting is performed.

bug:5138933

Change-Id: I382e2d8689f5189110226613c2387f553df98bd3
/frameworks/base/core/java/android/view/ViewRootImpl.java
50d133e290468fd149b5c03e46549afca2ee05f8 13-Aug-2011 Romain Guy <romainguy@google.com> <blink/> is not an acceptable default behavior.
Bug #5156334

Change-Id: I9f803b090e81f4e490d0cccd6347a0f9f64bd20f
/frameworks/base/core/java/android/view/ViewRootImpl.java
70a3f677bf015d8641f41d149b76d362bb2b801c 08-Aug-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5016544: IME keyboard hides folder rename text field.

Tweak some issues in TextView with the focus rect used to determing
where the scroll position needs to be. The ultimate problem was that
in various situations it would use the right-most selection position
cursor as the scroll location and when it adds 1 to make this a valid
rect we end up with a rectangle that is outside of the view.

Change-Id: Ia200c58e4e014d2a0a1be4761f9a1e5eb702a8e5
/frameworks/base/core/java/android/view/ViewRootImpl.java
c3166e15f8898a2ba66fb177efbddb1d0edf6140 09-Aug-2011 Romain Guy <romainguy@google.com> Don't draw more than what we need.

Change-Id: Ifeac66d379a48e8a1124188125e029421eb24226
/frameworks/base/core/java/android/view/ViewRootImpl.java
1d0c708961f824ac5171238c205a7bf328d5d8a5 04-Aug-2011 Romain Guy <romainguy@google.com> Destroy the EGL surface when the ViewRootImpl surface is invalid
Bug #5109839

Change-Id: Icebde9abf43b852397a73ffef519004993b46901
/frameworks/base/core/java/android/view/ViewRootImpl.java
cf15efba0792b052dca5baa350d9fb00e6a60667 02-Aug-2011 Romain Guy <romainguy@google.com> Properly cancel pending buffers on window size change

Change-Id: Id6108ce61a971673f3ebc8270e9dd00849c91ae5
/frameworks/base/core/java/android/view/ViewRootImpl.java
c68c913d357e2955d4bd7ca52829071e531c7825 29-Jul-2011 Dianne Hackborn <hackbod@google.com> Various work on out of memory managment.

- Improve how we handle processes that have shown UI, to take care
of more cases where we want to push them into the background LRU
list.
- New trim memory level for when an application that has done UI
is no longer visible to the user.
- Add APIs to get new trim memory callback.
- Add a host of new bind flags to tweak how the system will adjust
the OOM level of the target process.

Change-Id: I23ba354112f411a9f8773a67426b4dff85fa2439
/frameworks/base/core/java/android/view/ViewRootImpl.java
ea83503e8683531fac2534047e50bc1e5979b6dd 29-Jul-2011 Romain Guy <romainguy@google.com> Don't create hw layers when there's no hw context.
Bug #5093805

Change-Id: Ia58b3381c83b9a200e80020e5c1b9c337ad6c35c
/frameworks/base/core/java/android/view/ViewRootImpl.java
b6f7a27c59fd170b5d7617e43e21bfd8587f234e 28-Jul-2011 Romain Guy <romainguy@google.com> Merge "Reclaim more memory, more often."
65b345fa22b878e141b8fd8ece9c208df00fa40f 28-Jul-2011 Romain Guy <romainguy@google.com> Reclaim more memory, more often.

Yay.

Change-Id: I04557ad575c307a55088549f48f0e9ad994b7275
/frameworks/base/core/java/android/view/ViewRootImpl.java
c8ec222cd8e7d7056b0f01018ac0c38d2c7204c0 28-Jul-2011 Romain Guy <romainguy@google.com> Merge "Destroy layers and flush layers cache when a window is destroyed."
6d7475d666baefaa3ba9f0dcee25238739454241 28-Jul-2011 Romain Guy <romainguy@google.com> Destroy layers and flush layers cache when a window is destroyed.

Change-Id: I3fa1bc3ff50fb99e3d2e490925bd6b0a0f809fff
/frameworks/base/core/java/android/view/ViewRootImpl.java
3d5a703db83265f7914eed8580de986106abfad2 28-Jul-2011 Jeff Brown <jeffbrown@google.com> Merge "Report the external display size to the input reader."
912a7b32d0c59ba38265c5dd6ff84ce93f909a7f 27-Jul-2011 Romain Guy <romainguy@google.com> Make sure we have a current EGL context when invoking EGL
Bug #5081795

Change-Id: Iee3382d362a71c1e6c5c498b319bf7f7bcf5a2f0
/frameworks/base/core/java/android/view/ViewRootImpl.java
bc68a59c024bdb745dac8e2ec7408a9f30595f1a 25-Jul-2011 Jeff Brown <jeffbrown@google.com> Report the external display size to the input reader.

The input reader needs this information so that it knows how to
interpolate touches on an external touch screen.

Changed Display so that it asks the WindowManager what the real
display size is (as opposed to the raw display size). This means
it now takes into the forced display size set by
adb shell am display-size.

Replaced all calls to getRealWidth() / getRealHeight() /
getRealMetrics() in the WindowManager and replaced them with direct
usages of the mCurDisplayWidth / mCurDisplayHeight so that the WM
doesn't end up making a reentrant Binder call into itself.

Fixed the table status bar HeightReceiver so that it updates the
height on all configuration changes since it is possible that the
display size changed independently of an external HDMI display
being plugged / unplugged.

Improved the Display class documentation to make the distinctions
betweeen the various sizes clearer.

Change-Id: I3f75de559d3ebffed532ab46c4ae52c5e7f1da2b
/frameworks/base/core/java/android/view/ViewRootImpl.java
6dd005b48138708762bfade0081d031a2a4a3822 18-Jul-2011 Dianne Hackborn <hackbod@google.com> I. Can. Not. Stand. ViewAncestor.

It was done so we would have the name "ViewRoot" available for a
public API. However, the name "ViewAncestor" just makes no sense.
So instead, change it to ViewRootImpl.

Change-Id: If9599ca67896f339f6fefa7d1dde121201171d97
/frameworks/base/core/java/android/view/ViewRootImpl.java