Commit Graph

2646 Commits

Author SHA1 Message Date
Deepanshu Gupta
c97b4d3996 Merge "Support Locale.toLanguageTag on Java 6" into lmp-dev 2014-07-15 16:05:01 +00:00
Deepanshu Gupta
5cd9dde5a2 Support Locale.toLanguageTag on Java 6
Change-Id: I255e79e2c288cd24b350b7c26128bbbb0b2cb9a3
2014-07-15 12:56:04 -07:00
Craig Mautner
00e7ba05ac Merge "Launch activity behind launching task." into lmp-dev 2014-07-15 16:05:04 +00:00
Craig Mautner
bb74246278 Launch activity behind launching task.
Use ActivityOptions.makeLaunchTaskBehindAnimation() to launch tasks
behind the current task. Includes animations for launching and
launched tasks.

Fixes bug 16157517.

Change-Id: I0a94af70b4748592e94673b958ee824cfb3d7ec0
2014-07-15 11:36:25 -07:00
Amith Yamasani
4d922e6f74 Merge "Revert some new APIs for restrictions provider" into lmp-dev 2014-07-15 16:04:58 +00:00
Amith Yamasani
5470bc184a Revert some new APIs for restrictions provider
Simplify back to being a broadcast receiver and add an extra to
indicate that a new request is desired vs. returning a pending
response from before.

Change-Id: Iafd16ed98293a2cc09006d2cce097fc3d590bbe2
2014-07-15 09:43:20 -07:00
Narayan Kamath
a8755a8407 Fix multiArch parsing for ApkLite.
Two separate issues :
- We were not parcelling the value at all.
- We were looking for it in the wrong manifest attribute.

Note that this change has no observable effect on installs (which
is probably why it wasn't caught so far). This code path is only
used in FileInstallArgs.copyApk (where multiArch was effectively
false before this change) but the package manager extracts shared
libs *again* inside scanPackageLI where this was being done
correctly since the value there came from a "full" package
parse, and not a "lite" package parse.

Change-Id: I54c3efcf8f57e6970f8fbde8cd1f57d487b13114
2014-07-15 16:47:27 +01:00
Jeff Sharkey
69ea974f17 Merge "Public API for PackageInstaller!" into lmp-dev 2014-07-15 00:41:06 +00:00
Jeff Sharkey
6c833e07a0 Public API for PackageInstaller!
Flesh out documentation and finalize first cut of API.  Also surface
installLocation and splitNames through PackageInfo.

Bug: 14975160, 15348430
Change-Id: Ic27696d20ed06e508aa3526218e9cb20835af6a0
2014-07-14 23:06:52 -07:00
Aravind Akella
8b674abf4d Merge "Add PackageManager feature strings for relative humidity and temperature sensors." into lmp-dev 2014-07-14 18:38:08 +00:00
Christopher Tate
a7835b6b6b Add Context.getNoBackupFilesDir()
This is an app-private filesystem space exactly like the one
reported by Context.getFilesDir(), with one exception:  files
placed here are never backed up by the full-backup infrastructure.
If an app attempts to back up any of its contents via the normal
API it's immediately ignored with a logged warning.

The restriction is also enforced on the restore side, because
apps using support libraries might wind up creating full backup
archives containing no_backup subdirs on pre-L devices (via
adb backup, Helium, &c.).  We check for this before passing the
restore data to the app, and drop it if we detect the situation
so that the app never sees the bits.

Bug 16240573

Change-Id: I11216a391f1d32117ec7ce15aafc9cd93d0337de
2014-07-14 22:56:04 +00:00
dcashman
9d2f441f9b Initial KeySet API.
Previously submitted but reverted due to doc-compilation bug.

Bug: 6967056
Change-Id: I9bd7ef299a4c92c4b327f5b5d7e951f0753b4c8a
2014-07-14 12:50:51 -07:00
Aravind Akella
8b8e74bd74 Add PackageManager feature strings for relative humidity and temperature sensors.
Change-Id: I56351f37f1c51517a3384b6040df0ed2be0c95b0
2014-07-14 18:01:55 +00:00
Amith Yamasani
f6e2fcc2ea Improvements to Restrictions API
Convert restrictions provider to a service instead of a receiver.
Add a way to get pending responses from restrictions provider.
Add AbstractRestrictionsProvider.
Add a callback API for responses.

Removed some constants in RestrictionsManager.
Added new constants for errors and error codes.
Much improved javadocs.

Bug: 16176009

Change-Id: I838a50fabc80b94b632294b3a55cd5d8092acf55
2014-07-13 07:17:56 -07:00
Jeff Sharkey
a103114347 Package installation listener events.
Flesh out implementation of install session observers.  Carve out 20%
of published install progress for final system operations such as
dexopt, etc.

Add dumpsys output for active install sessions.  Create explicit
fsync() instead of overriding meaning of flush().  Hack to throw
IOExceptions over Binder calls.

Bug: 14975160, 15348430
Change-Id: I874457e40c45d2661bc0a526df9285ffea4bb77c
2014-07-12 21:12:25 -07:00
Jeff Sharkey
e0b0bef75b Surface detailed error messages from PMS.
We now both log detailed error messages and relay them back to any
observer.  Start refactoring PMS to throw when errors are encountered
internally to make it easier to reason about flow control; already
uncovered a few instances of errors being silently ignored!

Change-Id: Ia335c5e31bd10243d52fd735c513ca828e83dca0
2014-07-12 16:29:25 -07:00
dcashman
9726eeb2b0 Merge "Revert "Initial KeySet API."" 2014-07-11 23:25:18 +00:00
dcashman
5de7377fec Revert "Initial KeySet API."
This reverts commit 9a643fe02bc960e266484547dda5572b094a4c72.
2014-07-12 13:04:20 -07:00
dcashman
405912bce0 Initial KeySet API.
Bug: 6967056
Change-Id: I47a01bd5dc25591cc70f58f38920ad0a021094ae
2014-07-12 12:09:40 -07:00
dcashman
d2794789c8 Merge "Initial KeySet API." 2014-07-10 20:49:26 +00:00
Jeff Sharkey
bb58067035 Progress toward installer public API: callbacks.
Instead of surfacing all the existing cryptic error codes, we're
going to classify them into broad categories when surfacing through
public API.  This change introduces InstallResultCallback and
UninstallResultCallback, and wires them up to existing AIDL
interfaces.

Also start defining general SessionObserver for apps interested
in general progress details, such as Launcher apps.  Details about
active sessions are returned through new InstallSessionInfo objects.

Bug: 14975160
Change-Id: I068e2b0c30135f6340f59ae0fff93c321047f8f9
2014-07-11 16:54:49 -07:00
Craig Mautner
a228ae95ea Add task affiliation
Introduces new flag Intent.FLAG_ACTIVITY_LAUNCH_BEHIND which
causes the newly launched task to affiliate with the launching task.
(Later this flag will also launch the task behind the current task).
This shows up in a new member of the RecentTaskInfo class. This also
causes the recents list returned by getRecentsInfo to be rearranged
so that affiliated tasks are together.

Fixes bug 16157517.

Change-Id: Ia1386af50da2f01809278b62d249f05c6a0de951
2014-07-11 21:18:27 +00:00
Yuncheol Heo
a0c4a06ba3 Add the system feature for HDMI-CEC.
Change-Id: I2a985cedf49d50649c89f2ac5fbb80a81300156d
2014-07-12 11:13:48 +09:00
Kenny Guy
8219a25e31 Merge "Enforce block uninstall in PackageManager" 2014-07-10 20:16:40 +00:00
Jeff Sharkey
84f1294a95 Always derive native library paths at runtime.
Over time, we've unpacked native libraries at various places with
respect to their source APK.  Persisting this path in PackageSettings
has caused more pain recently with the switch to supporting multiArch
and cluster installs.

This change switches us to always derive the native library paths at
runtime based on the type of install.  This also ensures that
transitioning between a bundled system app and an upgraded system
app will always build the right path.

We still persist the last generated path into PackageSettings to make
cleanup at uninstall time easier.

Bug: 16208505, 16206748, 16212206
Change-Id: Ieb82a424ca4a92b5674983453c50ba4b695abfb0
2014-07-10 18:38:39 -07:00
dcashman
989eb371bf Change key-set/public-key manifest relationship.
Separate definition of public keys and keysets in the manifest to better
represent their relationship. The 'key-set' tags should have nested additional
'public-key' tags that indicate which of the defined 'public-key' tags are
associated with them.  The first use of a given 'public-key' name should define
its value; subsequent uses may refer to it only by name.  'key-set' and
'public-key' names may not intersect.

Also, change 'keys' tag to 'key-sets' to avoid issues with previous keysets
implementation.

Bug: 6967056
Change-Id: I7534e4a42326e97b67b55509187c0d3c21a2bb32
2014-07-10 18:23:11 -07:00
Kenny Guy
1b88da54a6 Enforce block uninstall in PackageManager
Bug: 14127299
Change-Id: I144233b97e5774f6a5d1d2b49f3f0f8a360557ac
2014-07-10 17:08:33 +01:00
Wei Wang
35d552f7ad Make WifiScanner System API
Change-Id: I0e2ebae998165abbb48a8cee0a3723ace2ca99e5
2014-07-10 11:29:21 -07:00
Kenny Guy
bc99305dae Merge "Remove old listeners from LauncherApps." 2014-07-09 19:47:58 +00:00
Kenny Guy
44b6dee70e Remove old listeners from LauncherApps.
Removed functions kept to support
transition from old api names to new.
Fix bug with attempting to remove from
listeners rather than callbacks list.

Bug: 15518265
Change-Id: Ief08a6bd8289608875c1cbf5af9a4389c6e9adfd
2014-07-10 18:14:42 +01:00
Narayan Kamath
ff110bd61a Multi-arch application installs.
Each application now has two ABIs, the primary
and the secondary. The app is always launched with
the primary, but the secondary might be used by other apps
that load the given applications code. This implies we
must:

- dex2oat the app both ways.
- extract shared libraries for both abis.

The former is relatively straightforward but the latter
requires us to change the layout for shared libs that we
unpack from applications. The bulk of this change deals
with the latter.

This change continues to fill in nativeLibraryPath during
scans for backwards compatibility. This will be removed in
a future patch.

Change-Id: Ia943dd11ef815c5cbfc60f17929eaa2a652a385a
2014-07-10 17:16:14 +01:00
Jeff Sharkey
30303faea6 Merge "Extend pm to support sessions and split APKs." 2014-07-09 21:45:32 +00:00
Jeff Sharkey
ec55ef0934 Extend pm to support sessions and split APKs.
Separate commands to create an install session, stream files into the
staging area, and then commit the install.  Streaming can accept data
from stdin across adb, avoiding extra copy from push.

Extend FileBridge to support blocking close().  Always destroy
session regardless of result.

Bug: 14975160
Change-Id: Ic3f462e7d1901079b785e210228950cdfa676466
2014-07-09 16:55:56 -07:00
Andres Morales
68d4acd205 Service for reading and writing blocks to PST partition
Permits apps with permission
android.permission.ACCESS_PERSISTENT_PARTITION to obtain
a read and write data blocks to the PST partition.

Only one block ever exists at one time in PST. When
a client writes another block, the previous one is
overwritten.

This permits storing a block of data that will live
across factory resets.

Change-Id: I8f23df3531f3c0512118eb4b7530eff8a8e81c83
2014-07-09 16:27:17 -07:00
Narayan Kamath
404b8578c5 Merge "Add manifest attribute for multiArch apps." 2014-07-02 19:53:18 +00:00
Narayan Kamath
589a1bc0b0 Add manifest attribute for multiArch apps.
bug: 16013931
Change-Id: Ie8b01d364eed0846deeddf11e0d6e4cc1fba3e61
2014-07-09 18:00:41 +01:00
Jeff Sharkey
d746057f24 Change new file installs to be cluster-based!
Now that all the other pieces are in place, we're ready to start
installing new file-based packages as a cluster (the new unified
directory-based layout).  This greatly simplifies the renaming
process.

Also add helper methods to ApplicationInfo to give a much clearer
mapping between it and internal field names, since we can't change
the public API.

Add recursive restorecon().

Bug: 14975160
Change-Id: I72a63c5ddbc594c2fec4a91dd59f73ef253fbfd7
2014-07-08 00:38:57 -07:00
Jeff Sharkey
5e6643c137 Merge "Clean up IPackageManager install surface area." 2014-07-08 22:56:18 +00:00
Jeff Sharkey
513a074de6 Clean up IPackageManager install surface area.
Also more removal of encryption support.

Change-Id: If525dc5a8422134515f225a8ac4731e968069468
2014-07-08 17:41:29 -07:00
Joe LaPenna
4bb015d90a CW on Master: Disable CaptivePortalTracker, EthernetService
BUG: 15143878

Change-Id: I6c534a28c1fcd475982ae70e7f3af69f3a219e24
2014-07-08 22:52:02 +00:00
Alan Viverette
8e5e11b99f Handle configuration changes in drawable attributes
Adds themeable attribute support to InsetDrawable, adds support
for attribute configuration changes to all themable drawables.

BUG: 16045735
Change-Id: I3dc62d28801760ac69d303be81b6c78bb9bb5aca
2014-07-07 22:54:22 +00:00
Jeff Sharkey
be520fba1e Teach DCS about cluster packages.
For the time being, DCS is going to still be doing heavy lifting for
some install tasks, so it need to know how to handle both monolithic
and cluster packages.  This change is mostly plumbing work to
eventually handle any various splits APKs that we may encounter.

Bug: 14975160
Change-Id: I39848d5666f9083cb4eca493e5cdaa868f3f99fb
2014-07-05 19:16:53 -07:00
Jeff Sharkey
73767b9d60 Extract native code from split APKs.
In the new split APK world, multiple APKs work together to define a
single package.  This means that native code may be split among those
APKs.  To handle this, extend NativeLibraryHelper to examine all
APKs in a package ordered by splitName.

A package has valid native code as long as one matching ABI is found
inside.  The "best" ABI found across all APKs is picked for the
entire package.  No attempt is made to ensure that every native
library defined is available for the picked ABI; that's the
responsibility of the installer.

Re-introduce PackageLite to represent a lightweight parsing of an
entire package, which may be a single monolithic APK or a cluster
of one or more APKs.

Remove native code extraction from InstallerSession, since it'll be
handled inside PMS for this release.

Bug: 14975160
Change-Id: I4f4db0f82e88a46101c7777499ebc0a11fd911f9
2014-07-04 21:00:33 -07:00
Kenny Guy
c13053bf1c Add package state to block uninstall.
Add package state to allow profile or device
owners to block uninstall of packages.
Add API to DevicePolicyManager to set/get the
state.

Bug: 14127299
Change-Id: I03528819850b42df7bafa7747bb9e4558d20c4e6
2014-07-04 11:35:17 +00:00
Marcin Kosiba
7482a8d08e Preload the WebView package into all applications.
This is a temporary workaround to allow the WebView to move into
an APK.

BUG: 11505352
Change-Id: I0c446d44c3f94f70bced7f471ae6fb74f65d5ff9
2014-07-03 12:25:14 +00:00
Jeff Sharkey
57dcf5b177 Slow progress towards APK clusters.
Differentiate between "split APKs" and "cluster packages".  A cluster
package is a directory containing zero or more APKs (base+splits),
and a monolithic package is a single APK (base).

PackageSetting will use the directory name as its codePath, so track
the baseCodePath separately.  Clarify documentation in several
places.

Require that all installers provide file:// URIs through existing
hidden APIs; PackageInstaller hasn't been able to read content://
URIs for a long time.

Bug: 14975160
Change-Id: I1c6fed1b55205c2474b09871161a98a26669d22e
2014-07-02 19:03:54 -07:00
dcashman
ca76cccb61 Merge "Initial work for key rotation." 2014-07-02 18:22:50 +00:00
dcashman
55b1078e2a Initial work for key rotation.
Introduces the upgrade-keyset tag to AndroidManifest.xml. This specifies a
KeySet by which an apk must be signed in order to update the app. Multiple
upgrade KeySets may be specified, in which case one of them must be used to
sign the updating apk.  If no upgrade-keyset is specified, the current logic
involving signatures is used.

Current Key Rotation Design Decisions:
-Apps using a shared user id may not rotate keys.
-All acceptable upgrade keysets must be specified, including the key signing
the app.  This enables key rotation in one update, but also 'locks' an app if
an incorrect upgrade keyset is specified.
-Minimal changes to existing KeySet code.

Bug: 6967056
Change-Id: Ib9bb693d4e9ea1aec375291ecdc182554890d29c
2014-07-02 12:51:28 -07:00
Santos Cordon
f90186d93e Add PhoneManager to expose functionality to phone/dialer apps.
Eventually, this will house the TelecommManager methods.

Change-Id: Id8b08d88a06a7b4e90a4a7f702ba56526e108ca5
2014-07-02 18:01:56 +00:00
Alexandra Gherghina
cb22807ffc Adds per-user APIs required by the Settings app
Bug: 15466880
Change-Id: Ic99fbf074564901b04d32b08f3a7a38555f330b3
2014-07-02 13:34:14 +01:00