91 Commits

Author SHA1 Message Date
Elliott Hughes
e16a21c6b4 resolved conflicts for merge of 4a59376d to stage-aosp-master
Change-Id: I0e40180b46dc58781c218b8d382299dab73d49cc
2013-07-09 15:25:23 -07:00
Elliott Hughes
befd0b1bdf Track libcore API change.
Change-Id: Ib818a7f21325c5f918bf497033a90d76b25ec9e7
2013-07-09 14:46:18 -07:00
Ying Wang
d685894212 Add liblog
Bug: 8580410
Change-Id: I746aa8258866508c3a725d0773faf4518096548f
2013-04-09 21:54:12 -07:00
Jeff Sharkey
63d0a06799 Improve performance of storage measurement.
When calculating directory sizes of data living on emulated external
storage, translate the path to use the internal backing data, which
avoids going through the emulation layer.  It carefully retreats to
the original path when it runs into trouble.

Testing with a hierarchy of 10 directories deep and 2 directories
and 10 files wide at each level, this change improves performance
from 5900ms before to 250ms after; over 20 times faster (!).

Bug: 8172425
Change-Id: Ia7365416f091e102bf7345a49f7d7209a22580a9
2013-03-01 16:36:52 -08:00
Dianne Hackborn
221d59f723 am afdd978c: am 68e0da7e: Merge "Quiet down a lot of logging." into jb-mr1.1-dev
* commit 'afdd978ccd8d45ac789873dd4cf0ab0dd3f46d20':
  Quiet down a lot of logging.
2012-11-29 14:25:40 -08:00
Dianne Hackborn
40e9f2922c Quiet down a lot of logging.
Also fix a little problem where the USER_STARTED broadcasts
were not being sent as ordered broadcasts(!).

Change-Id: I3aa3e0a9b3900967cdd2d115ee103371b0a50c41
2012-11-27 19:12:23 -08:00
Kenny Root
58ed5d748c am 768d9e1a: Merge "Correct executable bit for source files"
* commit '768d9e1a72ceee7d4a5f608776b87b62d6ce4a04':
  Correct executable bit for source files
2012-11-07 11:52:12 -08:00
Kenny Root
3a084af2e9 Correct executable bit for source files
Many media files and source code files were marked as executable in Git.
Remove those.

Also a shell script and python script were not marked as executable.

Change-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5
2012-11-07 10:27:31 -08:00
Kenny Root
cea3743499 Try to free cache before giving up on install
Try to get installd to free up cache before giving up when there is too
little space free.

Bug: 7232123
Change-Id: Ie3c8ca8dfc190abbb9a29a7baee31f32e9de7d69
2012-10-18 17:21:59 -07:00
Jeff Sharkey
625239a054 Migrate more Secure settings to Global.
Migrate networking, storage, battery, DropBox, and PackageManager
related Secure settings to Global table.

Bug: 7232014, 7231331, 7231198
Change-Id: I772c2a9586a2f708c9db95622477f235064b8f4d
2012-09-27 16:22:53 -07:00
Jeff Sharkey
752cd922f7 Always bind to DefaultContainerService as OWNER.
When PackageManagerService deals with external storage, always bind
to DefaultContainerService as USER_OWNER.  This avoids binding to a
stopped user, which would fail.

Bug: 7203111
Change-Id: I8e303c7558e8b5cbe4fea0acc9a472b598df0caa
2012-09-23 16:44:34 -07:00
Jeff Sharkey
dfa45309e0 Give DefaultContainerService all external storage.
Now we can bind to just one instance of DCS, instead of requiring
one-per-user. This also means we can operate on otherwise-stopped
users.

Bug: 7003520
Change-Id: I4881e064ae8942907f6a02c6b868926223455cdc
2012-09-13 01:04:15 -07:00
Dianne Hackborn
7767eac323 Keep track of whether an app is installed for each user.
This add a new per-user state for an app, indicating whether
it is installed for that user.

All system apps are always installed for all users (we still
use disable to "uninstall" them).

Now when you call into the package manager to install an app,
it will only install the app for that user unless you supply
a flag saying to install for all users.  Only being installed
for the user is just the normal install state, but all other
users have marked in their state for that app that it is not
installed.

When you call the package manager APIs for information about
apps, uninstalled apps are treated as really being not visible
(somewhat more-so than disabled apps), unless you use the
GET_UNINSTALLED_PACKAGES flag.

If another user calls to install an app that is already installed,
just not for them, then the normal install process takes place
but in addition that user's installed state is toggled on.

The package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,
PACKAGE_REPLACED etc broadcasts to users who don't have a package
installed or not being involved in a change in the install state.
There are a few things that are not quite right with this -- for
example if you go through a full install (with a new apk) of an
app for one user who doesn't have it already installed, you will
still get the PACKAGED_REPLACED messages even though this is
technically the first install for your user.  I'm not sure how
much of an issue this is.

When you call the existing API to uninstall an app, this toggles
the installed state of the app for that user to be off.  Only if
that is the last user user that has the app uinstalled will it
actually be removed from the device.  Again there is a new flag
you can pass in to force the app to be uninstalled for all users.

Also fixed issues with cleaning external storage of apps, which
was not dealing with multiple users.  We now keep track of cleaning
each user for each package.

Change-Id: I00e66452b149defc08c5e0183fa673f532465ed5
2012-08-24 13:53:13 -07:00
Dianne Hackborn
c32e190ea6 resolved conflicts for merge of a9c38461 to master
Change-Id: Ie7044c4f9f15384c3edd328fa8e2932c731d9d5c
2012-06-29 16:23:49 -07:00
Dianne Hackborn
183ce028f1 Fix issue #6761130: Clearing app data in settings does not clear app's USB storage
The package manager calls to clear data / clear cache were not also
having default container service clear the data on external storage.  Now
they do.

Change-Id: Ib5e5eb6adf2cac5a4cc094cc1a02ac8cfb6a2edf
2012-06-29 15:00:21 -07:00
Eric Fischer
d0a2845ab3 Import translations. DO NOT MERGE
Change-Id: Iad1ec06b30d1e06958ae84f36d860f9ec522135f
2012-06-21 13:15:26 -07:00
Eric Fischer
9a05cfd1e8 Import translations. DO NOT MERGE
Change-Id: Ic0044b2b8a5d2973a6fcc10f947bdf3b47c0bb6d
2012-06-20 19:58:14 -07:00
Ying Wang
c801e3ed0b Import translations. DO NOT MERGE
Change-Id: If56cf4c763d2994bfe838b5b9ebab92a585a135b
2012-06-20 12:17:27 -07:00
Amith Yamasani
b8151ecd6e Add an icon to the user information.
Store the icon in the user folder under /data/system,
similar to how the wallpaper is stored.

Change-Id: Id8ccb55b9e2ba7b4c557505a7f69f04eca1518cf
2012-06-12 18:18:29 -07:00
Eric Fischer
2ace60c1d6 Import translations. DO NOT MERGE
Change-Id: Ic32791829a4f220236aacfc5004471894db915a7
2012-05-25 13:24:26 -07:00
Kenny Root
a69b7eb1fc Change thread priority for disk measurement to bg
Change the thread priority for all disk measurement and statfs calls to
background priority.

Also move the measurement fully into the measurement task since it makes
more sense.

Bug: 6332097
Change-Id: Iafc2151313ad9b14117daf67e933dccd32f68d54
2012-05-14 15:02:19 -07:00
Kenny Root
103d53005e Use long instead of int for file offsets
Use long instead of int so we don't run into a 2GB file limit.

Fix possible overflows in offset and length.

Change-Id: Idb3a34f5600f9c2372b9c89256f21757049fa43b
2012-05-10 11:48:21 -07:00
Anonymous Coward
ceb1b0bfae Add encryption parameters to package installation
Change-Id: Ic9f8ab9f8110f08bb3c00725cfce5b8ee7b766f3
2012-05-07 16:34:49 -07:00
Kenny Root
bf023589b3 Fix some problems with ASECs
On devices that had external storage, permissions weren't set correctly
on non-forward-locked applications. Also, moving forward locked
applications didn't work since DefaultContainerService wasn't able to
read it.

Fixed some faulty unit tests as well.

Bug: 6427212
Change-Id: I5c1f0bf5278549069c78939f0708c4c43a7d4006
2012-05-02 17:09:57 -07:00
Kenny Root
6dceb88f1c Allow forward locked apps to be in ASECs
We couldn't put forward-locked apps in ASEC containers before since we
didn't have any permissioned filesystems. This adds the ability for
forward-locked applications to be in ASEC containers.

This means that forward locked applications will be able to be on the SD
card now.

This change also removes the old type of forward-locking that placed
parts of apps in /data/app-private.  Now all forward-locked applications
will be in ASEC containers.

Change-Id: I17ae0b0d65a4a965ef33c0ac2c47e990e55707ad
2012-04-25 14:17:02 -07:00
Jeff Sharkey
9cbe986a44 Expose statfs() through IMediaContainerService.
Bug: 6346248
Change-Id: I03ae02578f546fc9f19652cbdece56e2e0ab6a1c
2012-04-22 18:56:43 -07:00
Steve Block
6215d3ff4b Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
2012-01-04 20:05:49 +00:00
Eric Fischer
2fbd56a652 Import revised translations.
Change-Id: I71efb16f2c6b257dfd444728c7e56ada662e6f77
2011-11-02 09:41:15 -07:00
Eric Fischer
b0d150aa53 Import revised translations.
Change-Id: I83ab00ec220b7c0ba0d37e7f4c91e945e35aab39
2011-10-18 15:03:21 -07:00
Kenny Root
05ca4c9064 Allow non-required package verifiers
* Verifiers can be specified in the AndroidManifest.xml

* Those verifiers can respond to the new Intent action

* PackageManager API for those verifiers: verifyPendingInstall

Change-Id: I4892bce2e6984871e6e93c60a1ca0dae145f5df5
2011-09-23 16:03:03 -07:00
Dianne Hackborn
d2509fd835 Add boot mode where only "core apps" are started.
A core app is one that has coreApp="true" in its manifest tag.

The system can successfully boot (though a little painfully) with
only framework-res.apk, SettingsProvider.apk, SystemUI.apk,
DefaultContainerService.apk, and Launcher2.apk set as core apps.

Currently this boot mode is always turned off.

Change-Id: Ieaa4a8031c2c391a12996aa8d8b1d65fc2b09d6b
2011-09-12 12:29:43 -07:00
Eric Fischer
8da527d843 Import revised translations.
Change-Id: I51335fa15a40d471010dbcc96e228b170f06ce7e
2011-08-22 11:09:13 -07:00
Kenny Root
61942c579d Fix external size calculations
Unfortunately fixed internal size calculations for HC, but never the
external size calculations.

Bug: 5113898
Change-Id: Idfe8af0ba74a20aa767eb9abac431ee1c74dcf8e
2011-08-15 12:46:35 -07:00
Kenny Root
f5121a9b80 Better errors from copyResource
Copy resource would fail without a good error code when the file
couldn't be found during copy.

Also destroy the target container ID during move operations since it
might exist. If the copy failed due to it existing, it would get
destroyed anyway. This way the user has a chance to have a good outcome
the first time.

Bug: 3375299
Bug: 5113898
Change-Id: I00559833f0801bc50e7cc031b462495e37a6b4ab
2011-08-10 17:00:30 -07:00
Kenny Root
1ebd74acf9 Better error codes for missing files
Make sure that files that don't exist aren't returning bogus 'out of
space' error codes.

Add some Javadoc so I can remember what each thing does in an IDE.

Add copyright header to NativeLibraryHelper

Bug: 3375299
Change-Id: Iac46019160921daca65b21d38897e5165063316e
2011-08-03 16:03:42 -07:00
Christopher Tate
2efd2dbbac Support full-backup encryption and global backup password
If the user has supplied a backup password in Settings, that password
is validated during the full backup process and is used as an encryption
key for encoding the backed-up data itself.  This is the fundamental
mechanism whereby users can secure their data even against malicious
parties getting physical unlocked access to their device.

Technically the user-supplied password is not used as the encryption
key for the backed-up data itself.  What is actually done is that a
random key is generated to use as the raw encryption key.  THAT key,
in turn, is encrypted with the user-supplied password (after random
salting and key expansion with PBKDF2).  The encrypted master key
and a checksum are stored in the backup header.  At restore time,
the user supplies their password, which allows the system to decrypt
the master key, which in turn allows the decryption of the backup
data itself.

The checksum is part of the archive in order to permit validation
of the user-supplied password.  The checksum is the result of running
the user-supplied password through PBKDF2 with a randomly selected
salt.  At restore time, the proposed password is run through PBKDF2
with the salt described by the archive header.  If the result does
not match the archive's stated checksum, then the user has supplied
the wrong decryption password.

Also, suppress backup consideration for a few packages whose
data is either nonexistent or inapplicable across devices or
factory reset operations.

Bug 4901637

Change-Id: Id0cc9d0fdfc046602b129f273d48e23b7a14df36
2011-07-28 16:01:20 -07:00
Kenny Root
66269ea6f6 Move extract native libraries to JNI code
The built-in ZipFile class was quite a long time to find an unpack
libraries. Move everything to using the libutils ZipFileRO class that
goes quite a bit faster. Initial measurements are 6 times faster than
the Java code.

Also, read files off the disk and compare their CRC against the APK's
CRC to see if we need to write the new file to disk. This also cuts down
the bootup time by up to a second per APK that has native files.

Change-Id: Ic464a7969a17368fb6a6b81d026888c4136c7603
2011-07-26 10:14:58 -07:00
Eric Fischer
6d470b7176 Import revised translations.
Change-Id: Ie30d36d7416f687f2d84b0bdf6547cda96446f37
2011-06-20 14:40:53 -07:00
Eric Fischer
8447a13f9c Import revised translations.
Change-Id: I10a93a6f3a274354e88263d86a8855d1e7121f58
2011-05-26 15:34:01 -07:00
Kenny Root
d022c23aed Merge "Revise free space checks for package installs" 2011-03-15 14:48:56 -07:00
Kenny Root
62e1b4e9d4 Revise free space checks for package installs
Change-Id: Ie72bbab77aa89a50ec096edc1f471eab74829e67
2011-03-14 17:18:24 -07:00
Iliyan Malchev
3070af0882 frameworks/base: remove LOCAL_PRELINK_MODULE
Change-Id: I54dd62ebef47e7690afa5a858f3cad941b135481
Signed-off-by: Iliyan Malchev <malchev@google.com>
2011-03-14 14:25:59 -07:00
Kenny Root
300c13a481 Erase OBB files when removing packages
OBB files on USB storage or SD card should be removed when an
application is removed.

Bug: 3356804
Change-Id: Ifbbf043368b125fcd47fd74e5cd2e5167a8deb00
2011-01-18 13:55:42 -08:00
Kenny Root
366949c2d9 Put externalSize measurements in PackageStats
When measuring a package's usage, put the external size in the
PackageStats as well. This will allow programs using a lot of space on
the external card to be held accountable.

Bug: 3308791
Change-Id: If2df07bdbf6ffb31577074fad8f4a87ca4e89086
2011-01-16 16:21:15 -08:00
Eric Fischer
c16aea5ee8 Import revised translations.
Change-Id: Ia6a9c2838156dd6f83aea9c4809c57f663c710af
2010-12-23 14:12:01 -08:00
Kenny Root
34e48955a5 DefaultContainerService's JNI library is required
Change from LOCAL_JNI_SHARED_LIBRARIES to LOCAL_REQUIRED_MODULES to make
sure the JNI library is built and included when DefaultContainerService
is built.

Change-Id: I322c72415237c2b70bff345d50e2a9e4f2e6d988
2010-12-07 11:56:24 -08:00
Kenny Root
aa183e2c9a Add measurement API to DefaultContainerService
System applications that don't have "media_rw" access need some way to
measure the size of directories on the SD card and other internal media.
Add this API to DefaultContainerService so they can simply bind to the
service and make an RPC.

Bug: 3203974
Change-Id: I4e1bcd7a1b702b156c011ecc04f6915022cb258a
2010-12-04 08:29:23 -08:00
Eric Fischer
d09a98173b Rename Indonesian and Hebrew translations to match Locale.java conventions
Change-Id: Icf4f1896d13a4b6bf86503b16bde189f1834fdcc
2010-12-02 14:05:29 -08:00
Kenny Root
4da12f07b5 am 1de6ca69: am 938d0972: Merge "Grant ACCESS_ALL_DOWNLOADS to DefaultContainerService" into gingerbread
* commit '1de6ca69cc541ccdd651071c8bd5629af4e09664':
  Grant ACCESS_ALL_DOWNLOADS to DefaultContainerService
2010-12-01 14:23:19 -08:00
Kenny Root
1de2eac9d0 Grant ACCESS_ALL_DOWNLOADS to DefaultContainerService
Be compatible with the old DownloadProvider behavior of being able to
operate on content URIs returned from .insert()

Bug: 3242328
Change-Id: I7dad15ac0fefa867c3c8a33a579fc9899ac80262
2010-12-01 11:37:53 -08:00