24410 Commits

Author SHA1 Message Date
Svetoslav Ganov
53e184d34e Accessibility service needs to request permission to be bound to.
1. Every accessibility services targeting JellyBean or higher has
   to request a special permission for the system to bind to it.

Change-Id: I6e579326bdf3597f148d6c67317455701ec8af68
2012-05-16 15:57:15 -07:00
Dianne Hackborn
bea7afc52c Merge "Fix issue #6284404: ArrayIndexOutOfBoundsException in..." into jb-dev 2012-05-15 13:57:06 -07:00
Daniel Sandler
8414beac87 Merge "Test new fonts and use correct OS version." into jb-dev 2012-05-15 13:30:41 -07:00
George Mount
d97d4f6cf6 Merge "Only open CAB for long-press." into jb-dev 2012-05-15 13:25:03 -07:00
Daniel Sandler
f89d5079e4 Test new fonts and use correct OS version.
Bug: 6499146
Change-Id: I83d6298725fe1f3385d5bf0a34487658583141a4
2012-05-15 16:15:15 -04:00
Dianne Hackborn
03fcc333cf Fix issue #6284404: ArrayIndexOutOfBoundsException in...
...FragmentManagerImpl.restoreAllState

This was a bug related to the difference between the pre- and post-HC
behavior of onSaveInstanceState().  Prior to HC, state was saved
before calling onPause().  Starting with HC, it is saved between
onPause() and onStop().  To maintain compatibility with existing
applications, there is a check in ActivityThread for pre-HC to in
that case emulate the behavior of old applications, still calling
onSaveInstanceState() before onPause() but using the state later.

One of the special cases we had to deal with in the old model of
saving state before pausing was restarting an activity that is
already paused.

Consider, for example: you have two activities on screen, the one on
top not fullscreen so you can see the one behind.  The top activity
is resumed, the behind activity is paused.  In the pre-HC world, the
behind activity would have already had its state saved.

Now you rotate the screen, and we need to restart the activities.
We need to destroy the behind activity and create a new instance,
but the new instance has to end up in the paused state.  To
accompish this, we restart it with a flag saying that it should
end up paused.  For the pre-HC world, since it ends up paused,
we need to make sure we still have its instance state kept around
in case we need it because we can't regenerate it (since it is
already paused).

So that is what the changed code here is doing.  It goes through
the normal create/start/resume steps, but holds on to the current
saved state so that it isn't lost when resume clears it, and then
puts the activity back to paused and stuffs that old saved state
back in to it.

The problem is that this code was doing it for every application,
even HC apps.  So we end up in a bad state, when a HC app has its
saved state sitting there as if it had been saved, even though it
is only paused.  Now if we go to restart the activity again, instead
of asking it for a new saved state (as we should for a HC app as
part of stopping it), we just re-use the existing saved state again.

Now this wouldn't generally be a huge problem.  Worst case, when we
restart the activity yet again we are just instantiating it from
the same saved state as we used last time, dropping whatever changes
may have happened in-between.  Who cares?  All it has been doing is
sitting there in the background, visible to the user, but not something
they can interact with.  If the activity made changes to its
fragments, those changes will be lost, and we will restore it from
the older state.

However...  if one of those fragements is a retained fragment, this
will *not* appear in the saved state, but actually be retained across
each activity instance.  And now we have a problem: if the retained
fragments are changed during this time, the next activity instance
will be created from the most recent state for the retained fragments,
but the older state for everyting else.  If these are inconsistent...
wham, dead app.

To fix this, just don't keep the saved state for HC apps.

Also includes a small optimization to ActivityStack to not push
the home screen to the front redundantly.

Change-Id: Ic3900b12940de25cdd7c5fb9a2a28fb1f4c6cd1a
2012-05-15 13:13:33 -07:00
Svetoslav Ganov
0e3057c667 Merge "Add accessibility scroll support to some widgets." into jb-dev 2012-05-15 11:58:55 -07:00
Jeff Sharkey
d6c1e49847 Merge "Migrate stream extras in CHOOSER intents." into jb-dev 2012-05-15 11:35:45 -07:00
Svetoslav Ganov
48d1586f40 Add accessibility scroll support to some widgets.
1. Added support for accessibility scroll action to
   some widgets that are scrollable.

2. Making the super call when handling an accessibility
   action in the views to call super first to allow
   an accessibility delegate to intercept the call.

bug:5932640

Change-Id: I5eb37d64bf9fba1d5c596981132e0df717e2a18a
2012-05-15 11:21:32 -07:00
Chris Wren
78cb7cf7d1 Allow animations to run past cancelled draws, if the view is visible.
Bug: 6475482
Change-Id: Iecb3a04744282135efa0049f1b70a46dc4a6bb23
2012-05-15 10:57:59 -07:00
Svetoslav Ganov
8b4d73b2d5 Merge "Revert "Showing default activity in activity chooser view only if enough space."" into jb-dev 2012-05-15 10:49:01 -07:00
Svetoslav Ganov
0e29ac9e4e Merge "Accessibility focus traversal in virtual nodes." into jb-dev 2012-05-15 10:48:44 -07:00
George Mount
899f609f78 Only open CAB for long-press.
Bug 6182286

Change-Id: I18590c457548e63cf45f5f7b626f5e8bd855f521
2012-05-15 08:28:28 -07:00
Gilles Debunne
855f5407c7 Merge "Minor changes in SpellCheckSpan pool management in SpellChecker" into jb-dev 2012-05-15 02:57:00 -07:00
Svetoslav Ganov
b9f286e1a3 Revert "Showing default activity in activity chooser view only if enough space."
This reverts commit 340e2611de6d54516e222597585dbe7968a9915d

Change-Id: I396b70e8c737e6f1c36429618889e5c8fc690b55
2012-05-15 02:48:13 -07:00
Svetoslav Ganov
791fd31a68 Accessibility focus traversal in virtual nodes.
1. Finished the implementation of support for maintaining
   accessibility focus in view with virtual descendants.

2. Finished the NumberPicker implementation of virtual
   subtree such that all requred attributes are reported
   and ensuring that it support accessibility focus in
   its virtual descentants.

3. Fixed a bug where if a predecessor of the view that is
   accessiiblity focused is removed the accessibliity focus
   host in ViewRootImpl is not cleared leading to a crash
   when trying to draw the accessibility focus highlight.:

bug:6472646
bug:6433864

Change-Id: I3645642b87b4a26025c0b2ba9dfaad92d11a48f1
2012-05-15 00:43:53 -07:00
Romain Guy
7b8523aaed Merge "Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...)" into jb-dev 2012-05-14 20:12:09 -07:00
Romain Guy
e651cc6239 Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...)
Change-Id: Ie28538a2104d21154fdc78a56525e7403f08287d
2012-05-14 19:44:40 -07:00
Svetoslav Ganov
8ce2d78aa8 Merge "Improving accessibility focus traversal." into jb-dev 2012-05-14 18:26:24 -07:00
Jeff Sharkey
3b7d1ef4be Migrate stream extras in CHOOSER intents.
When sending CHOOSER intent, inspect its target for any EXTRA_STREAM
needing migration. If any migration happens, copy the ClipData to
the CHOOSER intent and set GRANT_READ flag. Also update CHOOSER docs.

Bug: 6463773
Change-Id: I66a7adf7bf6f2f173866925cb7e048f4c7a63222
2012-05-14 17:37:11 -07:00
Dianne Hackborn
a827843f9b Merge "Fix issue #6020164: Settings crashed on orientation change..." into jb-dev 2012-05-14 17:31:53 -07:00
Adam Powell
e48d12b780 Merge "Fix ActionProviders that have submenus" into jb-dev 2012-05-14 17:24:24 -07:00
Dianne Hackborn
b61a02657b Fix issue #6020164: Settings crashed on orientation change...
...while listening to TTS example

This was a nice one.  What was happening is that immediately upon
being created, the activity was starting another activity in a
different process.  The second activity would never show, just
immediately exit.  However the original activity had time to
pause and get into stopping itself before the second activity had
come back to the activity manager to say it was going away, resulting
in the activity manager asking the original activity to resume.

At this point the activity manager's state is that the second
activity is finishing and gone, and the original activity is
resumed.  However in the app process the original activity is
still working on stopping itself, and it eventually completes
this and tells the activity manager.  The activity manager now
changes its state to STOPPED, even though it is actually resumed
and that is the last thing it told it to be, and it is now
proceeding to set itself in that state.

This would result later in the activity manager sending an
unnecessary state change to the application.  In the case of
the screen here, we next do a rotation change, the activity
manager thinks the current state is STOPPED not RESUMED, so it
tells the application to relaunch the activity in a new config
but not in the resumed state.  Now it does the whole "start a
new temporary activity" thing again, at which point it tries
to pause the original activity again, and we have an unbalanced
onPause() call to the app and it falls over.

Change-Id: I38b680746f4c61ae30e7ce831e1de187adf60902
2012-05-14 17:19:18 -07:00
Jeff Brown
00ff47484f Merge "More VelocityTracker refactoring." into jb-dev 2012-05-14 17:12:32 -07:00
Chris Craik
dbd98bfecb Merge "Remove unused native method" into jb-dev 2012-05-14 17:04:10 -07:00
Adam Powell
f77f480800 Fix ActionProviders that have submenus
Automatically create a submenu for items with ActionProviders that
provide a submenu when the item was not initially configured to have
one.

Bug 6493376

Change-Id: I27218e2ab205e87534f235eb04042b185d99d143
2012-05-14 16:44:43 -07:00
Eric Laurent
dfae6db022 Merge "Implement new volume display policy." into jb-dev 2012-05-14 16:30:47 -07:00
Svetoslav Ganov
e5dfa47d84 Improving accessibility focus traversal.
1. Now the views considered during the accessibility focus search
   are the ones that would get accessibility focus when thovered
   over. This way the user will get the same items i.e. feedback
   if he touch explores the screen and uses focus traversal. This
   is imperative for a good user experience.

2. Updated which focusables are considered when searching for access
   focus in ViewGroup. Generally accessibility focus ignores focus
   before/after descendants.

3. Implemented focus search strategy in AbsListView that will traverse
   the items of the current list (and the stuff withing one item
   before moving to the next) before continuing the search if
   forward and backward accessibility focus direction.

4. View focus search stops at root namespace. This is not the right
   way to prevent some stuff that is not supposed to get a focus in
   a container for a specific state. Actually the addFocusables
   for that container has to be overriden. Further this approach
   leads to focus getting stuck. The accessibility focus ignores
   root names space since we want to traverse the entire screen.

5. Fixed an bug in AccessibilityInteractionController which was not
   starting to search from the root of a virtual node tree.

6. Fixed a couple of bugs in FocusFinder where it was possible to
   get index out of bounds exception if the focusables list is empty.

bug:5932640

Change-Id: Ic3bdd11767a7d40fbb21f35dcd79a4746af784d4
2012-05-14 16:21:29 -07:00
George Mount
108feca9a0 Merge "Change selection to use left/right instead of base/extent." into jb-dev 2012-05-14 16:04:42 -07:00
Chris Craik
8230231c88 Remove unused native method
depends on external/webkit change: https://android-git.corp.google.com/g/#/c/190468/

bug:6486310
Change-Id: Id1c1eabf27135c73e45a489ab4c7cfa26e0c9def
2012-05-14 15:57:06 -07:00
Svetoslav Ganov
844047acb7 Merge "Fix inconsitency in aAccessibilityNodeInfo cache." into jb-dev 2012-05-14 14:14:26 -07:00
Eric Laurent
8c78752f2b Implement new volume display policy.
Whenever a stream type is muted, the progress bar in volume panel
is at 0.
If a stream is muted by ringer mode and does not control ringer mode,
the progress bar is disabled.
Pressing VOL- when in vibrate or silent mode resets the last audible
volume of ringtone stream (music strem on tablets) to 0.

VolumePanel implementation:
 - Always prefer AudioManager APIs over AudioService APIs when available on both.
 - Do not use AudioManager.shouldVibrate() (deprecated).

Change-Id: I57fcb19ada4e8d729b6b41d668496562ebe340c3
2012-05-14 14:13:10 -07:00
Philip Milne
c8b7747bc0 Merge "Add validation code for GridLayout.LayoutParams" into jb-dev 2012-05-14 14:12:06 -07:00
Michael Jurka
143a02aa79 Merge "Prevent ViewPropertyAnimators from getting started twice" into jb-dev 2012-05-14 14:04:27 -07:00
Philip Milne
0f57cea898 Add validation code for GridLayout.LayoutParams
Bug 6404882.

The supplied code in this bug sets up a table with 2 columns and then
tries to add a component in column 5. Earlier attempts to fix this
by 'doing what the user meeant' had unwanted side-effects. This CL is
intended to defend against all ways to register invalid LayoutParams
and throw IllegalArgumentExcpetion when any column index falls outside the
range [0 .. N] where N is the number of columns. It also includes the
symmetrical check for rows.

Change-Id: I958a6d16035889cd954b78108773426e8b6b6d95
2012-05-14 13:42:05 -07:00
Chet Haase
728e43948c Merge "Minor touch-up of Animation docs" into jb-dev 2012-05-14 12:58:08 -07:00
George Mount
647827a5d3 Change selection to use left/right instead of base/extent.
Bug 5859620
 Simplify text selection to use left/right rather than
 base/extent. In combination with webkit change, this
 fixes RTL selection. The handle directions are properly-
 facing when the text direction is the same for both
 sides of selection.
 Webkit Change: I3362c5034ce08ce1517a86882c13b78aff35fe3f

Change-Id: Ib88ed2327182ba5b47b3e41584cbe944d05c8ada
2012-05-14 11:24:56 -07:00
Mathias Agopian
7ed1d6613e Merge "fix SurfaceView visibility state changes" into jb-dev 2012-05-13 23:50:32 -07:00
Svetoslav Ganov
8f76176016 Merge "Removing default accessibility gesture handling." into jb-dev 2012-05-13 19:09:35 -07:00
Jeff Brown
85bd0d6283 More VelocityTracker refactoring.
Bug: 6413587
Change-Id: Ida1152e7a34d5fe5caab5e6b5e1bc79f6c7a25e6
2012-05-13 16:10:57 -07:00
Michael Jurka
500998d401 Prevent ViewPropertyAnimators from getting started twice 2012-05-13 15:35:02 -07:00
Dianne Hackborn
2a7a6ca00a Merge "Implement new window cropping." into jb-dev 2012-05-13 15:24:32 -07:00
Dianne Hackborn
85afd1b6f8 Implement new window cropping.
The window manager now performs the crop internally, evaluating
it every animation from, to be able to update it along with
the surface position.

Change-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32
2012-05-13 13:31:06 -07:00
Svetoslav Ganov
7b1e0c7046 Removing default accessibility gesture handling.
1. The initial design was to have some accessibility gestures
   being handled by the system if the gesture handling access
   service does not consume the gesture. However, we are not
   sure what a good default is and once we add a default handler
   we cannot remove it since people may rely on it. Thus, we
   take the simples approach and let the accessibility service
   handle the gestures. If no gestures are handled the system
   will work in explore by touch as before.

bug:5932640

Change-Id: I865a83549fa03b0141d27ce9713e9b7bb45a57b4
2012-05-13 12:39:51 -07:00
Mathias Agopian
cbeb33249d fix SurfaceView visibility state changes
SurfaceView didn't recompute the transparent region
when the INVISIBLE state (as opposed to GONE) was involved.

Bug: 6467123
Change-Id: I05930bd568a345331840c1ad8d9123ef4904c04f
2012-05-12 19:57:07 -07:00
Guang Zhu
0d607fbe54 accessibility bug fix in NumberPicker
* moved View#isVisibleToUser to protected with @hide
* added a new View#isVisibleToUser(Rect), so that a portion of
  the view can be tested for visibility
* NumberPicker will report its concrete class name
* code to append virtual children was at wrong place
* boundInScreen for increment and decrement buttons are reported
  wrong

Change-Id: Ic5d644b3e1efa15b1f0537907c8cdd4ce43a97c1
2012-05-12 19:09:34 -07:00
Mangesh Ghiware
05efb04c38 Merge "Maintain the anchor at top/left on orientation change." into jb-dev 2012-05-12 16:04:00 -07:00
Jim Miller
5a588dbe6e Merge "Fix 6486099: Fix clipping issues with MultiWaveView on phone/tablet" into jb-dev 2012-05-12 14:54:06 -07:00
Mangesh Ghiware
cf034e3773 Maintain the anchor at top/left on orientation change.
Bug: 5291151
Change-Id: Id1d5c157668440fe4d0d1214477ba31e8f02d6b6
2012-05-12 14:46:05 -07:00
Jim Miller
c6e523ea9b Fix 6486099: Fix clipping issues with MultiWaveView on phone/tablet
This fixes a problem where the bounds of the view weren't being
calculated properly when a separate outer radius was specified.

The code now takes the maximum of the ring drawable's width/height
and that specified in the resource files.

This gives it the best default look on all devices while still
allowing minor tweaks.

Change-Id: I5daa40ff4f14653c8cc89b39102816afb976e4f7
2012-05-12 14:23:23 -07:00