26981 Commits

Author SHA1 Message Date
alanv
27093def8d Check for null ViewRootImpl when saving accessibility focus in ListView.
Bug: 7135071
Change-Id: Ide8b6af38b7f1b9bb809e4f8b1c933cb5ddb5e86
2012-09-10 11:10:25 -07:00
Wu-cheng Li
753e1280cb Merge "Unhide INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE." into jb-mr1-dev 2012-09-10 00:48:26 -07:00
Dianne Hackborn
1b8ecc5031 A little cleanup.
Change-Id: Ie33fd1b02011606e67ce08df3cce887c07680c60
2012-09-09 14:41:34 -07:00
Jeff Brown
a3909a9395 Work around crash when display is removed.
After a display is removed, there may be a brief time
when a Context still exists that is bound to it.
We need to provide metrics in this case.

Bug: 7131637
Change-Id: I11b264a000653adbf0f3da399eaab66c4b40fb2a
2012-09-09 01:05:38 -07:00
Jeff Brown
20ec8ac586 Merge "Improve Wifi display discovery API." into jb-mr1-dev 2012-09-09 00:23:59 -07:00
Jeff Brown
180bbc7181 Improve Wifi display discovery API.
Change-Id: I4d46503e5413f52da16f79bbc9c631cc5ae9c178
2012-09-08 23:15:00 -07:00
Amith Yamasani
8f008e737a Merge "More multi-user methods in PM" into jb-mr1-dev 2012-09-08 20:20:57 -07:00
Amith Yamasani
151ec4c9f8 More multi-user methods in PM
pm can list installed packages by user now.

Bug: 6926465

Change-Id: I822311bfd6e7e2d6fb315fc484739fbf953c9bb6
2012-09-08 19:14:00 -07:00
Jeff Brown
1edf63ef4c Merge "Enable auto-brightness adjustment feature with system prop." into jb-mr1-dev 2012-09-08 15:53:50 -07:00
Jeff Brown
631938f26d Enable auto-brightness adjustment feature with system prop.
This feature is experimental and disabled by default.

Change-Id: I183534370da7613557e4d1535f556873f8a763df
2012-09-08 15:11:11 -07:00
Jeff Brown
b0d10aa983 Merge "Add new wifi display discovery API." into jb-mr1-dev 2012-09-08 14:55:02 -07:00
Jeff Brown
e08ae388d6 Add new wifi display discovery API.
The API is quite simple.  There are a few extra functions
on DisplayManager to scan, connect and disconnect from
wifi displays and get status, and a single protected
broadcast sent when the status changes.

Change-Id: Ic91dbab5ee818e790b27fa32e1a1e93788793be0
2012-09-08 14:53:34 -07:00
Dianne Hackborn
74ee8652e0 Add Binder.getCallingUserHandle().
Change-Id: I2a7eedfdc7baeeb4c2cd2ca0153aa95e0cf0bf45
2012-09-07 18:33:18 -07:00
Jeff Brown
7017e48380 Merge "Add support for Wifi display." into jb-mr1-dev 2012-09-07 16:00:13 -07:00
rich cannings
4d8fc793f0 Move verification settings to Settings.Global
Move Settings.Secure.PACKAGE_VERIFIER_ENABLE,
Settings.Secure.PACKAGE_VERIFIER_TIMEOUT,
Settings.Secure.PACKAGE_VERIFIER_DEFAULT_RESPONSE to
Settings.Global.PACKAGE_VERIFIER_ENABLE,
Settings.Global.PACKAGE_VERIFIER_TIMEOUT,
Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE, respectively.

Bug: 7082362
Change-Id: I21fde031a330563891c0129132f3d6369ac5e7a5
2012-09-07 15:34:08 -07:00
Raph Levien
965e7ff4de Merge "Fix Time.parse and Time.parse3339 crashing bugs. DO NOT MERGE" into jb-mr1-dev 2012-09-07 15:08:42 -07:00
Chet Haase
89b3f48fa3 Merge "Enable changing properties of layer paint" into jb-mr1-dev 2012-09-07 14:44:43 -07:00
Dianne Hackborn
5e03e2ca7d More multi-user stuff:
- New (hidden) isUserRunning() API.
- Maintain LRU list of visited users.
- New FLAG_IS_DATA_ONLY for ApplicationInfo.
- Clean up pending intent records when force-stopping a user (or package).
  (Also fixes bug #6880627: PendingIntent.getService() returns stale
  intent of force stopped app)
- Fix force-stopping when installing an app to do the force-stop across
  all users for that app.
- When selecting which processes to kill during a force stop, do this
  based on the actual packages loaded in the process, not just process
  name matching.
- You can now use --user option in am when starting activities, services,
  and instrumentation.
- The am --user option accepts "current" and "all" as arguments.
- The pm uninstall command now uninstalls for all users, so it matches
  the semantics of the install command.
- PhoneWindowManager now explicitly says to start home in the current
  user.
- Activity manager call to retrieve the MIME type from a content provider
  now takes a user argument, so it will direct this to the proper user.
- The package manager uninstall paths are now implemented around
  PackageSetting, not PackageParser.Package.  This allows them to work
  even if the application's apk has been removed (in which case it only
  exists as a PackageSetting, not the PackageParser.Package parsed from
  the apk).

Change-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40
2012-09-07 13:55:23 -07:00
Chet Haase
d15ebf25c5 Enable changing properties of layer paint
Previously, to draw a layered view with a changed Paint object for the
drawLayer operation, you'd have to invalidate the parent view, to get the
native DisplayList to pick up the new Paint properties. This change adds
API and functionality so that the developer can call setLayerPaint(), which
does the proper invalidation (lightweight, doesn't cause redrawing the view).

Issue #6923810 Make it easy to efficiently animate a layer's Paint

Change-Id: I7fea79788d50f6d9c86dd5e5b2a4490cb95142bb
2012-09-07 13:27:02 -07:00
Jeff Brown
cbad976b2a Add support for Wifi display.
Change-Id: I99693786cf9d07d07d3400046c55eb4933730b80
2012-09-07 13:26:31 -07:00
Christopher Tate
970683c5d4 Merge "Further fixup of migration to global settings" into jb-mr1-dev 2012-09-07 12:56:42 -07:00
Elliott Hughes
5ef49427b6 Fix Time.parse and Time.parse3339 crashing bugs. DO NOT MERGE
Two reported by users, the other spotted by inspection.

Bug: http://code.google.com/p/android/issues/detail?id=16002
Bug: http://code.google.com/p/android/issues/detail?id=22225
Change-Id: I86fe022fda4af68e5a6fb9dc5dd2abdb75e9d966

This was committed to master, cherry-picking to jb-mr1-dev
2012-09-07 12:42:18 -07:00
Christopher Tate
9219874be9 Further fixup of migration to global settings
The Settings.System.STAY_ON_WHILE_PLUGGED element should have been
migrated to the global table, but wasn't.  This CL does a couple of
things around dealing with this:

(1) Tidies up the migration tables outright, so that they correctly
    reflect the intended final state

(2) Introduces the option of doing a key migration only if the element
    has not yet been moved to the new table, to allow for safe retry-
    -with-ignore.  This will make it easy to make any future alterations
    to the global vs per-user association of individual elements

(3) Migrates the STAY_ON_WHILE_PLUGGED element if it hasn't been already.

Bug 7126575

Change-Id: Ic5fa9ba45f11b09270bd5bc94c26fbbd84abc749
2012-09-07 12:00:13 -07:00
Teng-Hui Zhu
4db5d23dea Merge "Back key to dismiss full screen video" into jb-mr1-dev 2012-09-07 11:49:54 -07:00
Svetoslav Ganov
390a06b882 Merge "Restore accessibility focus after ListView layout." into jb-mr1-dev 2012-09-07 10:32:55 -07:00
Romain Guy
6543c292b2 Merge "The drawables cache strikes again Bug #7117785" into jb-mr1-dev 2012-09-07 10:32:55 -07:00
alanv
30ee76cf05 Restore accessibility focus after ListView layout.
Bug: 6439454
Change-Id: Ia61f5153b32c6ce5d18301f74e7e79c86349b987
2012-09-07 10:31:16 -07:00
Fabrice Di Meglio
f6aa537c2d Merge "Make ProgressBar / SeekBar / RatingBar widgets aware of layout direction" into jb-mr1-dev 2012-09-07 10:19:23 -07:00
Fabrice Di Meglio
01fcb72894 Merge "Use "ldrtl" and "ldltr" config qualifiers for RTL / LTR resources" into jb-mr1-dev 2012-09-07 10:17:55 -07:00
Wu-cheng Li
e590dc6f7d Unhide INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE.
bug:7053266

Change-Id: I4e00199598f57f11250abeab4ce17ced18f41f14
2012-09-07 19:05:41 +08:00
Jeff Sharkey
9545dc020e Include primary flag in StorageVolume.
Bug: 7003520
Change-Id: Iaae2ae22253820c954c51e0199c31087bc825f3f
2012-09-06 23:15:20 -07:00
Jeff Sharkey
162fabbcf8 Let Pair represent null values.
Bug: 7121262
Change-Id: I067ea0a4af40a0e8935a9408404df7a2e851e22c
2012-09-06 23:05:11 -07:00
Svetoslav Ganov
8e21d4df21 Merge "Adding accessibility check in the node provider of NumberPicker." into jb-mr1-dev 2012-09-06 20:00:19 -07:00
Svetoslav Ganov
a909276298 Adding accessibility check in the node provider of NumberPicker.
1. The node provide in number picker was sending accessibility events
   without checking whether accessibility is enabled leading to a
   crash if accessibility is disable when the event is sent.

bug:7095330

Change-Id: I2e14b757003b4db58922cf6e20ea8e119770e567
2012-09-06 19:57:05 -07:00
Svetoslav Ganov
01fa888903 Merge "Adding FEEDBACK_BRAILLE to AccessibilityServiceInfo." into jb-mr1-dev 2012-09-06 19:43:54 -07:00
Svetoslav Ganov
eb9862fd4c Adding FEEDBACK_BRAILLE to AccessibilityServiceInfo.
1. The feedback type provided by braille devices differs from all
   already predefined types and this change defines braille
   feedback type. Braille does not fit in the already predefined
   categories.

bug:6998945

Change-Id: Ide6043bed03fdecd6d2ee45a08762f5bd07a2118
2012-09-06 19:40:34 -07:00
Svetoslav Ganov
52832e0c4f Merge "Granular navigation not possible in edit text if the view has content description." into jb-mr1-dev 2012-09-06 19:14:31 -07:00
Svetoslav Ganov
2f4bf52d2c Granular navigation not possible in edit text if the view has content description.
1. We were giving precedence of content description over text and this is
   what content description is supposed to do - override the text. However,
   putting content description on an EditText by mistake would render the
   text view not navigable which is pretty much unusable. Now we are giving
   precedence to the text and use the content description as a fall back if
   text is empty.

bug:7078382

Change-Id: I00882ace149344478b127124bd5e641903e1b756
2012-09-06 19:08:26 -07:00
Svetoslav Ganov
3540f1f28b Merge "Granular navigation uses mContentDescription instead of getCpontentDescription()s" into jb-mr1-dev 2012-09-06 19:06:37 -07:00
Svetoslav Ganov
05282aa43e Granular navigation uses mContentDescription instead of getCpontentDescription()s
1. Getting the value of the content description via the method since
   there is nothing preventing developers to override the method to
   return a desired value (they should not do that but it is feasible).

bug:7079008

Change-Id: Iaf5848e9b065454ebfefccf685415fbf034ae475
2012-09-06 19:06:12 -07:00
Svetoslav Ganov
1cf70bbf96 Screen magnification - feature - framework.
This change is the initial check in of the screen magnification
feature. This feature enables magnification of the screen via
global gestures (assuming it has been enabled from settings)
to allow a low vision user to efficiently use an Android device.

Interaction model:

1. Triple tap toggles permanent screen magnification which is magnifying
   the area around the location of the triple tap. One can think of the
   location of the triple tap as the center of the magnified viewport.
   For example, a triple tap when not magnified would magnify the screen
   and leave it in a magnified state. A triple tapping when magnified would
   clear magnification and leave the screen in a not magnified state.

2. Triple tap and hold would magnify the screen if not magnified and enable
   viewport dragging mode until the finger goes up. One can think of this
   mode as a way to move the magnified viewport since the area around the
   moving finger will be magnified to fit the screen. For example, if the
   screen was not magnified and the user triple taps and holds the screen
   would magnify and the viewport will follow the user's finger. When the
   finger goes up the screen will clear zoom out. If the same user interaction
   is performed when the screen is magnified, the viewport movement will
   be the same but when the finger goes up the screen will stay magnified.
   In other words, the initial magnified state is sticky.

3. Pinching with any number of additional fingers when viewport dragging
   is enabled, i.e. the user triple tapped and holds, would adjust the
   magnification scale which will become the current default magnification
   scale. The next time the user magnifies the same magnification scale
   would be used.

4. When in a permanent magnified state the user can use two or more fingers
   to pan the viewport. Note that in this mode the content is panned as
   opposed to the viewport dragging mode in which the viewport is moved.

5. When in a permanent magnified state the user can use three or more
   fingers to change the magnification scale which will become the current
   default magnification scale. The next time the user magnifies the same
   magnification scale would be used.

6. The magnification scale will be persisted in settings and in the cloud.

Note: Since two fingers are used to pan the content in a permanently magnified
   state no other two finger gestures in touch exploration or applications
   will work unless the uses zooms out to normal state where all gestures
   works as expected. This is an intentional tradeoff to allow efficient
   panning since in a permanently magnified state this would be the dominant
   action to be performed.

Design:

1. The window manager exposes APIs for setting accessibility transformation
   which is a scale and offsets for X and Y axis. The window manager queries
   the window policy for which windows will not be magnified. For example,
   the IME windows and the navigation bar are not magnified including windows
   that are attached to them.

2. The accessibility features such a screen magnification and touch
   exploration are now impemented as a sequence of transformations on the
   event stream. The accessibility manager service may request each
   of these features or both. The behavior of the features is not changed
   based on the fact that another one is enabled.

3. The screen magnifier keeps a viewport of the content that is magnified
   which is surrounded by a glow in a magnified state. Interactions outside
   of the viewport are delegated directly to the application without
   interpretation. For example, a triple tap on the letter 'a' of the IME
   would type three letters instead of toggling magnified state. The viewport
   is updated on screen rotation and on window transitions. For example,
   when the IME pops up the viewport shrinks.

4. The glow around the viewport is implemented as a special type of window
   that does not take input focus, cannot be touched, is laid out in the
   screen coordiates with width and height matching these of the screen.
   When the magnified region changes the root view of the window draws the
   hightlight but the size of the window does not change - unless a rotation
   happens. All changes in the viewport size or showing or hiding it are
   animated.

5. The viewport is encapsulated in a class that knows how to show,
   hide, and resize the viewport - potentially animating that.
   This class uses the new animation framework for animations.

6. The magnification is handled by a magnification controller that
   keeps track of the current trnasformation to be applied to the screen
   content and the desired such. If these two are not the same it is
   responsibility of the magnification controller to reconcile them by
   potentially animating the transition from one to the other.

7. A dipslay content observer wathces for winodw transitions, screen
   rotations, and when a rectange on the screen has been reqeusted. This
   class is responsible for handling interesting state changes such
   as changing the viewport bounds on IME pop up or screen rotation,
   panning the content to make a requested rectangle visible on the
   screen, etc.

8. To implement viewport updates the window manger was updated with APIs
   to watch for window transitions and when a rectangle has been requested
   on the screen. These APIs are protected by a signature level permission.
   Also a parcelable and poolable window info class has been added with
   APIs for getting the window info given the window token. This enables
   getting some useful information about a window. There APIs are also
   signature protected.

bug:6795382

Change-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00
2012-09-06 18:56:17 -07:00
Fabrice Di Meglio
0af4b8b0c8 Make ProgressBar / SeekBar / RatingBar widgets aware of layout direction
- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)

Change-Id: I8d76299090abf6b2b187696b1a83e71d7a44b1ce
2012-09-06 18:05:02 -07:00
Romain Guy
5f49c3023a The drawables cache strikes again
Bug #7117785

Draawables created from the ConstantState cache found in Resources must be
mutated before they can be safely modified by apps. Failure to do so results
in all drawables sharing the same constant state to be affected by the
modification.

In the case of the bugreport above, the status bar code plays tricks with
a background drawable and modifies its color to implement a fade in/out
effect. This drawable comes from a cached resource (color 0x0) and the
modifications made by the status bar apply to other clients of this drawable,
most notably the recents panel.

This change fixes several things:
- Simplifies colors caching by removing the assetCookie from the key. This
should result in better reuse of cached drawables
- Makes View.setBackgroundColor() honor the mutate() contract
- Ensure StateListDrawable properly mutates its children before modifying
them
- Optimize Bitmap/ColorDrawable to mark them mutated when they are not
created from an existing ConstantSate. The same optimization should be
applied to other drawables in the future

Change-Id: I54adb5d5b914c7d8930bf9b46f7e3f9dcbf4bcab
2012-09-06 16:40:51 -07:00
Christopher Tate
06efb530a4 Per-user settings
Each user has its own Settings.System.* and Settings.Secure.* namespace now.  In
addition, this CL introduces the new Settings.Global.* namespace, which contains
a number of previously-elsewhere named settings entities; these Global.* entities
are common to all users.  Because these elements have been moved from their prior
existence in the other namespaces, attempts to access them under their old names
and namespaces are detected and redirected (with appropriate compile-time and
logging messages) to their new homes.

The new Global.* namespace can only be written by system-level code, just like
the existing Secure.* namespace.  If an app attempts to write a key that was
previously in the System.* namespace but has been moved to the Global.* namespace,
then a warning is logged and no write is performed; the action is a no-op.  (The
app is explicitly not crashed, to avoid breaking well-behaved apps that can't
know any better.)

There is also now a hidden API for getting/setting settings entities associated
with a user other than the caller's.  Reading/writing data for a user other than
yourself requires the signature-level INTERACT_ACROSS_USERS_FULL permission.

Manipulating data for a different user cannot be done via the ContentProvider
query() / insert() APIs; you must use the Settings.get/put APIs for that degree
of control.  In general, use of the get/set API is *strongly* preferred over
query-type access to Settings.

Bug 6985398

Change-Id: Ibee54ddff99fb847c8c2479c23b50f1e7524d724
2012-09-06 16:39:08 -07:00
Craig Mautner
9e130e70ef Merge "Limit certain actions to default Display." into jb-mr1-dev 2012-09-06 16:30:34 -07:00
Teng-Hui Zhu
5558eacfbf Back key to dismiss full screen video
Also cleanup some warnings.

bug:6722752

Change-Id: Ib612cf79e9546d40a048c5f09a1be6ca37ce51f8
2012-09-06 16:20:14 -07:00
Craig Mautner
5851c6e638 Merge "Convert resized() method to new parameters." into jb-mr1-dev 2012-09-06 15:07:46 -07:00
Chris Craik
a6b5eca796 Merge "Don't trigger log for empty views" into jb-mr1-dev 2012-09-06 15:07:46 -07:00
Craig Mautner
656e3af444 Convert resized() method to new parameters.
When the BaseIWindow.resized method got switched from taking (int x,
int y, ...) to taking (Rect, ...) the SurfaceView.MyWindow override
never got updated.

Fixes bug 6992324.

Change-Id: Id0b9625559ae0100336f4573f09d313138c8a6e7
2012-09-06 15:04:22 -07:00
Chris Craik
3667aa364f Don't trigger log for empty views
Change-Id: Idb2193d6dd064e5c4af1f02d0df2a83a7db0e0f8
2012-09-06 14:59:15 -07:00