This bug was triggered by user code concurrently mutating the character
array while calling into a drawText method in another thread. When the
value of the array changed, it caused inconsistent state, leading to
assert failures.
This is arguably bad behavior by the user code, but it shouldn't cause a
native crash. The fix is to do a defensive copy of the text into the
key, so the value is guaranteed to remain constant throughout the text
layout process. The change is mostly deletion of code, because there was
an optimization to try to avoid such a copy. That optimization was not
actually effective, however, because the indexOfKey() operation in the
KeyedVector underlying the TextLayoutCache did the copy anyway. Thus,
even though this change looks like it's introducing a copy where there
wasn't one before, the actual performance impact should be nil.
Note that the ability to handle a mutating argument is now part of the
contract for TextLayoutEngine::getValue(), and is now documented. That
contract may change, as the result of future optimization. Also, care
was taken to only use the value after the copy.
Other performance issues with TextLayoutCache are tracked in bug
7271109.
Change-Id: I9c90e8e4d501f3f37e2f22a7851f032808d46fbe
1. We use auto scroll when a view gets accessibility focus.
Pros: Having magnification and TalkBack enabled together (not a common use case)
will have the accessibility focused view on the screen (it is auto panned).
Cons: A blind user can get stuck in a very lock scroll view - not good.
2. We do not auto scroll when a view gets accessibility focus.
Pros: A blind user cannot get stuck in a long scroll view as he has to explicitly
scroll.
Cons: The magnified area will not pan to ensure the accessibility focused view
is visible.
Option one is the better trade off and this change removes the auto scrolling.
bug:7265773
Change-Id: I209b54ed18acad36c1f35b4c09b980e45ec9bbff
Enable safe headphone volume feature for all countries that
do not opt otherwise in their mmc configuration.
Opt out for US.
Bug 7231029.
Change-Id: I2619d627508eb2cd1f73db9242e0cb5efa839a2a
The handle (which is now being drawn by the window and not by itself)
was floating over it.
Bug: 7267529
Change-Id: Ia8902f64ac81616c640bc42400272933063852f4
Display controller should always stay in sync with peer list to avoid
showing incorrect available status on peers which would
cause connectivity issues.
Bug: 7268307
Change-Id: If04644339c1ee3f567939e4441dd6f6a45e4179a
1. The accessibility layer announces user switches. Even though
the initial switch to the owner on a singe user device is a
valid use switch we should not announce it for accessibility.
bug:7264693
Change-Id: Idf022fab6b74c84b7a96bc4ed7c7fee2b83029a6
-> Showing correct page, as per discussions (issue 7205431)
-> Hide the time when the system status widget is showsing (issue 7216577)
Change-Id: I5b79d72e8fd8226952f6a8ea99b776feb4ddde1f
...java.lang.IllegalStateException: Can not perform this action
after onSaveInstanceStateat android.support.v4.app.FragmentManagerImpl
.checkStateLoss(FragmentManager.java:1300)
Framework fragment manager also needs to be told its state is not
saved earlier.
Change-Id: Ie5bb327fca6208f7eea6146a1b3223c61c9ecef6
Mostly (turned off) debug output. Main fix is to resume the next
activity if we are pausing while sleeping and the top activity is
not the now pausing activity. Also helped things by fixing a problem
where removing a task would leave around dead destroy timeout
messages.
Change-Id: I9d550c216b4d7e2afe3d93553bb680cec41e2ed1
(padding is still hard)
- fix Toasts: basically the background drawable padding was not
taken into account
Change-Id: Iefd29782f50b6f6a56578cfeb2af119d381207f0