Commit Graph

2141 Commits

Author SHA1 Message Date
Chet Haase
40e0383dce 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
2011-10-06 11:59:10 -07:00
Jeff Brown
4dfce20cac Make SENSOR orientation modes trump rotation lock.
Bug: 5371750

Change-Id: I4d18b6c8ba1de0afd5929ddb8d7123272e35fbe2
2011-10-05 16:12:07 -07:00
Dianne Hackborn
30c845f9ca Turn off logging.
Change-Id: I5b050e33fe918c08b24091c6ccb9c5fe2b01d496
2011-10-05 11:30:55 -07:00
Dianne Hackborn
836e262aa8 Fix issue #5348948: Third Party app "Byki Turkish" shows...
...a tiny dialog (works fine in GB and HC)

I found two problems:

- When first binding an application, we were not correctly computing
the compat configuration.
- When retrieving the display metrics to hand to Resources, we were
using the one with compat applied.  This is not right, because
Resources will apply the compat itself, so in some cases the compat
scaling was applied twice.

Change-Id: I22c9cfed9e271290c1a7544fa3ffa54a2e65daf9
2011-10-04 19:17:49 -07:00
Joe Fernandez
cac15eb21c Merge "docs: add developer guide cross-references, Project ACRE" 2011-10-04 14:03:12 -07:00
Joe Fernandez
b54e7a3d9f docs: add developer guide cross-references, Project ACRE
Change-Id: I5df1c4e13af67ff4c4a5b22f3cb1247bf0103b09
2011-10-04 13:57:00 -07:00
Svetoslav Ganov
2588a07730 Merge "The logic for not populating text to some accessibility events is scattered." 2011-10-03 18:33:32 -07:00
Svetoslav Ganov
0058f724eb Merge "Accessibility services cannot obtain the source of an event coming from a root namespace descendant." 2011-10-03 17:43:39 -07:00
Svetoslav Ganov
2cdedffcfa 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
2011-10-03 15:07:44 -07:00
Adam Powell
f8419a0299 Fix bugs around overlay action modes.
Multiple focusable windows cause undesired behavior around selection
modes. TextView isn't sure how to behave when it loses window focus
with regard to selection handles and action modes need to be focusable
for WebView find on page since it uses an EditText as a custom view.

For now:

* Use a layered window decor for overlay action mode when there is no
  action bar requested. This eliminates an extra window and avoids the
  issue described for full-screen UIs.

* Disable WebView's find-on-page mode when the action mode's UI will
  not be focusable. This only affects WebViews in floating windows.

Also remove the "Text Selection" title for WebView's selection mode at
UX's request, as it is inconsistent with TextView's selection mode and
the string does not fit on phones in portrait even on wide
devices. This now uses the same mechanism used in TextView to decide
whether to use title text.

Change-Id: I80caeecea9b47728cf26bb0a388153ca0bdeafe1
2011-10-03 13:20:23 -07:00
Svetoslav Ganov
82e236d72a 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
2011-09-30 19:55:27 -07:00
Romain Guy
59c7f80dd2 TextureView works best when it draws stuff.
Bug #5391188

Change-Id: I5e754881ccb08ff288ebd60de77282c9cbcf3f86
2011-09-29 17:21:45 -07:00
Romain Guy
9622e20486 Add system property to force hw acceleration.
Change-Id: I538e641435f282b1af20866a8acd1f8d292734c4
2011-09-29 16:38:24 -07:00
Adam Powell
2fcbbd0363 Fully qualify javadoc links and make the tools happy
Change-Id: I2ad839be71b550a2bcfb90f67627afdd10d3ae14
2011-09-28 18:56:43 -07:00
Romain Guy
2a9fa89643 Don't build display lists for views with a layer.
This could cause the draw() code of views to be invoked too often
or worse, called with the wrong canvas. For instance, a view backed
by a software layer could get its draw() method called to record a
display list. Using a software layer is the recommended way to use
drawing operations not supported in hardware. Since we would
sometimes call the draw() method with the hardware backend anyway,
the app could crash by executing an unsupported operation.

Change-Id: Ib5f9a3a4c6f3efff5e0162ecd73d2dffe06e30a6
2011-09-28 16:50:02 -07:00
Romain Guy
462785fa25 Add a bit more doc to TextureView
Change-Id: Ib76c80d8f70ede1bb63db319bca1e93c489def4d
2011-09-27 17:42:10 -07:00
Chet Haase
6e6db61809 Fix display list issue that was crashing an external app.
The app was removing a View whilst in its onDraw() method. This meant
that we asked it for its display list and it invalidated that display list
(by removing itself) before it returned from onDraw(). We later attempted to
draw that invalid display list into its parent nad died in native code.

The fix is to check the state of the display list after the call to getDisplayList()
and to avoid doing further work with it if it's invalid.

Change-Id: I14a342b4fe79c8dce2626ff61237b447040e7f42
2011-09-26 14:32:26 -07:00
Jeff Brown
4c253119db Merge "Prevent unintended rotations. Bug: 4981385" 2011-09-23 18:28:01 -07:00
Jeff Brown
c0347aa19f Prevent unintended rotations.
Bug: 4981385

Changed the orientation listener to notify the policy whenever
its proposed orientation changes, and changes the window manager
to notify the orientation listener when the actual orientation
changes.  This allows us to better handle the case where the
policy has rejected a given proposal at one time (because the
current application forced orientation) but might choose
to accept the same proposal at another time.

It's important that the proposal always be up to date.  A proposal
becomes irrelevant as soon as the phone posture changes such
that we can no longer determine the orientation with confidence
(such as when a device is placed flat on a table).

Simplified the orientation filtering.  Now we just wait 200ms
for the device to be still before issuing a proposal.  The idea
is that if the device is moving around a lot, we assume that
the device is being picked up or put down or otherwise in
the process of being moved.  We don't want to change the rotation
until that's all settled down.  However, we do want to tolerate
a certain amount of environmental noise.

(The previous confidence algorithm was also designed along
these lines but it was less direct about waiting for things
to settle.  Instead it simply made orientation changes take
longer than usual while unsettled, but the extra delay was often
too much or too little.  This one should be easier to tune.)

Change-Id: I09e6befea1f0994b6b15d424f3182859c0d9a530
2011-09-23 17:26:09 -07:00
Dianne Hackborn
a982ad19d2 Merge "Fix issue #5173952: Opening a Notification From Lock Screen..." 2011-09-23 14:54:26 -07:00
Dianne Hackborn
90c52de286 Fix issue #5173952: Opening a Notification From Lock Screen...
...Should Skip Unsecure Lockscreen (ICS)

Also while I am in there, clean up logging of intent objects to include
even less sensitive information, while showing the true Intent in dump
output (since apps can't get to that).

Change-Id: I35fed714645b21e4304ba38a11ebb9c4c963538e
2011-09-23 13:39:33 -07:00
Svetoslav Ganov
83a559e78f Merge "Scroll accessibility events should not populate text." 2011-09-23 13:26:18 -07:00
Adam Powell
2b2f6d6c54 Remove unnecessary parameter
Change-Id: I32810a31140263a996d4f600fa53db5f29e60f42
2011-09-23 11:15:39 -07:00
Svetoslav Ganov
b84b94e1a0 Scroll accessibility events should not populate text.
Scroll events are used to report position change and should not
contain the text content of the view that fires them because it
is usiually a containter for many other views and the text will
be long and not informative for accessibility purposes. Also
such evens are fired relatively frequently. If a client wants
to fetch some textual content for a scroll event he can use
the interrogation APIs.

bug:5352059

Change-Id: I43e02aca895c8ab16ba82ebe1cee3aea8ce7711a
2011-09-22 19:55:47 -07:00
Adam Powell
7db82acd81 Fix leaky view tags
The implementation of the method View#setTag(int, Object) stored tag
objects as entries in a static WeakHashMap associated with the View as
a key. This was problematic for any tag object that stored a hard
reference back to the View the tag was placed on, as it would cause
the WeakReference key to never be collected and the entry to persist
forever.

This was particularly nasty if an app used a keyed tag to store a
ViewHolder object referencing child views for use in the Adapter
implementaion for an AdapterView, since child views will always have
hard references leading back to the parent.

Change-Id: Ia17840a301ba0e0c928861405388fb2f625dac2c
2011-09-22 19:55:41 -07:00
Daniel Sandler
7933b7056f am cc22b992: Merge "Revert "Allow views to setSystemUiVisibility() with the same value and have it work."" into ics-factoryrom
* commit 'cc22b99249ac80891af99be941862edc9569fc4b':
  Revert "Allow views to setSystemUiVisibility() with the same value and have it work."
2011-09-22 10:31:47 -07:00
Ken Wakasa
9f48d6348d Fix comment
Change-Id: Ic0fd15d0b1b4d2c24eb177a6b22e0cc08ec1de99
2011-09-22 19:24:48 +09:00
Jeff Brown
a829e16681 Merge "Handle orientation changes more systematically. Bug: 4981385" 2011-09-21 21:09:10 -07:00
Jeff Brown
01a98ddbdf Handle orientation changes more systematically.
Bug: 4981385

Simplify the orientation changing code path in the
WindowManager.  Instead of the policy calling setRotation()
when the sensor determined orientation changes, it calls
updateRotation(), which figures everything out.  For the most
part, the rotation actually passed to setRotation() was
more or less ignored and just added confusion, particularly
when handling deferred orientation changes.

Ensure that 180 degree rotations are disallowed even when
the application specifies SCREEN_ORIENTATION_SENSOR_*.
These rotations are only enabled when docked upside-down for
some reason or when the application specifies
SCREEN_ORIENTATION_FULL_SENSOR.

Ensure that special modes like HDMI connected, lid switch,
dock and rotation lock all cause the sensor to be ignored
even when the application asks for sensor-based orientation
changes.  The sensor is not relevant in these modes because
some external factor (or the user) is determining the
preferred rotation.

Currently, applications can still override the preferred
rotation even when there are special modes in play that
might say otherwise.  We could tweak this so that some
special modes trump application choices completely
(resulting in a letter-boxed application, perhaps).
I tested this sort of tweak (not included in the patch)
and it seems to work fine, including transitions between
applications with varying orientation.

Delete dead code related to animFlags.

Handle pausing/resuming orientation changes more precisely.
Ensure that a deferred orientation change is performed when
a drag completes, even if endDragLw() is not called because the
drag was aborted before the drop happened.  We pause
the orientation change in register() and resume in unregister()
because those methods appear to always be called as needed.

Change-Id: If0a31de3d057251e581fdee64819f2b19e676e9a
2011-09-21 19:26:15 -07:00
Adam Powell
823f074a73 Fix bug 5300621 - Share menu disappears in gallery
ActionProviders (or action views) unfortunately had no way to report
that they had opened a sub-UI that would affect menu visibility
listeners used to hide action bars when not in use. This caused the
Gallery UI to hide its action bar when the share popup was open.

Add hidden API (to be made public later) to ActionProvider that can be
used to inform the menu system that a sub UI has opened or
closed. Account for this in menu visibility callbacks. Fix
ShareActionProvider to use this when its popup windows open and close.

Fix a regression where submenus were not properly reporting visibility
changes.

Change-Id: Ia6f45fb463ad106105c40d01f141c2e5c8b96f78
2011-09-21 17:21:47 -07:00
Daniel Sandler
705240631b Revert "Allow views to setSystemUiVisibility() with the same value and have it work."
This reverts commit fad9555217.
Because it just didn't work. (The views kept aggressively
re-applying their preferred flags every time view attributes
were aggregated.)

We'll pursue the original strategy, like lights out mode in
HC: if you want to tickle this mode, un-set and re-set the
flags (preferably synchronized with the global SystemUI
visibility state as reported by onSystemUiVisibilityChanged
callbacks).

Bug: 5052456
2011-09-21 13:34:15 -04:00
Dianne Hackborn
bc1aa7bbc7 Fix issue #5312624: Lock screen very flickery
The key thing was to fix isVisibleOrBehindKeyguardLw() so that it
wouldn't count a window as not visible if it was just currently
in the process of drawing due to an orientation change.

Also improve logic in deciding when to turn screen on to better ensure
the screen is in a stable state, in particular treating screen off
as a frozen screen and not allowing it to turn on until the
update of the screen due to any config change is done.

Change-Id: If82199f3773270b2d07f9c7de9da2dad8c7b28d7
2011-09-20 11:20:31 -07:00
Amith Yamasani
4943b3aa36 Merge "Make Volume control non-modal and allow touches underneath to take effect." 2011-09-19 10:03:14 -07:00
Dianne Hackborn
38e29a61d0 Fix issue #5242779: Device not responding to touch on unlock screen
Rework how we decide when it is okay to turn on the screen by having
the policy call back to the power manager when it knows the lock screen
has been drawn.

Change-Id: Ie8f3f72111dcf7f168723e6dce24e0343b4afe5d
2011-09-18 14:52:52 -07:00
Amith Yamasani
284e630a9b Make Volume control non-modal and allow touches underneath to take effect.
Bug: 5308506 "Video" App halts playback when volume slider is present
Change-Id: Ib0672384b9074af73d729d1f64db62e5a8882d80
2011-09-16 18:24:47 -07:00
Adam Powell
4b86788003 Bug 5244365 - Prevent views from receiving multiple onAttachedToWindow
calls.

If a View is added to a ViewGroup during the ViewGroup's
onAttachedToWindow method, the child can receive two calls to
onAttachedToWindow. Guard against this.

Change-Id: I845d0cb2c9172071eee1eadc6bc2dd282ee0ef43
2011-09-16 13:01:01 -07:00
Dianne Hackborn
4f59f8be0e Fix issue #5300880: setSystemUiVisibility() always triggers a surface reallocation
Change-Id: Ia0a9d8acba6b62ef095e4c615099466c52eec8e4
2011-09-15 15:27:59 -07:00
Dianne Hackborn
df82905cf3 Merge "Update the public APIs for finding views by text to optionally use content description." 2011-09-14 22:33:54 -07:00
Jeff Brown
93578af23e Merge "Velocity Tracker II: The Revenge of Velocity Tracker Bug: 5265529" 2011-09-14 21:27:25 -07:00
Svetoslav Ganov
ea515aeafa 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
2011-09-14 19:40:33 -07:00
Dianne Hackborn
ec537457cd Fix issue #5155678: Portrait > Landscape full-screen transition...
...mode cuts off screen rendering

The code for limiting application window sizes to not include the
navigation bar was dead.  Now it is back.

Change-Id: Ic0bde56e3300fd0d9d225e19d8de2766d07e8780
2011-09-14 19:19:55 -07:00
Jeff Brown
b59ab9f41f Velocity Tracker II: The Revenge of Velocity Tracker
Bug: 5265529

Rewrote the velocity tracker to fit a polynomial curve
to pointer movements using least squares linear regression.
The velocity is simply the first derivative of this polynomial.

Clients can also obtain an Estimator that describes the
complete terms of the estimating polynomial including
the coefficient of determination which provides a measure
of the quality of the fit (confidence).

Enhanced PointerLocation to display the movement curve predicted
by the estimator in addition to the velocity vector.

By default, the algorithm computes a 2nd degree (quadratic)
polynomial based on a 100ms recent history horizon.

Change-Id: Id377bef44117fce68fee2c41f90134ce3224d3a1
2011-09-14 19:16:37 -07:00
Dianne Hackborn
1f903c3b57 Fix issue #5283365: Rotating the device to portrait mode, hides the keyboard partly
PhoneWindowManager now takes full responsibility for deciding where the
navigation bar goes.  This gets rid of a bunch of race conditions with
determining layout while the nav bar is moving itself at the same time
the window manager is computing a new configuration.

Note that this breaks the "nav bar on left" option.  The current nav
bar code could also be cleaned up some more to completely drive its
behavior based on onSizeChanged() happening during relayout.

Change-Id: I1651d74c3464ba0d588aab3049e099c78420146a
2011-09-14 17:56:40 -07:00
Christopher Tate
ff87be5966 Merge "Fix bug 5297302 - Remember to release surface after starting drag" 2011-09-13 14:28:05 -07:00
Dianne Hackborn
180c48489f 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
2011-09-13 12:39:25 -07:00
Christopher Tate
8f73b5dfac Fix bug 5297302 - Remember to release surface after starting drag
Forgetting to release it was "safe" in that GC would eventually
tidy it up anyway, but in the meantime it was possible for a user to
do lots of drag operations, racing ahead of the progress of the garbage
collector, and wind up with drags failing because we'd run out of
surface slots due to all the piled up stale drag shadows.

Change-Id: I7ac93b13cc9996dda04a404571fbc44cb4314694
2011-09-12 18:33:45 -07:00
Dianne Hackborn
ab0f485e64 Fix problems where we were allocating TypedArray when not needed.
Fixes up some recycling of TypedArray objects to reduce the
number we need to allocate during inflation etc.

Change-Id: I948dccc052997779001eaa99db2a710b04be01ae
2011-09-12 17:04:32 -07:00
Svetoslav Ganov
bd5c9768c4 Merge "Adding accessibility delegate mechanism for backwards compatibility support." 2011-09-12 16:58:13 -07:00
Svetoslav Ganov
031d9c1389 Adding accessibility delegate mechanism for backwards compatibility support.
1. Added an AccessibilityDelegate class in View which can be set by
   a client that wants to cutomize accessibility behavior via
   composition as opposed to inheritance. Insead overriding a new method in
   View thus being bound to the API version that introduced this
   method a developer can conditionally inject the accessibility
   customization if the platform API version is heigh enough. The
   developer will have to override the method of interest of the
   delegate. The default implementation of the delegate methods is
   the same as that of View in the case that there is no delegate
   set. If a delegate is set calling an accessibility related method
   on View will be handed off to the corresponsing method of the
   delegate.

bug:5259555

Change-Id: I00e750e22e5e7164a1b571cb3d12ecaf4ab93db4
2011-09-12 15:42:19 -07:00
Dianne Hackborn
fe75cb342e Merge "Fix inflating of animations." 2011-09-11 13:07:24 -07:00