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
Fixes: 29223302
If the surface only changed we want to just call onSurfaceChanged,
not onSurfaceCreated.
Change-Id: I65c8b210a7e34eaa2862020335ee7f6ef56eeac2
Un-reverts ag/1057448, but uses a version of Resources#getText
that returns null rather than throw an exception when no title
is available. This is the same call made before, so this change
should be safer.
Bug: 28744278
Change-Id: I8c123f4f6d74f796ab9e8ffcf955aaf881770da1
At the end of the animation (when going from larger to smaller),
we are left with a scaled surface, that we want to seamlessly
resize to an unscaled surface of the new size. Because we have scaled
the shadow region of the surface, the position of the content
will differ before and after the resize applies. We use new
SurfaceFlinger API to cause position updates to apply after
resize. Because we have to switch into SCALING_MODE_FREEZE,
we could end up prematurely cropping the window, so we
switch to using screen space crop for the pinned stack.
Bug: 28899837
Change-Id: I9b762a237413e4fa3d432e67d30c7125bfef484c
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
am: ddc6de1eda
* commit 'ddc6de1eda495790e6564438994df5d49ddf248f':
Fixed a few accessibility issues with notifications and groups
Change-Id: Iaa2ddc8bedaad3623190e65116f0d8b85687eb78
am: c5fc6c602c
* commit 'c5fc6c602c16f0e985d8f8ba7f94075229e52320':
Close IME when attaching dock stack
Change-Id: I40abf80fcea522c8082e622c33f3a6726f781145
am: e78ba24c17
* commit 'e78ba24c176fd6a0c54eaf7e52be545952ba1ab7':
Update the light center when the root view's layout changed
Change-Id: I03e6d183e2a98b4d08f1e5be74447ddf942e8337
am: c396f0f70e
* commit 'c396f0f70ef40ea0fb42a0872a13f4c4e9a6a5f0':
DO NOT MERGE Remove Pointer Capture API
Change-Id: Iede50a709849ed27cb9723a565b946e00fb23be7
am: 39e8022a75
* commit '39e8022a75507be06179c3de7358cebb1bb22e06':
Force pending transactions to flush before screenshot.
Change-Id: I2dc18293c1507a7f427c3ad554d3f70467dac98d
am: 7c17e70f2f
* commit '7c17e70f2f795ca06006ff2560c8b8211ce1dd52':
Changes based on API council feedback for performContextClick
Change-Id: Ibf53f8081db8b847d18eaa8fee983b677b62f9bc
am: 50c33d1ca1
* commit '50c33d1ca1218ec00eb37f66a7c11315603c9ef7':
Make IMM more robust to spurious window focus-in
Change-Id: I1d9a138798d982f2164907b49713a7b90cec9adc
InputMethodManager (IMM) has a latch switch named IMM#mHasBeenInactive
to forcefully refresh IME focus state when an inactive client
(IMM#mActive == false) is gaining window focus. However, it turns out
that there is a race condition where the latch could be unexpectedly
turned off. This is probably what we have been chasing in bug 25373872.
Imagine the following scenario:
1. An app receives MSG_WINDOW_FOCUS_CHANGED w/ hasWindowFocus=false
2. IMM inside the app receives MSG_SET_ACTIVE w/ active=false
3. The app receives MSG_WINDOW_FOCUS_CHANGED w/ hasWindowFocus=true
4. The app receives MSG_WINDOW_FOCUS_CHANGED w/ hasWindowFocus=false
5. The app receives MSG_WINDOW_FOCUS_CHANGED w/ hasWindowFocus=true
Here, our current strategy has been:
A. Turn on the latch when MSG_SET_ACTIVE (w/active=false) is handled.
B. Turn off the latch and ask IMMS to start input when
MSG_WINDOW_FOCUS_CHANGED (w/ hasWindowFocus=true) is handled.
The problem is that in the step B IMMS can reject the request if
WindowManagerService (WMS) tells that the window in question no longer
has window focus. This is not surprising because the app is
just handling messages in the message queue sequentially. As a result,
the IME focus is not updated expectedly in the step 5, because the latch
is no longer enabled as we expected.
With this CL, the latch will be re-enabled if the app fails to start
input while IMM#mActive is false as a short-term solution.
In future we may want to address this issue in protocol level so that
we can address other known issues such as bug 26851566 at the same time.
Bug: 28281870
Change-Id: I60adb38013b063918b074c7b947649eada77b2c8
am: 31e49b0964
* commit '31e49b0964cfba0b6b91e8ae67cbc04730098569':
Children should have backgrounds
Change-Id: I4c123a7cf9efd38c46ff155a70f5b9c053e4df02
To add a background to children of a group, a couple of things
are changed when a group is in the expanded state:
- The parent's shadow + background is removed
- The group header is given a background and elevation
- The children are elevated to cast a shadow and have backgrounds
- When it's fully expanded the dividers won't be shown
- There's extra height added to the parent so that the child
may cast the bottom shadow of the group
- As the children move into the bottom stack the last visible
one alters its height and the ones below it are hidden
to achieve the clipping effect
Fixes: 27591195
Fixes: 28655641
Change-Id: I0484308843e9b8bc10391387e54de07973a48f7d
Following 14e54ba747 (ag/1043009) we need to push an empty
synchronous transaction if we want to ensure all previous
transactions have occured before taking a screenshot. In
light of Bug 7552304 it seems wise to do this before screenshoting
applications.
Bug: 27098060
Bug: 7552304
Change-Id: I6d7dfbe634a288c55449d2f1d6fbbfc13bab08ad
TalkBack is seeing crashes that I can only explain by our assumption
that window layer is unique in all cases. TalkBack reports that it
happens during animation, so I assume that the layer may repeat
transiently.
Reducing our dependence on this assumption by traversing the list of
windows sorted by layer without assuming that the list has the same
length as the list of unsorted windows.
Also documenting the undefined behavior of SparseArray when indexing
beyond its bounds. The undefined behavior itself is intentional for
performance reasons.
Bug: 28679528
Bug: 28815817
Change-Id: I0c9f90b0b458b4cde465f603ba204fe6691e5c2c