This CL improves the method by which excess space is distributed in GridLayout.
Previously, GridLayout would assume weights were arranged in a 'line' and
sum the weights in the assumed line to figure out the proportional allocation
to each view. The system involved running GridLayout's internal constraint
solver twice.
Behavior was unspecified (and surprising) when weights appeared in views
that were not linked together linearly, typically leaving the last view
in each axis with more space than expected (in GridLayout's Bellman-Ford
constraint solver, remaining space goes to the last span of the axis).
This CL changes the weight distribution mechanism to effectively integrate it
with the Bellman-Ford constraint resolution algorithm. It does this
by returning a boolean value from the constraint solver saying whether or
not the constraints could be solved and then using a binary chop to find
a maximum amount of space that can be distributed without violating the
constraints.
This implementation runs the solver log(<axis size> * <number of Views>)
times until finding the maximum amount of space that can be distributed according
to the weights without causing a contradiction. We expect the cost of this
variation to be around a factor of 10 worse than the previous implementation
but to provide a simple and general definition of space distribution via
weights that will be open to many future optimizations.
As a side effect, this CL also fixes a bug in GridLayout where remaining space
was distributed only along the major axis.
Bug: 17485996
Change-Id: I120f39e95e90b5b35072ef8a6c348ec541aae42a
TimePickerSpinnerDelegate doesn't need to deal with input when running
inside LayoutLib. So, we just return the keycodes as if it's running in
English locale.
Bug: http://b.android.com/79189
Change-Id: Ife0ae91a1e34a8dac379bc1dda1c1c8ed461c164
This is to allow Play to use this API to find out whether a package
is uninstallable due to profile or device owner policy's restriction.
Bug: 17914630
Change-Id: I4ce2963884ecdf3306805f36db80ed1ebf04d88f
Bug: 17510133
This is a RenderNode property now, so use
the faster invalidateViewProperty() shortcut
since a re-record isn't necessary
Change-Id: If3999bce9a1fb9b60e42f0ee624bb554361f96ac
This is NOT designed to be called normally. Most apps (even
system-privileged ones) should request user consent before launching a
VPN. However, it is needed to support flows where consent can be
obtained through other means external to the VPN flow itself.
The API requires a system-privileged permission, CONTROL_VPN.
Bug: 18327583
Change-Id: I1bcdcf0fb5707faeb861ec4535e7ccffea369ae7
Bug: 18175261
invalidateOutline was switched to a lazy-method, but this doesn't
work because invalidateViewProperty intentionally does not
do a traversal, therefore the invalidate was never consumed.
However it was attempting to be lazy about work that is cheap to
do, so nuke the lazy aspect and restore invalidateOutline's previous,
correct behavior. rebuildOutline is kept to avoid triggering
traversals in places they are not needed
Change-Id: I70f8cbacd54a607c0bf0bc7fe6eea78554cb2ea3
The "moreChars" test in StaticLayout's generate method would evaluate to
false when the last character in a word caused the break. This in turn
suppressed the ellipsis in this case. The proposed fix is always to set
moreChars true in the code path where the line is broken because more
text wouldn't fit.
Bug: 17738112
Change-Id: Ifa1a69841ca952da4d1937dc8326778179b026b3
To enable full-AUTO bursts, also need to ensure a fast enough
AE target FPS range is available.
Bug: 18281970
Change-Id: I73f7747dfe16380a2cd277a56a002ecc1279154e