4750 Commits

Author SHA1 Message Date
Svetoslav Ganov
4213804541 Accessibility focus - framework
Usefulness: Keep track of the current user location in the screen when
            traversing the it. Enabling structural and directional
            navigation over all elements on the screen. This enables
            blind users that know the application layout to efficiently
            locate desired elements as opposed to try touch exploring the
            region where the the element should be - very tedious.

Rationale: There are two ways to implement accessibility focus One is
           to let accessibility services keep track of it since they
           have access to the screen content, and another to let the view
           hierarchy keep track of it. While the first approach would
           require almost no work on our part it poses several challenges
           which make it a sub-optimal choice. Having the accessibility focus
           in the accessibility service would require that service to scrape
           the window content every time it changes to sync the view tree
           state and the accessibility focus location. Pretty much the service
           will have to keep an off screen model of the screen content. This
           could be quite challenging to get right and would incur performance
           cost for the multiple IPCs to repeatedly fetch the screen content.
           Further, keeping virtual accessibility focus (i.e. in the service)
           would require sync of the input and accessibility focus. This could
           be challenging to implement right as well. Also, having an unlimited
           number of accessibility services we cannot guarantee that they will
           have a proper implementation, if any, to allow users to perform structural
           navigation of the screen content. Assuming two accessibility
           services implement structural navigation via accessibility focus,
           there is not guarantee that they will behave similarly by default,
           i.e. provide some standard way to navigate the screen content.
           Also feedback from experienced accessibility researchers, specifically
           T.V Raman, provides evidence that having virtual accessibility focus
           creates many issues and it is very hard to get right.
           Therefore, keeping accessibility focus in the system will avoid
           keeping an off-screen model in accessibility services, it will always
           be in sync with the state of the view hierarchy and the input focus.
           Also this will allow having a default behavior for traversing the
           screen via this accessibility focus that is consistent in all
           accessibility services. We provide accessibility services with APIs to
           override this behavior but all of them will perform screen traversal
           in a consistent way by default.

Behavior:  If accessibility is enabled the accessibility focus is the leading one
           and the input follows it. Putting accessibility focus on a view moves
           the input focus there. Clearing the accessibility focus of a view, clears
           the input focus of this view. If accessibility focus is on a view that
           cannot take input focus, then no other view should have input focus.
           In accessibility mode we initially give accessibility focus to the topmost
           view and no view has input focus. This ensures consistent behavior accross
           all apps. Note that accessibility focus can move hierarchically in the
           view tree and having it at the root is better than putting it where the
           input focus would be - at the first input focusable which could be at
           an arbitrary depth in the view tree. By default not all views are reported
           for accessibility, only the important ones. A view may be explicitly labeled
           as important or not for accessibility, or the system determines which one
           is such - default. Important views for accessibility are all views that are
           not dumb layout managers used only to arrange their chidren. Since the same
           content arrangement can be obtained via different combintation of layout
           managers, such managers cannot be used to reliably determine the application
           structure. For example, a user should see a list as a list view with several
           list items and each list item as a text view and a button as opposed to seeing
           all the layout managers used to arrange the list item's content.
           By default only important for accessibility views are regared for accessibility
           purposes. View not regarded for accessibility neither fire accessibility events,
           nor are reported being on the screen. An accessibility service may request the
           system to regard all views. If the target SDK of an accessibility services is
           less than JellyBean, then all views are regarded for accessibility.
           Note that an accessibility service that requires all view to be ragarded for
           accessibility may put accessibility focus on any view. Hence, it may implement
           any navigational paradigm if desired. Especially considering the fact that
           the system is detecting some standard gestures and delegates their processing
           to an accessibility service. The default implementation of an accessibility
           services performs the defualt navigation.

bug:5932640
bug:5605641

Change-Id: Ieac461d480579d706a847b9325720cb254736ebe
2012-04-13 19:05:24 -07:00
Eric Fischer
bc6aa58d43 Merge "Import translations. DO NOT MERGE" 2012-04-13 17:06:32 -07:00
Dianne Hackborn
8b2dd9c870 Merge "Improve lock screen hide animation." 2012-04-13 16:55:00 -07:00
Eric Fischer
5ffc3bd2b6 Import translations. DO NOT MERGE
Change-Id: I6c9944f6c0968d076210839b415dca80722cd80d
2012-04-13 12:46:16 -07:00
Dianne Hackborn
9adeb6b98d Improve lock screen hide animation.
Fade the alpha quicker, to reduce the amount of dimming to
black we see in the middle.  Also start scaled a little
farther back; since in this case the lock screen is fully
opaque, we won't see the early part of the window animation
behind.

Change-Id: I65fcfbf2f27860abf6a1b225a44428d8a20cfb34
2012-04-13 12:24:05 -07:00
Jake Hamby
b4bc99e847 Add user confirmation dialog before sending SMS to short code.
Non-system apps now require user confirmation before sending an SMS
to a short code that may potentially cost the user money. The number
is tested against regex patterns for short codes for the country
matching the user's SIM card or network. The user is warned if the
phone number is potentially or definitely a premium SMS number.

The regex patterns are loaded from core/res/res/xml/sms_short_codes.xml.
If the user's country is not found, then phone numbers of 5 digits or less
(excluding known emergency phone numbers) are considered to be potential
SMS short codes.

Command to run test cases:
$ runtest -c com.android.internal.telephony.SmsUsageMonitorShortCodeTest frameworks-telephony

Bug: 5513975
Change-Id: Ic0b483153390e974c632302f3061300bc2a2274a
2012-04-13 11:50:10 -07:00
Dianne Hackborn
b0398f59aa Merge "Clean up lock screen hide animation." 2012-04-12 15:28:52 -07:00
Dianne Hackborn
0c2acffec8 Clean up lock screen hide animation.
We now have an animation to apply to the thing behind the lock
screen animation when it isn't on the wallpaper, which looks
similar to the animation we use when both are on the wallpaper.

In implementing this, cleaned up the code to figure out up-front
which animation to run, getting rid of that kludgy thing that
cleared the window animation if the wallpaper was not being used
for the lower windows.

Change-Id: Ifc4c8a8894ad384124dcf4bbdaab134f1157b0f3
2012-04-12 15:26:11 -07:00
Svetoslav Ganov
f21bea245a Merge "CheckBox should not populate AccessibilityEvent with text." 2012-04-12 14:16:42 -07:00
Svetoslav Ganov
1728c07bfb CheckBox should not populate AccessibilityEvent with text.
1. Accessibility services are the ones that choose how to
   announces the checked state of a checkable control, so
   CheckBox should not add strings for its state to access
   events.

2. Removed some unused accessibility related strings.

bug:6241115

Change-Id: I572b961191da4b3537fb6cad529d9764d39161ec
2012-04-12 13:59:42 -07:00
Dianne Hackborn
187ae2105e Revert to ICS screen rotation animation.
Change-Id: Ida76f17a00e4c8ab828deae51095107e4eeaa321
2012-04-12 13:08:26 -07:00
Jeff Brown
cdebd54805 Merge "Don't do anything on lid state change by default." 2012-04-11 15:19:41 -07:00
Jeff Brown
2e7760eba0 Don't do anything on lid state change by default.
Because a lid switch can be used to do many things, it's best
if the framework does not do anything by default when the lid is
opened or closed.  The behavior of the lid switch should be
configured on a per-product basis in a config.xml resource overlay.

Bug: 6320088
Change-Id: I9f768dd11d76c3c17c49f46c92f993ee2ff1409f
2012-04-11 15:14:55 -07:00
Eric Fischer
31512821ce Import translations. DO NOT MERGE
Change-Id: I0ccad7d90521504398872d516201309a5198b67f
2012-04-11 12:42:59 -07:00
satok
8d33d39d68 Merge "Show physical keyboard control button on the input method switch dialog" 2012-04-11 00:12:59 -07:00
satok
01038492ff Show physical keyboard control button on the input method switch dialog
Bug: 5240095
Change-Id: Ica768083f95c33dc1e494a28ba7d8b6eb989b0ef
2012-04-11 15:49:35 +09:00
Jeff Brown
9f25b7fdf2 Request key maps from input manager service.
Instead of each application loading the KeyCharacterMap from
the file system, get them from the input manager service as
part of the InputDevice object.

Refactored InputManager to be a proper singleton instead of
having a bunch of static methods.

InputManager now maintains a cache of all InputDevice objects
that it has loaded.  Currently we never invalidate the cache
which can cause InputDevice to return stale motion ranges if
the device is reconfigured.  This will be fixed in a future change.

Added a fake InputDevice with ID -1 to represent the virtual keyboard.

Change-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7
2012-04-10 18:23:58 -07:00
Eric Fischer
cd1c059bbc Merge "Import translations. DO NOT MERGE" 2012-04-10 14:22:52 -07:00
Jeff Sharkey
40caf8f443 Move to Android-specific NTP pool.
Use "2.android.pool.ntp.org" since it returns both IPv4 and IPv6
addresses.  Verified that NTP client works correctly on both.

Change-Id: I0187ef4a6d3b353cfcc77957b1303ca01c67cbe9
2012-04-10 13:48:10 -07:00
Eric Fischer
7866e84fbc Import translations. DO NOT MERGE
Change-Id: I988480b6b1ff1b745b4126ef89ee57b97513d6e2
2012-04-10 13:29:58 -07:00
Dianne Hackborn
79af6063d5 Merge "Hide the optional permission stuff, not making it in to JB." 2012-04-10 10:31:28 -07:00
Daniel Sandler
c38cf4c7db Merge "New Android Dreams architecture, disabled for now." 2012-04-10 05:33:07 -07:00
Adam Powell
a7dec6d973 Restrictions for action buttons with text
Restrict action buttons with text to 2 lines max. Action buttons with
text will always consume at least 2 cells in split mode because they
look silly in 1.

Note that this affects text provided by menu items, not TextViews
embedded within app-provided action views.

Fixes bug 6236467

Change-Id: I7bcbf80f448b13a895ddc3bc6a7a555c0f0bac7c
2012-04-09 16:37:52 -07:00
Eric Fischer
310ee7cf49 Import translations. DO NOT MERGE
Change-Id: I9299202c20b57a4bbdee61cc1db3cb3d7cefb762
2012-04-09 13:54:59 -07:00
Daniel Sandler
7d276c377c New Android Dreams architecture, disabled for now.
Rather than normal Activities (which have a host of problems
when used for this purpose), screen savers are now a
special kind of Service that can add views to its own
special window (TYPE_DREAM, in the SCREENSAVER layer).

Dreams are now launched by the power manager; whenever it is
about to turn the screen off, it asks the window manager if
it wants to run a screen saver instead. (http://b/5677408)

Also, the new config_enableDreams bool allows the entire
feature to be switched on or off in one place. It is
currently switched off (and the APIs are all @hidden).

Change-Id: Idfe9d430568471d15f4b463cb70586a899a331f7
2012-04-09 15:33:26 -04:00
Daniel Sandler
b9e90a3a8d Merge "Fix alignment of notification action buttons." 2012-04-09 07:28:59 -07:00
Adam Powell
e2427cac77 Merge "Add contentDescription for compact action_mode_close_item" 2012-04-06 16:41:17 -07:00
Adam Powell
7ba5d57ad4 Add contentDescription for compact action_mode_close_item
Fix bug 6219630

Change-Id: I551624466d02f5d31be7030518b0d47b3b7f03b5
2012-04-06 16:39:11 -07:00
Dianne Hackborn
e824120016 Hide the optional permission stuff, not making it in to JB.
Also lock down the rest of the development tools permissions to
be development permissions that must be granted through an
explicit shell command.

Change-Id: I1ba216fffe1aab4bb9f83fcef108efc504f892f4
2012-04-06 13:39:09 -07:00
Eric Fischer
442d572dda Import translations. DO NOT MERGE
Change-Id: I5899fbec882970afd4840aded5ef0eab32b40e54
2012-04-06 13:04:40 -07:00
Daniel Sandler
de6b5152bb Fix alignment of notification action buttons.
Change-Id: Ibfb8f54b6aa59f1c7a56a5e3e8b0c762e48dd496
2012-04-06 10:23:07 -04:00
satok
f6710615c6 Supplement for I772164d9c67e95876c228efcce2
This should be merged with I1519258dd3ce95ad01

Change-Id: I48c5f86ff43f51913eb69d697bb1d75714b67aa3
2012-04-06 13:01:51 +09:00
Jeff Brown
ac14351e16 Move some APIs from window manager to input manager.
Simplified input injection API down to just one call.

Removed all input state reading API.  It was only used by the
window manager policy and required a permission that applications
could not obtain.  READ_INPUT_STATE is now unused and deprecated.

Change-Id: I41278141586ddee9468cae0fb59ff0dced6cbc00
2012-04-05 19:33:11 -07:00
Jim Miller
4350498002 Merge "Fix 6216452: Add search target to lock screen" 2012-04-05 17:31:19 -07:00
Jim Miller
c00fd7ab30 Fix 6216452: Add search target to lock screen
Change-Id: I0784e844fb8e1f904f37d2572c6ddbd6c22e95d1
2012-04-05 17:14:02 -07:00
Jeff Brown
23b871d714 Merge "Initial commit of InputManager and keyboard layout API." 2012-04-05 15:29:24 -07:00
Brian Colonna
2cde1f97b8 Merge "Fix 5849324: Changed FUL extents for pattern backup" 2012-04-05 15:24:49 -07:00
Eric Fischer
22394c1c16 Merge "Import translations. DO NOT MERGE" 2012-04-05 15:11:39 -07:00
Jeff Brown
9df6e7a926 Initial commit of InputManager and keyboard layout API.
Added a new InputManager service for interacting with input
devices and configuring them.  This will be the focus of
an upcoming refactoring.

Added an API for registering keyboard layouts with the system
based on the use of a broadcast receiver.  Applications can
register their own keyboard layouts simply by declaring a
broadcast receiver in their manifests.

Added the skeleton of a package that will ultimately contain
the keyboard layouts and other input device related resources
that are part of the base system.

Bug: 6110399
Change-Id: Ie01b0ef4adbd5198f6f012e73964bdef3c51805c
2012-04-05 14:42:10 -07:00
Eric Fischer
e422b10f93 Import translations. DO NOT MERGE
Change-Id: I83bc71f4f6f9b0798e11314491d5e9b13f1a75fe
2012-04-05 14:19:40 -07:00
Brian Colonna
cf8d9073a6 Fix 5849324: Changed FUL extents for pattern backup
The extents of FUL when using PIN unlock are such that there are
4 dps of space between FUL and the adjacent text above and below.
The extents of FUL when using pattern backup were such that FUL
was very far below the adjacent text above.  Pattern backup is
now consistent with PIN backup - 4 dps of space between FUL and
the adjacent text above and below.

Note that it is not possible for FUL to be the same exact size
when using pattern backup vs. PIN backup because the rest of
the layout is different.  Making it a consistent distance from
the surrounding text is the best we can do.

To fix this, the FUL area simply had to cover an extra row in the
grid layout (a space view), and the top and bottom margins had to
be set to 4 dp.  Since only the FUL view is affected, it does not
impact the rest of the layout.

This has been tested on both a Prime and Crespo to make sure it
works across different size devices.  All lock methods have been
tested to make sure other methods were not affected.

Change-Id: I518f1b616cf7bedc510979d422ebc72e07a5aff4
2012-04-05 15:58:48 -04:00
Adam Powell
9828830611 Merge "TaskStackBuilder and Activity navigation features for framework" 2012-04-05 11:55:06 -07:00
Dianne Hackborn
5459c43b83 Merge "Clean up status bar, system bar, navigation bar management." 2012-04-05 11:47:02 -07:00
Adam Powell
dd8fab2629 TaskStackBuilder and Activity navigation features for framework
Promote navigation helpers from the support library to the core
platform.

The support library's meta-data element has been replaced with a
first-class parentActivityName attribute. This attribute is valid
on both activity and activity-alias elements. An activity-alias
will inherit the target activity's parentActivityName if one is
not explicitly specified.

Automatic Up navigation for Activities

Add the public method onNavigateUp() to Activity. The default
implementation will use the metadata supplied in the manifest about an
activity's hierarchical parent (parentActivityName) to do the right
thing.

If any activities in the parent chain require special Intent
arguments, the Activity subclass should override onNavigateUp() to
properly implement Up navigation for the app, supplying such arguments
as needed.

If automatic Up navigation within the same task can't find an activity
matching the supplied intent in the current task stack, it will act as
an in-app "home" and return to the root activity (presumably the app's
front page) in that task. (From this state, pressing "back" with
default behavior will return to the launcher.)

Change-Id: If163e27e59587f7af36975a09c986cb117ec3bc6
2012-04-05 11:45:10 -07:00
Daniel Sandler
48200b6f3f Merge "Chronometer support in Notifications." 2012-04-04 17:49:24 -07:00
Dianne Hackborn
f87d19621d Clean up status bar, system bar, navigation bar management.
The status bar and navigation bar are two completely separate
elements, with their own semantics.  The system bar now classifies
itself as a navigation bar, since that is really how it behaves.

This required rewriting the HDMI resizing code, so that it is
all done by PhoneWindowManager since that is what is responsible
for the size of the navigation bar (and thus now system bar).  This
actually gets rid of a fair amount of code, and means we can also
do the same thing for a pure navigation bar.

Likewise the system bar now has the navigation bar ability to be
hidden when requested by system UI flags.  To get the behavior
we want on Xoom, we only allow the nav bar to be hidden when it
will help provide a better aspect ratio for showing widescreen
videos.

Finally the nav/system bar now animates when hidden and shown.

Change-Id: Ie927154b68376a0b61802f99171ff56b8da92e7a
2012-04-04 16:00:45 -07:00
Fabrice Di Meglio
d779412c58 Merge "Add View textAlignment" 2012-04-04 14:17:22 -07:00
Daniel Sandler
a2985ed309 Chronometer support in Notifications.
@hidden for now while we experiment with it in Phone.

Change-Id: Ib6ca3a8262f676d49d81e081a30c6d994c732a6b
2012-04-04 15:35:44 -04:00
Fabrice Di Meglio
9da0f8a5c4 Add View textAlignment
- fix bug #6163772
- use bits field and pack them as much as possible
- take care of "supportsRtl" flag from Manifest
- add visual unit tests

CTS unit tests in another CL

Change-Id: Ib77c4eb423854209af130688c5ef9977401a9c1c
2012-04-04 12:20:45 -07:00
Daniel Sandler
ea7593ce0f Fix vertical alignment of notification contents.
Change-Id: Ibbb237f1b892cb0605417cdef17a9e59316ecb1f
2012-04-04 15:00:55 -04:00