Fixed a potential bug where calling replaceAt with a reference to
an existing element in the vector at the same index would cause
the element to be destroyed while being copied to itself.
Refactored the conditions in _grow and _shrink for clarity.
The computations are exactly the same but I think it reads better
this way. In particular, the ssize_t variable 's' is gone: it didn't
need to be signed anyways because its value could never be negative.
Change-Id: If087841c15e6a87160eee874720c4a77eb0e99a6
On review of the code, _grow and _shrink are checking for conditions
that cannot happen and that don't even really make sense. For
example, if _shrink is called with where + amount > mCount then
this is really bad, however the check only considered the case
when where >= mCount and then it would arbitrarily choose a new
value for where. Huh?
As it happens, the callers are correctly validating the
arguments before passing them down to these methods so we can
get rid of this code.
Change-Id: I921852dba8997065bb0e9cac733e82028d14afcd
This change moves the cached window and application input state
into the handle objects themselves. It simplifies the dispatcher
somewhat because it no longer needs to fix up references to
transient InputWindow objects each time the window list is updated.
This change will also make it easier to optimize setInputWindows
to avoid doing a lot of redundant data copying. In principle, only
the modified fields need to be updated. However, for now we
continue to update all fields in unison as before.
It turns out that the input dispatcher was inappropriately retaining
pointers to InputWindow objects within the mWindows InputWindow
vector. This vector is copy-on-write so it is possible and the
item pointers to change if an editing operation is performed on
the vector when it does not exclusively own the underlying
SharedBuffer. This bug was uncovered by a previous change that
replaced calls to clear() and appendVector() with a simple use
of operator= which caused the buffer to be shared. Consequently
after editItemAt was called (which it shouldn't have, actually)
the buffer was copied and the cached InputWindow pointers became
invalid. Oops. This change fixes the problem.
Change-Id: I0a259339a6015fcf9113dc4081a6875e047fd425
. Change name of Group to Spec
(with the addition of the fglexibility field, this class no longer represents a group)
. Replace overloaded Group/Spec constructors with factory method
. Bugfix for measure() when alignmentMode == ALIGN_BOUNDS
. Bury as much Java API as possible, to minimize restrictions on future API enhancements
- make all field access in Group package private
- use factory methods in place of field assignment
Change-Id: I46a5027a013bf7c3110b77108b8fd0427165cd18
1. Touch exploration start and end events are generated
by the sytstem to provide additional information for
accessibility services. Since such events do not come
from any particular window they whould not change the
id of the window that currently allows exploring its
content.
2. Touch exploration start and end events were lealing the
touch explorer class wich is private.
bug:5026258
Change-Id: Icaf3e2bd9566716f2afb876cf8e0d50813b0c76e
Zlib compression, with a full flush between each application's
data. Encryption will be performed on the already-compressed data
once that's implemented.
On restore, the streamed data is similarly uncompressed on the fly.
Change-Id: I19b65c88e759a66527d10913d18fffa9df0bc011
When NetworkManagementService starts, it determines if qtaguid
should be enabled. The changes pushes the enabled state to a system
property to control socket tagging.
Change-Id: I5697a990dbaad4b220a2fb055931b18077d07a74
This adds support for storing larger, hi-res photos in the contacts
system. Thumbnails continue to be stored in the Photo.PHOTO column
as BLOBs, while hi-res versions of the photos are stored in the file
system and referenced via a photo file ID (with metadata stored in
a new table).
See go/large-photo-design for details.
Change-Id: Ie182eaa6a0330e2eca0a732f201f20a91e4dc584