• Home
  • History
  • Annotate
  • only in /frameworks/base/services/core/java/com/android/server/pm/
History log of /frameworks/base/services/core/java/com/android/server/pm/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ac9da77f6348ca5b0b6d2303f0cbffedd04ab9bc 26-Mar-2015 Christopher Tate <ctate@google.com> When scanning unbundled apps, only install the expected APK tree

We now make sure, when scanning post-factory app installs, that we do not
accidentally activate a "leaked" or otherwise superfluous APK tree that the
scan algorithm happens to encounter before the one that we expect a priori
based on the persisted package-installation state. When we find such an
extraneous installation we ignore it in favor of the expected one, similarly
to the policy used when collecting system-bundled packages that have been
updated.

Even if we find an unexpected APK for the package, if the expected one
turns out to be absent we fall back to the existing "we thought this app
was present and now it isn't" logic.

Bug 19602471

Change-Id: I141a93661946176c05d8cf52a123bdf75c8eef74
ackageManagerService.java
99abeed2bb74a15d2336ad3b75dfeb30e64d135d 09-Feb-2015 Rubin Xu <rubinxu@google.com> Perform post installation operations directly if backup manager is disabled

bug: 19312753

Change-Id: I4acdd1e3af6a6be0c51affc42de167993c736b2f
ackageManagerService.java
57792912ee8f536f90c466db701d71a9e38c54d4 27-Jan-2015 Christopher Tate <ctate@google.com> Fix 'always' preferred app assignment

In the case when some possible resolutions of a given intent are at
different priorities (typically when they're intended as fallbacks when
no "normal" handler for the intent exists) the check for "is this the
same set of possible handlers that we saw last time?" was broken. We
now ignore resolver priority entirely in that check: match set comparison
should be orthogonal to prioritization within the set, and indeed the
priority is dealt with separately in any event.

Bug 19011225

Change-Id: I3c1658442cc88b1f4a5c5f2fe9f64472799e156c
ackageManagerService.java
referredComponent.java
29cd7f19625a2a2a8528469e55f3aa495107b9e7 08-Jan-2015 Dianne Hackborn <hackbod@google.com> Fix issue #18827122: system server crashed on broadcasting...

...an intent with invalid or null package uri

Also tweak battery stats to record in the history when we shut
down, to understand when restarts are due to clean shutdowns or
crashes.

Change-Id: I6443dafc23e356be9f569906f6081152d4f92d2b
serManagerService.java
a00be9b4d521287fdf4678fb196c3e3a0053c3e4 12-Dec-2014 Brian Carlstrom <bdc@google.com> Remember failed dexopt to avoid retry

Bug: 18643977
Change-Id: Ida8d9b9ce992d97fb75bccb8c3da0d9d73a480a9
ackgroundDexOptService.java
10bef1d2f444b8ca23ee317d3bcfb586860af18b 09-Dec-2014 Jeff Sharkey <jsharkey@android.com> Consistent result when signatures don't match.

INSTALL_FAILED_UPDATE_INCOMPATIBLE is a better description of the
real underlying cause when signatures don't match.

Bug: 18413784
Change-Id: Ib81591df7d0d79f6725a4fa7300ae4e20958f004
ackageManagerService.java
281f36f5483ade3800092a42109327347d8aaff6 03-Dec-2014 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #18607384: Run fstrim after every system update" into lmp-mr1-dev
8b22252a6cd4e9c8ea9bccaf55fce1940bb63eaa 03-Dec-2014 Dianne Hackborn <hackbod@google.com> Fix issue #18607384: Run fstrim after every system update

Change-Id: I06f4c0b9e6834a8c8bd85710dfd9fa16471b6ad2
ackageManagerService.java
c4d05fc0db6c41e9d70309aa78219aa202c7cb59 02-Dec-2014 Jeff Sharkey <jsharkey@android.com> Include splits in dumpsys package output.

Describe the currently installed splits, both in normal dumpsys
output and in checkin output. Also include revisionCode of those
splits when defined (non-zero).

Bug: 18576300
Change-Id: Ie8140961fb7b9e0ed23fd6bc267157aab075dd78
ettings.java
e4a5faa61e9084333b241531ddb941684f110566 01-Dec-2014 Jeff Sharkey <jsharkey@google.com> Merge "APK still has privileged flag after being moved from "/system/priv-app"" into lmp-mr1-dev
731a5c1a29e5bdbf6e7e4bade9b80f7abe6ec37e 01-Dec-2014 Amith Yamasani <yamasani@google.com> Merge "Fix parsing bug that affects reading back guest restrictions" into lmp-mr1-dev
48e17629b0b6c89cb77342c0364a1cf3a0b2a0fb 25-Nov-2014 Akira Numata <akira.numata@sonymobile.com> APK still has privileged flag after being moved from "/system/priv-app"

When an app is moved from "/system/priv-app" to another location
during OTA update, the privileged flag should be removed.

(cherry picked from commit 76bf60ead8132b86436ebbba40eaa8f2c8bbe812)

Change-Id: I39feeac7ece89c28045d196ae69fc974b1c6510b
ackageManagerService.java
1d184acefa7105592134edebf7de4d77843d5791 27-Nov-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 7377998d to lmp-mr1-dev

Change-Id: I21870e241de7d992e97d7b91e0058f85b5a25fbe
7377998dac67ce8d486e11b9bd2f159fe0ca501d 26-Nov-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of a42f7c1d to lmp-sprout-dev

Change-Id: I8e53c9d7e0014b4ffc621c561b737aa2dae5460c
7265abe77a76f848a316640b5da106e882bdbc8a 21-Nov-2014 Christopher Tate <ctate@google.com> Be increasingly aggressive about fstrim if it isn't being run

The current heuristics depend on devices being alive at midnight+ in
order to run periodic background fstrim operations. This unfortunately
means that people who routinely turn their devices off overnight wind
up with their devices *never* running fstrim, and this causes major
performance and disk-life problems.

We now backstop this very-friendly schedule with an increasingly
aggressive one. If the device goes a defined time without a background
fstrim, we then force the fstrim at the next reboot. Once the
device hits the midnight+ idle fstrim request time, then we already
aggressively attempt to fstrim at the first available moment
thereafter, even if it's days/weeks later without a reboot.

'Available' here means charging + device idle. If the device never
becomes idle then we can't do much without rendering an in-use device
inoperable for some number of minutes -- but we have no evidence of
devices ever failing to run fstrim due to this usage pattern.

A new Settings.Global element (type 'long', called
"fstrim_mandatory_interval") is the source of the backstop time. If
this element is zero or negative, no mandatory boot-time fstrim will
ever be performed. If the element is not supplied on a given device,
the default backstop is 3 days.

Adds a new string to display in the upgrading dialog when doing
the fstrim. Note it is too late for this to be localized, but since
this operation can take a long time it is probably better to have
it show *something* even if not localized, rather than just sit there.

Bug 18486922

Change-Id: I5b265ca0a65570fb8931251aa1ac37b530635a2c
ackageManagerService.java
aebb65cb687216b9912cf98d24858ffcb3e6f50b 25-Nov-2014 Jeff Sharkey <jsharkey@android.com> package_info GID shouldn't have write.

Fix permissions on packages.list and package-usage.list to only
allow read access from the package_info GID.

Bug: 18473765
Change-Id: I9b9ef13f4a00a8355619bbcdacc836f9abfa0376
ackageManagerService.java
ettings.java
962bd4a69175077a95bc04bcdcc80ee6cb1034f8 24-Nov-2014 Jeff Sharkey <jsharkey@android.com> Ignore spammy package logs when dumping.

Bug: 18390552
Change-Id: Ie333f57d46d6ab3f4b9daa17f98b1e94a236e959
ackageManagerService.java
88d2a3c0e1b4a8c53a489db5d627beb80b1b9957 23-Nov-2014 Jeff Sharkey <jsharkey@android.com> Introduce revision codes for split APKs.

Apps delivered as multiple split APKs must have identical package
names, version code, and signatures. However, developers may want
to iterate quickly on a subset of splits without having to increment
the version code, which would require delivery of the entire app.

This change introduces "revision codes" which can vary between
split APKs belonging to the same app. An install is valid as long
as the normal version code is identical across all splits. Splits
can be added/removed to an app over time, but if a split is present
across an upgrade the revision code must not decrease.

Since system apps could have been updated with splits, only revert
to the built-in APKs if the version code is strictly greater than the
data version. Also fix bug to enable inheriting from system apps
when adding splits.

Bug: 18481866
Change-Id: I34d8e14c141a8eb95c33ffe24b4e52d6af5c8260
ackageInstallerSession.java
ackageManagerService.java
da0b16825466b9b23c24e1bc2a567afa8e690ec7 21-Nov-2014 Amith Yamasani <yamasani@google.com> Fix parsing bug that affects reading back guest restrictions

Now it remembers guest default restrictions across reboots.

Bug: 18477780
Change-Id: I3a2c0d47825c8fcfc69edf791ddd6329e23ee04b
serManagerService.java
d052a9416ae3f7e42fc1e7de0740021df385ee48 22-Nov-2014 Dianne Hackborn <hackbod@google.com> Work on issue #18486438: Reduce size of bugreport output

Reduce how much stuff ProcessStats spews, and do collapsing of
repeated intent filter targets when dumping IntentResolvers.

Also add to pm's checkout output to include shared user ids,
and fix output formatting in a few places.

Change-Id: Ic9fc6731f0439101ba9343535e66cdbbad47e291
ackageManagerService.java
ettings.java
6eb093909c5711f2482952e3d85dab66bad234c3 15-Nov-2014 Jeff Sharkey <jsharkey@android.com> Prevent user ID reuse until after reboot.

We're still seeing rare cases where a device struggles to create a
new user, probably because of a subtle bug in the FUSE daemon. To
work around this, only allow user IDs reuse after reboot.

Bug: 8302014
Change-Id: Id7f9fb539c6d6d1ff3d47d941af1d9e6b93eca03
serManagerService.java
84998e28584e44f69be06fc9fe7e77df182251eb 14-Nov-2014 Jeff Sharkey <jsharkey@android.com> Merge "Reduce spammy PackageManager critical logs." into lmp-mr1-dev
aea5c6e33d120499799474f28b4f1e475d21990b 14-Nov-2014 Jeff Sharkey <jsharkey@android.com> Reduce spammy PackageManager critical logs.

Bug: 18390552
Change-Id: I66e34e6ebf3f644f8585056b9701b7f4582d777e
ackageManagerService.java
135ae6dc3b667595b4bf2c681e1db95dc657b88f 14-Nov-2014 Craig Mautner <cmautner@google.com> am 33d92c56: Use package name as custom resolver process name

* commit '33d92c56781f6058c9e682737a06c41f3a2d2f3a':
Use package name as custom resolver process name
33d92c56781f6058c9e682737a06c41f3a2d2f3a 14-Nov-2014 Craig Mautner <cmautner@google.com> Use package name as custom resolver process name

The process name was being assigned null. This meant that after the
process attached we weren't matching the name in
ActivityStackSupervisor.attachApplicationLocked(). That meant missing
the call to realStartActivityLocked() and then the resolver didn't
start until window manager timed out and resumeTopActivity was
called five seconds later.

Fixes bug 18301267.

Change-Id: If3721caeebb309c6054150b2f707e3d6e38a74d2
ackageManagerService.java
13cf7917af00f66a2fdd0a9dbfebc680a51ced64 13-Nov-2014 Jeff Sharkey <jsharkey@android.com> Make package verifier broadcasts foreground.

We're using ordered broadcasts (sigh!) for package verification, and
we could be stuck behind dozens of other background broadcasts, so
hoist into foreground queue.

Bug: 18356768
Change-Id: Ib4abf771db0147f8fbd7227f32297602816c84ae
ackageManagerService.java
521ca5f8fba355f526e82dc3a8fc6520e4379874 12-Nov-2014 Jeff Sharkey <jsharkey@android.com> am 2e700004: am d68b87cd: Recover apps with malformed certificates.

* commit '2e7000040e3d836bb591e29515974817afc49488':
Recover apps with malformed certificates.
2e7000040e3d836bb591e29515974817afc49488 12-Nov-2014 Jeff Sharkey <jsharkey@android.com> am d68b87cd: Recover apps with malformed certificates.

* commit 'd68b87cdd402d46013170d9316a31c82be4e4816':
Recover apps with malformed certificates.
d68b87cdd402d46013170d9316a31c82be4e4816 12-Nov-2014 Jeff Sharkey <jsharkey@android.com> Recover apps with malformed certificates.

There was a window of time in Lollipop where we persisted certificates
after they had passed through a decode/encode cycle. The well-written
OpenSSL library was liberal when decoding (allowing slightly malformed
certs to be parsed), but then strict when encoding, giving us
different bytes for effectively the same certificate.

A related libcore change (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b)
now returns the original bytes verbatim, fixing both pre-Lollipop
installs and installs after that change.

This change recovers any apps that had been installed during the
window of time described above by doing a one-time check to see if
the certs are effectively equal.

Bug: 18228011
Change-Id: Ib82bd6db718d0490d7a26c9c1014b7c8457a7f2d
ackageManagerService.java
ettings.java
ccfe6bd479acc41e018bd38c4021614dc9326fbf 12-Nov-2014 Narayan Kamath <narayan@google.com> Merge "Remove unused local field." into lmp-mr1-dev
76a748e62f354c799342044f724e1f4b80121837 10-Nov-2014 Narayan Kamath <narayan@google.com> Tell installd when boot completes.

installd can then clear the ".booting" marker from the dalvik-cache
(owned by root). This marker is used to detect boot loops.

bug: 18280671

Change-Id: I878f1463c7f523892605c17b980a51ac3b6645e2
nstaller.java
fe46f4d90835671c7ddeebb6def1b7198ac41743 10-Nov-2014 Narayan Kamath <narayan@google.com> Remove unused local field.

It's a source of confusion.

bug: 18280671
Change-Id: Ibb387d76e18d71fc9e24afc72d93201a74fc03ae
ackageManagerService.java
f4d2c8eebd8113482b48e0b8f83deb4b2f1f9b22 07-Nov-2014 Brian Carlstrom <bdc@google.com> Merge "Restore mLazyDexOpt behavior for eng builds" into lmp-mr1-dev
2e594cfe9848b56ad71a6f7bc4de13df7a36511c 29-Oct-2014 Jeff Hao <jeffhao@google.com> Change boot screen title to "Android is starting" when not upgrading.

Bug: 17565501
Bug: 18247218

(cherry picked from commit 9f60c08a446e38f9e2d5271546ef69ca5941eba9)

Change-Id: I1ec32b318b6221277fc3ffbc19966bf3330c2d93
ackageManagerService.java
939d5c697fdd29ef61a3c02cc60db5da565a31b5 05-Nov-2014 Brian Carlstrom <bdc@google.com> Restore mLazyDexOpt behavior for eng builds

Bug: 17641843
Change-Id: I0869d8718712f22229bb3b9ad95cca2ddd83d3b4
ackageManagerService.java
3a1a0bbc3208d8967ed6e462c39d2527028339dc 22-Oct-2014 Nicolas Prevot <nprevot@google.com> Add a cross-profile intent filter only if it wasn't previously added.

BUG: 17996284
Change-Id: I3d087767983928dfb13af9aedb37d29c9940ba36
rossProfileIntentFilter.java
ackageManagerService.java
9710b04f35efae696c9ee6343671eff3568f5678 30-Oct-2014 Nicolas Prevot <nprevot@google.com> Merge "Schedule to write package restrictions." into lmp-mr1-dev
9f60c08a446e38f9e2d5271546ef69ca5941eba9 29-Oct-2014 Jeff Hao <jeffhao@google.com> Change boot screen title to "Android is starting" when not upgrading.

Bug: 17565501
Change-Id: Id5741e6e7a40750feee1cd7306e79f7baeec67de
ackageManagerService.java
e79553355b10815be2cd44f7b84ae39c91a12bb1 28-Oct-2014 Jeff Sharkey <jsharkey@android.com> Merge "Check upgrade certs before permissions." into lmp-mr1-dev
c28bd3532b8effccc3577f844bc9be55fbd265f3 27-Oct-2014 Jeff Sharkey <jsharkey@android.com> Check upgrade certs before permissions.

We're now checking for permission redefinition early during the
install process, which can result in a confusing error message when
the real problem is a mis-signed app. So do a quick signature
sanity check before checking permissions.

Bug: 18095637
Change-Id: I9a9b48da9c5dc7fb9bde6f3f338ea08e53b6b705
ackageManagerService.java
e67b8d28294d9af440d2ea23f1b2c68dfcba8b1b 27-Oct-2014 Jeff Sharkey <jsharkey@android.com> Merge "Reduce PackageManager RAM usage: ArrayMap/Set." into lmp-mr1-dev
ea72c08c148c602d789d0a85bf56a3eb8cadf149 22-Oct-2014 Nicolas Prevot <nprevot@google.com> Schedule to write package restrictions.

In PackageManagerService, for prefered activities,
persistent preferred activities and cross-profile intent filters:
schedule a write to package restrictions instead of writing the file directly.

Also, do not write all settings when writing package restrictions is enough.

BUG: 17996284

Change-Id: Ic732954f8a66d3aa1f0ca85a10fba290b14e68f4
ackageManagerService.java
9f837a99d48c5bb8ad7fbc133943e5bf622ce065 24-Oct-2014 Jeff Sharkey <jsharkey@android.com> Reduce PackageManager RAM usage: ArrayMap/Set.

Transition PackageManager internals away from heavier HashMap/HashSet
to use drop-in ArrayMap/ArraySet replacements. Saves ~38% RAM and
thousands of objects on a typical device.

Bug: 18115729
Change-Id: Ie107d2fee4b7baa4e3c3923231b4be877d1a5d2f
ackgroundDexOptService.java
rantedPermissions.java
ackageKeySetData.java
ackageManagerService.java
ackageSettingBase.java
ettings.java
haredUserSetting.java
7eb599b267d00cbde891c0a87924f2f5086f4497 23-Oct-2014 Jeff Hao <jeffhao@google.com> Get UsageStats if no PackageUsage is available for boot dexopt filtering.

Bug: 17191977
Change-Id: I33e18459e49afa42b8e8218574a2434e5205a6da
ackageManagerService.java
97d47ed036ff7bd3d7d2ddc1c6df1104ec237559 15-Oct-2014 Jeff Sharkey <jsharkey@android.com> Reduce PackageInstaller Binder memory pressure.

When restoring hundreds of apps on low-DPI devices, we end up sending
icon Bitmaps inline in the response instead of splitting into ashmem
regions. To avoid triggering TransactionTooLargeException, switch to
using ParceledListSlice under the hood.

Bug: 17926122
Change-Id: Ib4da6775e79d2fcb4aaea15f58ed998df203a5f9
ackageInstallerService.java
dbfbb17512fe6a5b3c7198d60b6a149969174a71 30-Sep-2014 Jeff Hao <jeffhao@google.com> Backport of ordering apps for boot dexopt.

This is a squashed commit of the following changes:

1. Order apps by priority when performing boot dexopt.
(cherry picked from commit 65cde7d42d741c7d9aa2714a397b7333f688ab55)

2. Improve priority ordering of apps when performing boot dexopt.
Added core apps and updated system apps.
(cherry picked from commit 272bf3a274daff62995caf05da338c1f2a73dae3)

3. Stop boot dexopt when low on memory.
(cherry picked from commit 1d892dcb6b0ff3a50cc63e387667dc29baf1014f)

Bug: 17641843
Change-Id: Ie32f1c21047d3462aaf728f7633fecf647ba2b47
ackageManagerService.java
f85e7af4d009862fc799c7232ec5cf9e2dc9fa34 14-Oct-2014 Dianne Hackborn <hackbod@google.com> Fix issue #10034864: Define YouTube application as the preferred...

...handler for its Intents

Fix bug when a third party app is installed as an additional but
worse match for the intent.

Also raise up the limit for when we start printing logs about
overly large strict mode data.

And turn off the logs about services being created and destroyed,
since with the way things are using services these days these have
become way too spammy.

Change-Id: I8fe301dfd80fb4b70213cb7783b7c5426245278d
ettings.java
d876a1d368c668c17aca2b9c96ff012befb49dcf 07-Oct-2014 dcashman <dcashman@google.com> Add mProperSigningKeySet to PackageKeySetData constructor.

Bug: 17847565
Change-Id: Iafa9650140e82d244d2336a07232bd40bf3c5eb8
ackageKeySetData.java
41bb3455e44dc8fde4569bbfd56fa20c6da8a27d 07-Oct-2014 Amith Yamasani <yamasani@google.com> Merge "Set the default user restrictions to disallow calling and sms" into lmp-dev
aa6634eaca707f7cbf5f5a1d75b90d8d775d254b 06-Oct-2014 Amith Yamasani <yamasani@google.com> Set the default user restrictions to disallow calling and sms

When creating a user via the UI, disallow phone calls and SMS by
default. Primary user must explicitly enable it via Settings.

Bug: 17832802
Change-Id: I18cad4be8493ddc8890b5d90da2df256cb3f1ec9
serManagerService.java
99586dc0108d0f4311c8af4d06ed113bbf40a6ee 07-Oct-2014 Jeff Sharkey <jsharkey@android.com> Merge "Reduce PackageInstaller I/O pressure." into lmp-dev
02bd78490d8594d225ecc70a74b2058cb968a657 07-Oct-2014 Jeff Sharkey <jsharkey@android.com> Reduce PackageInstaller I/O pressure.

When performing a restore during initial device setup, we could be
installing hundreds of packages. Currently, we're writing all
metadata (including heavy icons) for every session mutation! Because
we're holding the mSessions lock while writing all this heavy data,
we end up causing ANRs when apps call other PackageInstaller APIs.

This patch mitigates by moving the heavy icon data into separate
per-session PNG files, which we only persist when changed.

Bug: 17881962, 17567794
Change-Id: I4dee15d4a65a8eb65c381e6bb7477728b6cc30d2
ackageInstallerService.java
7f7d240b13b96b617e298c6178af0425308f5ef9 06-Oct-2014 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #17752399: Multiple apps broken by GET_TASKS permission change" into lmp-dev
4c88087776305f54bec0aae59b8e63bc803c1401 06-Oct-2014 Jeff Sharkey <jsharkey@android.com> Merge "Recover from missing upgrade to system package." into lmp-dev
1c133105774835deaa99db78d9668b107246abef 05-Oct-2014 Jeff Sharkey <jsharkey@android.com> Recover from missing upgrade to system package.

When a system app has been upgraded, we mark the built-in version as
disabled, and skip it when parsing built-in apps, since we expect
the userdata version to be scanned a few moments later.

However, in very rare cases we can end up missing the expected
userdata version, and we'd end up dropping the package entirely, even
though we have a built-in version to fall back to. This change
handles that case by rescanning and enabling the built-in version when
the userdata version never materializes.

Also include critical log messages in check-in dumpsys to help track
down how we ended up in this state.

Bug: 17805839
Change-Id: I9971f882f9bb8ab7934c20b04e0b72366c4d04d0
ackageManagerService.java
3438bc1bfd363e1ee656b33ebc8d0e6744470aec 05-Oct-2014 Jeff Sharkey <jsharkey@android.com> Merge "Correctly rollback failed system app installs." into lmp-dev
914bd793b3415a198d0cb4216ff9da0a184ab803 04-Oct-2014 Jeff Sharkey <jsharkey@android.com> Correctly rollback failed system app installs.

Fix bug where we disabled system app, but never turned it back on
when the scanPackageLI() failed.

Bug: 17805839
Change-Id: I73999263aee703af187afd980fa0d0ce8451cf0c
ackageManagerService.java
2d7576b082b84068fb9d68419b710b9bec49139b 04-Oct-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17752399: Multiple apps broken by GET_TASKS permission change

Keep around GET_TASKS as a permission available to apps, so apps still
think they have it and don't get all uppity because they don't.

Add a new REAL_GET_TASKS that is the actual permission now.

Plus some temporary compatibility code until everyone can transition
fromn GET_TASKS to REAL_GET_TASKS.

Change-Id: I12c1102eed24844685dcbd2fa3b612811603958f
ackageManagerService.java
900e3b5fc5bb4bf4947f63c0fed0757dfb7effa6 04-Oct-2014 Jeff Sharkey <jsharkey@android.com> Merge "More durable logging around system app upgrades." into lmp-dev
3933a5dc8c8c04458c5b8c01919d7449c6d00497 04-Oct-2014 Jeff Sharkey <jsharkey@android.com> More durable logging around system app upgrades.

We've been seeing some really funky behavior when upgrading or
downgrading system apps around OTA time. Put more of these one-time
logs into durable storage to help investigate.

Bug: 17805839
Change-Id: If898d7df229c1f71e598b0d965325c272060e5e7
ackageManagerService.java
d594197868c4a51bb8f8bd62479999debc72bf2a 01-Oct-2014 Jing Ji <a5705c@motorola.com> Allow system app to take ownership of built-in permissions

Previous commit bfed9f34c makes the preloaded system app take
precedence over third-party apps when defining permissions, but
it also makes it be able to override android built-in permissions.

Now allow preloaded system app to take the ownership of built-in
permissions instead of overriding it.

Change-Id: I10d588d0284e4316ea4be552fd6191f33e3c725b
ackageManagerService.java
8d05172112436a81bed6e4a0810f8914509d8a4d 01-Oct-2014 Dianne Hackborn <hackbod@google.com> More work on issue #17656716: Unhandled exception in Window Manager

Fix Slog.wtf to not acquire the activity manager lock in its code
path, so that it can never deadlock. This was the original intention
of it, but part was missed.

Now we can put back in the code to detect when strict mode data is
getting large (a little more targeted now to the actual problem),
and use Slog.wtf to report it. And as a bonus, when this happens
we will now clear all of the collected violations, to avoid getting
in to the bad case where IPCs start failing. So this should be
good enough for L to fix the problem, with wtf reports for us to
see if the underlying issue is still happening.

Finally, switch a butch of stuff in the system process from Log.wtf
to Slog.wtf, since many of those are deadlocks waiting to happen.

Oh and fix a crash in the settings provider I noticed in APR.

Change-Id: I307d51b7a4db238fd1e5fe2f3f9bf1b9c6f1c041
ackageInstallerService.java
ettings.java
dcf21d15456e5aca28d063aea73139e30842e6d1 01-Oct-2014 Winson Chung <winsonc@google.com> Fixing invalid check to get component enabled state. (Bug 17679693)

Change-Id: I225d59bf766122d667d990d7e5b1971c6e8af2aa
auncherAppsService.java
a39871ef5e9bf6703f18af0725484b06f5c78216 29-Sep-2014 Brian Carlstrom <bdc@google.com> Use VMRuntime.isBootClassPathOnDisk

Bug: 17679443
Change-Id: If53c236058a7237d735c2344a715cf0a36301f9b
ackageManagerService.java
a2b48057e1a15bc9e88a764cad16cda784dc4c04 26-Sep-2014 Kenny Guy <kennyguy@google.com> Merge "Uninstall for all users should check device admins." into lmp-dev
5dde6e334d06e5c2116b2169d7ad67e95238a6f0 25-Sep-2014 Kenny Guy <kennyguy@google.com> Uninstall for all users should check device admins.

Uninstall for all users should check whether package
is admin for any user not just user 0.

Bug: 17657954
Change-Id: Ia116248b5889fc02dd46816a132e03c8e62662c9
ackageManagerService.java
58817f502c3c9cfa8a4b3b04cd1cc3ca3644b1aa 24-Sep-2014 Dianne Hackborn <hackbod@google.com> Merge "Work on issue #17628623: Need to update default preferred activities for YouTube" into lmp-dev
eeb2c7e712dbae91de04ab2338c1fbccfbce7ba2 24-Sep-2014 Dianne Hackborn <hackbod@google.com> Work on issue #17628623: Need to update default preferred activities for YouTube

Improve the warning logs when setting up preferred activities
to help identify when there are issues and what they are. Also
improve the algorithm a little to still apply permissions when
resetting them and there are additional third party apps, as long
as the additional app is something like another browser and the
preferred activity being set is more specific (has a better match).

And add an example of using manifest-based preferred activities
in to ActivityTest -- and yes it DOES work! :p

Change-Id: I1ff39e03a5df6526206e0c3882085396b355d814
ettings.java
25e1ecaabbde4741663c8e5a777d9df9b939572c 23-Sep-2014 Dianne Hackborn <hackbod@google.com> Maybe fix issue #17614177 APR: system process restarting due to infinite loop

Also try to get rid of a huge wtf we are seeing across a lot of devices
where we incorrectly change real states on a service that is restarting,
and get rid of one of the noisier boot logs in the package manager.

Change-Id: I2510b6fb082eac3f6168cbd57bc3b70ad006114d
ackageManagerService.java
eae9216770f96a60dd8642ffd127ed998259cd9f 20-Sep-2014 Christopher Tate <ctate@google.com> Logspam is spam

This turns out to happen a lot in normal usage, but we're logging
copiously about it each time. It's reporting "oh hey we're already
in this state" -- and so the log is not useful anyway.

Logspam is spam.

Bug 15169507

Change-Id: Ie2d01ff1b0b3600dd9c15ccf83d60875558f1dc2
ackageManagerService.java
bfed9f34c0cf7cdf7d25e6a7677e03f5a3d87e0e 19-Sep-2014 Jeff Sharkey <jsharkey@android.com> Fix bugs when system apps reclaim permissions.

Recently we started letting system apps always take precedence over
third-party apps when defining permissions. This change fixes that
logic to claim the permission immediately, instead of delaying until
after the next reboot. (Permissions are always reevaluated after
each install.)

We also tighten the constraints slightly to prevent two system
apps from fighting over a permission definition; the first system
app to claim the permission wins.

Bug: 17526617
Change-Id: I49686407f5e99322bc511795c653c5d702becd9d
ackageManagerService.java
ace27915d2cc5073bcbe9cc151a5c61683bdcd1a 19-Sep-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17564607: Apps in the managed profile can send any intent...

...to the primary user, even if it was not whitelisted to be forwarded.

The path where getActivityInfo is called for the ResolverActivity
would not correctly apply the requested user ID to the result, so
it wouldn't run under the correct user.

Change-Id: I1da47c54bbed26091832a28236d0b06762c92437
ackageManagerService.java
1a526f582b2c97a93324b68ae11492f2e25ab571 17-Sep-2014 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #16662560: SingleTop activity is getting instantiated multiple time" into lmp-dev
7922882189a5c1cc62de7e91b067f90d9a3e2f2b 16-Sep-2014 Dianne Hackborn <hackbod@google.com> Fix issue #16662560: SingleTop activity is getting instantiated multiple time

Introduce a concept of a "root affinity" to a task -- this is the
affinity of the initial activity in the task. Use this instead of
the current affinity in findTaskLocked(), where we look for an
existing task to use for a NEW_TASK intent.

This changes the semantics of the new "relinquish task identity" mode
so that it doesn't relinquish the root affinity of the task. This
means when we are in the old style application-based recents matching
of findTaskLocked(), we will never count these tasks as the same as
the application's tasks only because they have relinquished their
identity to that application. This is probably okay, it is basically
putting a different line between new document-centric recents and
old application-centric recents when they are mixed together.

Change-Id: I73a22ead9bd08e98bf67ad035a017f828c6a6715
ackageManagerService.java
f1317857cdf815b95822db16621a566fb12baf20 16-Sep-2014 Dianne Hackborn <hackbod@google.com> Quick fix issue #17514851: dumpsys package <package-name> includes...

...irrelevant install state at the end

Quick and dirty impl just doesn't print any of that data when filtering
by package name. In the future that part of the dump should be smarter
to know how to filter by package name. (Probably also moved to a place
earlier in the dump, so the key information -- the overall package
data -- is still at the end.)

Change-Id: I094f7c2f25401438a68a6aa00d10b19c19eb7c7d
ackageManagerService.java
37ccf18b841afacba5d20e427eb9fec0065f6ecf 12-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Fix lock inversion in PackageInstaller." into lmp-dev
71ac935526d29097891664af40c54c96d6de02e6 12-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Bring install and install-multiple into parity." into lmp-dev
cbf47916b3e7a971c3a61035eb2633f96fc043cb 12-Sep-2014 Jeff Sharkey <jsharkey@android.com> Fix lock inversion in PackageInstaller.

In a small handful of cases individual sessions call up into the
installer while holding their local locks. Defend against this by
treating most InternalCallback events as async. For sealed events,
perform the upcall outside of the session lock.

Bug: 17482676
Change-Id: I265d981c98c8928a0fced09d8b029ca16eb650d9
ackageInstallerService.java
ackageInstallerSession.java
5c0ed94debe51a2954cf9409b5477cfbcc03d7f0 12-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Consistent clean up of failed installs." into lmp-dev
e980804df16c968c14a56b8853886bf5f049f46e 12-Sep-2014 Jeff Sharkey <jsharkey@android.com> Bring install and install-multiple into parity.

This ensures that both are using (almost) identical logic when
deciding what installs to proceed with. Installs from "pm" for all
users now run as OWNER, and rely solely on INSTALL_ALL_USERS to
express intent. This keeps install session notifications simple.

Since installer UID can vary from installer package name, start
persisting the UID. Also parse some missing flags for install
sessions.

Bug: 17469392
Change-Id: I6d89b1a787aa2024cc4bebf6b9c29317c358e147
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
26f9ea38a5b6030714757834b94dce737aa8d564 11-Sep-2014 Amith Yamasani <yamasani@google.com> Fix build

Import went missing between CLs

Change-Id: I8740b99dbce15b3f3508768ab3e02f551caf673d
ettings.java
f58e532e015ef31d879ee51aeeb251349784717c 11-Sep-2014 Amith Yamasani <yamasani@google.com> Merge "Apply cross-user restrictions to Shell" into lmp-dev
e107c3eb79be40f1071c4370fd9a3f9e4fd6d6de 09-Sep-2014 Adam Connors <adamconnors@google.com> Remove package level intent forwarding.

Clean up unused methods.

Bug: 17389110
Change-Id: I8a80fe3e14219f06572de05c390cdda0efcbf5db
ackageManagerService.java
ettings.java
9b2d26b68347e246e67c588b548e81fca1d29353 11-Sep-2014 Jeff Sharkey <jsharkey@android.com> Consistent clean up of failed installs.

Instead of remembering to add clean-up logic to every install scan
failure case, rely on the fact that we're now throwing for all errors
and use a finally clause to delete data directory when requested.

When clearing data for a package, always try deleting the app data
directories, even if no record of the package exists. This helps
users recover from UID mismatches without resorting to a full data
wipe.

Bug: 17005516
Change-Id: I352863ef4e468c576ecf136549e21cceae2650d5
ackageManagerService.java
8cd28b57ed732656d002d97879e15c5695b54fff 09-Jun-2014 Amith Yamasani <yamasani@google.com> Apply cross-user restrictions to Shell

Even though Shell user is allowed to perform cross-user actions,
lock that path down if the target user has restrictions imposed by
the profile owner device admin that prevents access via adb.

If the profile owner has imposed DISALLOW_DEBUGGING_FEATURES, don't
allow the shell user to make the following types of calls:
start activities, make service calls, access content providers,
send broadcasts, block/unblock packages, clear user data, etc.

Bug: 15086577
Change-Id: I9669fc165953076f786ed51cbc17d20d6fa995c3
ackageInstallerService.java
ackageManagerService.java
ettings.java
serManagerService.java
732edf098fe9728238bf3b69a3b3cfcb221edf35 10-Sep-2014 Adam Lesinski <adamlesinski@google.com> Merge changes I79ba54d7,I224fb4b6 into lmp-dev

* changes:
Make UsageStats API default on only for the system
ActivityManager shouldn't return null for getCurrentUser
ad5f44a68c70f783fb4be85f089f63bfdd63ec0c 10-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Missing manifest error should be NO_CERTIFICATES." into lmp-dev
bc09755e193c2802d2d88871ac3d1f182b260c30 09-Sep-2014 Jeff Sharkey <jsharkey@android.com> Missing manifest error should be NO_CERTIFICATES.

When META-INF/MANIFEST.MF is missing, treat as NO_CERTIFICATES
instead of CERTIFICATE_ENCODING. Also remove redundant layer of
debugging details when wrapping exceptions.

Bug: 15667982
Change-Id: I6e8216d5bf6e42da1feb70c89f991001380305be
ackageInstallerSession.java
ackageManagerException.java
ackageManagerService.java
da6e6c888f81d3bd19ff1f3cf9b081b7f9b2a013 09-Sep-2014 Amith Yamasani <yamasani@google.com> Merge "User restriction to disallow outgoing NFC beam" into lmp-dev
26af829fd70609cf073b56e54e1f78faf83a5e8b 09-Sep-2014 Amith Yamasani <yamasani@google.com> User restriction to disallow outgoing NFC beam

This can be controlled by MDMs via DPM.

Also fixes:
- javadoc for restrictions
- persisting of cross profile copy/paste restriction

Bug: 17387303
Change-Id: Ie148f56189181d2a4c6345c0823d417ab13a94a3
serManagerService.java
eddeb49a734a524347587e7654025c489fb6331e 09-Sep-2014 Adam Lesinski <adamlesinski@google.com> ActivityManager shouldn't return null for getCurrentUser

There was a race where ActivityManager would return null
for getCurrentUser() when switching between guest accounts.
This is because the Guest account was marked for deletion
while it was still active.

Bug:17290209

Change-Id: I224fb4b6836380e5acb7dbeb8f3343d74505f88a
serManagerService.java
76776943204fa5367d13948dba5b1e3de8916cd9 09-Sep-2014 Alexandra Gherghina <alexgherghina@google.com> Merge "Removing the NO_CROSS_PROFILE flag for intent forwarding" into lmp-dev
c788487ae5b28bb6f84410fcdb101f0bdfcd467e 09-Sep-2014 Alexandra Gherghina <alexgherghina@google.com> Removing the NO_CROSS_PROFILE flag for intent forwarding

Bug: 17435289
Change-Id: Iffbecd3cf9338a8633bfcc5bc47247bfc50e7546
auncherAppsService.java
ackageManagerService.java
77d218e1869e69c8d436b09cd11dcfe45e50b2cf 06-Sep-2014 Jeff Sharkey <jsharkey@android.com> Delayed ASEC allocation, refine progress handling.

For restore use-case, session creation needs to complete quickly, so
delay ASEC allocation until session is opened. When preflighting
size checks, only consider external when we have a known size for the
container. Also relax size checks when using MODE_INHERIT_EXISTING
on external, since we don't know how much of existing app will be
copied over.

Consider session as "active" while commit is ongoing, until we're
either finished or pending user interaction.

Always publish first client needle movement away from 0. Use 25% of
internal progress to reflect ASEC allocation.

Avoid CloseGuard messages about leaking PFDs.

Bug: 17405741, 17402982
Change-Id: I6247a1d335d26621549c701c4c4575a8d16ef8c2
ackageInstallerService.java
ackageInstallerSession.java
5341f94a191ae57b138f97cd516842bcf04c0609 06-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Separate active state from open/close." into lmp-dev
bc7bce38b2e4733a14f6296c75f983bd50f996d1 06-Sep-2014 Jeff Sharkey <jsharkey@android.com> Separate active state from open/close.

Also change name to setStagingProgress() to make it clearer that
system may adjust the range. Start throwing from openSession() in
preparation for ASEC allocation moving.

Bug: 17405741
Change-Id: Id7da51a32d5d89cb512ddafbd7ceaafbcd41cac6
ackageInstallerService.java
ackageInstallerSession.java
a0c9962388361522257b4ff2f55ac7cea0d559f3 06-Sep-2014 Christopher Tate <ctate@google.com> Merge "Don't crash in addPackageHoldingPermissions()..." into lmp-dev
30f349d2ef3f2220c1d478b0faff4c38eaadf12c 05-Sep-2014 Christopher Tate <ctate@google.com> Don't crash in addPackageHoldingPermissions()...

...in cases involving uninstalled apps, or apps whose install state
varies across different users.

Bug 17398315

Change-Id: I7297d82f8bf5d49c50a7fd53d795a706bf2d2313
ackageManagerService.java
2de4f9f971b0130449ab90305965963f688d1ed3 05-Sep-2014 dcashman <dcashman@google.com> Fix boolean comparison after sig check.

Bug: 17402843
Change-Id: I0cb5ffba1a93f71a250294a41040011234ce1029
ackageManagerService.java
43a2d06166f9d5aa46371c6496ec99a9fba8df00 05-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Allow badging updates to install sessions." into lmp-dev
ec9bad2015c6d3bc91bab66f0824043c1e24d013 05-Sep-2014 Jeff Sharkey <jsharkey@android.com> Allow badging updates to install sessions.

For the system restore use-case, an installer may need to enqueue
their sessions quickly before badging details, like icons, have been
downloaded. This change relaxes to allow an installer to update
their session badging after the session has been created. Notify
observers when badging changes.

Rename callback registration methods to match style guide. Relax
constraint that observers are home app. Fix bug around internal
progress reporting.

Bug: 17376797, 17389236, 17334199
Change-Id: I5fb88508baea2f08e89a1504fcf5ef972afad4a7
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
839849111c21e4936fec473ab08e21a12cd36736 05-Sep-2014 Brian Carlstrom <bdc@google.com> Merge "Fix backwards arguments to performDexOpt" into lmp-dev
d382be9b220d8f68d095cd5df56c0b900af44f9a 05-Sep-2014 Brian Carlstrom <bdc@google.com> Fix backwards arguments to performDexOpt

Bug: 16696554
Change-Id: I302f8edc8243d3537afd564599cc798708124dbe
ackgroundDexOptService.java
ackageManagerService.java
fd12f4c9e4985e75b38a8136cf6fdb0a6ce726d6 05-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Hold package cleaning until system is ready." into lmp-dev
7767df3c9c4cffab623f7e9decc99d86d443794e 05-Sep-2014 Amith Yamasani <yamasani@google.com> Merge "Fix crash if package setting is not populated yet" into lmp-dev
43789f56147f7d028a5ca1da3a3332adf7542b28 04-Sep-2014 Amith Yamasani <yamasani@google.com> Fix crash if package setting is not populated yet

Bug: 17388687
Change-Id: I441ec37396a3b725a79b933a182c63fbe52d5646
ackageManagerService.java
977c5bec526b9e763a8d40b416b1d5e4ea92274a 04-Sep-2014 dcashman <dcashman@google.com> Merge "Add upgrade KeySets check to permission pruning on install." into lmp-dev
dea8e0112286664a8a176cc9d17bee6774bc62d7 04-Sep-2014 Amith Yamasani <yamasani@google.com> Merge "Allow adb install to work even if unknown sources is disallowed" into lmp-dev
ece305d585a3b8888ec962a5daf7a13bb93ab454 04-Sep-2014 Amith Yamasani <yamasani@google.com> Allow adb install to work even if unknown sources is disallowed

adb installs should continue to work for developer usecases,
but PackageInstaller continues to be blocked for sideloading
via the UI - browser, downloads, etc.

Bug: 13760585
Change-Id: I4f8c1445448584c17e5acf77b399579c2643f333
ettings.java
ebb42e18e8a9c31c92ef4bca0b38d2447afc5558 04-Sep-2014 Brian Carlstrom <bdc@google.com> Ensure that BackgroundDexOptService can still perform dexopt

Bug: 16696554
Change-Id: Id5877618ec9620112fa31dd69016c060bb26b2a7
ackageManagerService.java
436e264e87dcbcebfd9c123685505ce547744b7f 20-Aug-2014 dcashman <dcashman@google.com> Add upgrade KeySets check to permission pruning on install.

Bug: 16564805
Change-Id: I80393eec3c6e1e861a9ec2ae27fe37027311948d
ackageManagerService.java
b541f09be309f5f314760ff832bda245e6ec9cdd 04-Sep-2014 Christopher Tate <ctate@google.com> Merge "Fix crash in KeySet dump" into lmp-dev
6441bc7e5366610771b587a8cb6ff04c2861b7a5 04-Sep-2014 Christopher Tate <ctate@google.com> Fix crash in KeySet dump

This was unfortunately DOSing some important parts of the Package
Manager's dumpsys output.

Change-Id: I228f23e8e26820b40a8d8772cd5f5b04ee8317d9
eySetManagerService.java
230561eef41047f04dac1a10949f4bcb43915017 03-Sep-2014 Brian Carlstrom <bdc@google.com> Restrict lazy dexopt to eng builds only

Bug: 16696554
Change-Id: I56bb63ce534842994a70df6b09843b4e3153c845
ackageManagerService.java
ca27d452c14f8a275cf2b7d0e59080690e0dc5c1 02-Sep-2014 Jeff Sharkey <jsharkey@android.com> Hold package cleaning until system is ready.

Package cleaning is going to check things like external storage
state and spin up external services like DCS, so hold it until after
system ready. (There are a handful of cases where we clean packages
during early boot scan.)

Bug: 17152982
Change-Id: I240b1f16679f421d0b416e576ff87713dc01276a
ackageManagerService.java
e93e6c81f2ec2588ca3a2878ac2b53776aa4845f 02-Sep-2014 Christopher Tate <ctate@google.com> Merge "Don't rewrite package restrictions unconditionally in findPreferredActivity()" into lmp-dev
1df1473008c24487701c5bc15f39ed9f9697f421 30-Aug-2014 Amith Yamasani <yamasani@google.com> Make it possible to remove current user

Due to the async nature of switching users, it's not possible to
switch and remove immediately. So mark the switch target user as
soon as the user switch is requested, so that a remove will proceed
without failing at stopUserLocked().

Also, fix a similar problem with deleting the current guest and
switching to a new guest. It was attempting to remove the current
user which will result in a failed stopping of the user.
Added a way to mark the current guest
for deletion so that a new one can be created, switched to and the
old one deleted. If runtime fails, old guest is already marked for
deletion and will be cleaned up on restart.

Bug: 17321533
Change-Id: I4be0fb956227e0bb95588b5b1f2867fb1e655c0d
serManagerService.java
d67a78db88d11a58691082ced6ab6bbc48976188 30-Aug-2014 Christopher Tate <ctate@google.com> Don't rewrite package restrictions unconditionally in findPreferredActivity()

We've been forcing a rewrite of package restrictions when doing preferred-
activity lookups in most cases, even when the lookup was not actually making
any changes to the bookkeeping. Now we only do so when something has
actually changed. Flash drives everywhere rejoice.

Bug 17334180

Change-Id: Id8f20723002b7bbcc1d82ccde55df6ef727b64ba
ackageManagerService.java
efb1f36f09cdada7c3b2677e6628492d8f256729 30-Aug-2014 dcashman <dcashman@google.com> Merge "Address KeySet API Review" into lmp-dev
dda003ffa84f986bfaba4344124eafa533f5039d 29-Aug-2014 Amith Yamasani <yamasani@google.com> Clean up apks installed for a removed user

When a user is removed, enumerate through all installed packages
to see if any of them are not installed for any user. Delete the
package if no user has it "installed".

Added a pm option to install an apk for a specific user.

Fixed a crash in UserManagerService when executing the above
cleanup - dying users generate a null UserInfo.

Bug: 15426024
Change-Id: I571decde1ae1c257d0da6db153b896aad6d6bcb4
ackageManagerService.java
serManagerService.java
e545035e0ece992941047d7676a53d090c81448d 29-Aug-2014 Alex Light <allight@google.com> Remove obsolete pruneDexCache

Bug: 16875245

(cherry picked from commit 09107db4916913912e61bfe592643b9c4c50b500)

Change-Id: I06e14c405aa4af295795982c1d236be3cb00e893
nstaller.java
ackageManagerService.java
a9bdc43ec2b8862db579aaced357184b7496468f 27-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "Recreate lib symlink after deleting app data." into lmp-dev
d1caf731e400a052bee2a7251bf0b985081227c3 27-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "Clear pending operation flag when move failed." into lmp-dev
c5212217403696f81d2db220a1d9b22872600275 27-Aug-2014 Jeff Sharkey <jsharkey@android.com> Recreate lib symlink after deleting app data.

Bug: 16739202
Change-Id: Ie8dccf67feaf6dfa474d52a3cda0862b952e6762
ackageManagerService.java
e084039dd29f63f6e56c91615bc0da6d638c6ea9 27-Aug-2014 Amith Yamasani <yamasani@google.com> Fix incorrect reading of multichoice app restrictions

Clear the list of choices values before putting new ones in.

Bug: 17299310
Change-Id: I01051d1703adcbdd7d0b5fb4ee423404f98489e8
serManagerService.java
1c9edafef8b3841e3b0017b8f6ef5f46277e8646 27-Aug-2014 Jeff Sharkey <jsharkey@android.com> Clear pending operation flag when move failed.

Bug: 17298448
Change-Id: I7a4af0f31d3909a9bfb5a2dd7d168015786024e3
ackageManagerService.java
264a5f5b34d8c1169e81da4136e263344115e02d 26-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "Treat moving app as installing in new location." into lmp-dev
d68f83cc478a8ec501d0a5a08a2a737355bee89a 26-Aug-2014 Calin Juravle <calin@google.com> Merge "Pass vmSafeMode (manifest attribute) to installd." into lmp-dev
381d94b712605112b35d7f70064b0d18bd877877 24-Aug-2014 Jeff Sharkey <jsharkey@android.com> Treat moving app as installing in new location.

Moving apps to/from SD cards has historically been neglected, meaning
it can easily break. This happened most recently for split APKs,
64-bit native code, and multiArch support.

To make this easier to maintain, treat move as a no-op upgrade,
following the inheriting code path that split APKs depends on.

Also clean up scary places where different flavors of flags were
being combined, and remove unused flags. Fix media broadcasts to be
sent based on existing app storage location.

New API to abandon install session without opening it.

Bug: 17158495
Change-Id: Ia33bf8f6fdaae099124dfe534f0e320b37bc8e16
ackageInstallerService.java
ackageManagerService.java
941a8ba1a6043cf84a7bf622e44a0b4f7abd0178 21-Aug-2014 Jeff Sharkey <jsharkey@android.com> Installing splits into ASECs!

Sessions can now zero-copy data directly into pre-allocated ASEC
containers. Then at commit time, we compute the total size of the
final app, including any inherited APKs and unpacked libraries, and
resize the container in one step.

This supports both brand new ASEC installs and inheriting from
existing ASEC installs. To keep things simple, it currently requires
copying any inherited ASEC contents, but this could be optimized in
the future.

Expose new vold resize command, and allow read-write mounting of ASEC
containers. Move native library extraction into the installer flow,
since it needs to happen before ASEC is sealed. Move multiArch flag
into NativeLibraryHelper, instead of making everyone pass it
around. Migrate size calculation to shared location.

Separate "other" package name in public API, provide a path to a
storage device when relevant, and add more docs.

Bug: 16514385
Change-Id: I06c6ce588d312ee7e64cce02733895d640b88456
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
feb193085adbdc379ee70dbb7dc6ae4c9f2971dd 21-Aug-2014 Calin Juravle <calin@google.com> Pass vmSafeMode (manifest attribute) to installd.

The flag is used to enforce --interpret-only flag when running dex2oat.

Bug: 12457423
Change-Id: Ifdafcc1afa32996577fa44c5682eeb58c79772ac
nstaller.java
ackageManagerService.java
e812d9096915ad165de125520ed7371009587d1f 21-Aug-2014 Robin Lee <rgl@google.com> Clear identity before calling out to PackageHelper

PackageHelper.resolveInstallLocation expects the binding user to be
equivalent to the calling user. If this is not the case, it may fail
and throw an exception preventing anyone but user 0 from installing
anything.

Bug: 17175251
Change-Id: Id5615738c7b4e1234a548c7b4a410282d14c9ee3
ackageInstallerService.java
bb7b7bea19223c1eba74f525c7fe87ca3911813b 20-Aug-2014 Jeff Sharkey <jsharkey@android.com> More progress towards split APKs in ASECs.

Teach DefaultContainerService to install split APKs, which will be
needed when moving to/from ASECs. Also support forward locking for
testing purposes, even though its deprecated.

Move native library unpacking code to NativeLibraryHelper location
where it can be shared by both DCS and PMS. Also update footprint
calculation logic to mirror the later unpack codepaths.

Immediately persist sealed sessions. When resolving install
locations, prefer location of any existing install of that
package. Lightweight parse requesting certificates now always
verifies that all contents are signed correctly.

Bug: 16514385
Change-Id: Ida1c4eb0f95b065104dd971e19126d4085ebf1f0
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
12450c72ebdc695d72b06ddaa8f199d5afe8d525 19-Aug-2014 Esteban Talavera <etalavera@google.com> Merge "Add cross profile intent in order after intent filter resolution" into lmp-dev
54edd1cdc45773dc5c208d9dc4f26b768d200901 18-Aug-2014 Esteban Talavera <etalavera@google.com> Add cross profile intent in order after intent filter resolution

The elements returned by queryIntentActivities must be in order, as specified in the Javadoc. Otherwise the ResolverActivity will incorrectly filter out intents if they follow another intent with lower priority than the ones that will be shown to the user.

Bug: 15906680
Change-Id: I755e05d3017ee124cbae468f51fa86cfdf42b483
ackageManagerService.java
ccc8c29af113b68a337cf4e38fae5d06531b3cf8 19-Aug-2014 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #17114392: android.com.phone crashes - PackageManager code" into lmp-dev
4a88bf99851a3db3b629df23b919f2660c492f18 19-Aug-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17114392: android.com.phone crashes - PackageManager code

Change-Id: Ib02119c6f313384a73fa7cb7b2b62dbd716fa6ca
ackageManagerService.java
f52233df74bb4a3efa1f7b9107353c841eafc933 18-Aug-2014 Nicolas Prevot <nprevot@google.com> Merge "When forwarding intents, ignoring the package set in the intent." into lmp-dev
57137289a2798b8c19f1e9f16bd3f0a71f1b916a 18-Aug-2014 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #17082301: replacePreferredActivity is ignoring userId" into lmp-dev
f2ac2761276e4972f6463d6818c9f5798bdc9a4d 16-Aug-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17082301: replacePreferredActivity is ignoring userId

It was being given the argument and just... ignoring it.

But the bulk of this change is to make replacePreferredActivity
better about replacing -- it now detects if the request will not
make a change and, in that case, just do nothing.

The reason for this?

It turns out that each time you install an app, the telephony
system is calling this function over 20 times to set the default
SMS app. This is almost always doing nothing, but before this
change it means we would re-write packages.xml over 20 times...!

There are definitely more improvements that can be made here (delaying
write of packages.xml to allow them to batch together, reducing
the amount of calls being made), but until then this is a big
improvement.

Change-Id: I02c4235b8ecd5c13ef53e65d13c7dc2223719cec
ackageManagerService.java
referredComponent.java
742e790294b3441b79f715fe447069b63c6065db 17-Aug-2014 Jeff Sharkey <jsharkey@android.com> Progress towards staging ASECs.

Move location selection logic into shared PackageHelper location,
and share it between DCS and PackageInstaller. Fix bugs related to
installed footprint calculation; always count unpacked native libs.

Have PMS do its own threshold checking, since it's fine to stat
devices. PMS only ever deleted staging ASECs, so move that logic
into installer and nuke unclaimed staging ASECs. Allocate legacy
ASEC names using PackageInstaller to make sure they don't conflict
with sessions.

Start wiring up session to allocate ASEC and pass through staged
container for installation.

Fix bug to actually delete invalid cluster-style installs.

Bug: 16514385
Change-Id: I325e0c4422fc128398c921ba45fd73ecf05fc2a9
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
3e3b251f46f6ec46a41d42eb7c36a6268096c70d 16-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "PackageInstaller API refactoring." into lmp-dev
a0907436c01fd8c545a6b5c7b28bc3bc9db59270 15-Aug-2014 Jeff Sharkey <jsharkey@android.com> PackageInstaller API refactoring.

Switch to using IntentSender for results to give installers easier
lifecycle management. Move param and info objects to inner classes.

Bug: 17008440
Change-Id: I944cfc580325ccc07acf22e0c681a5542d6abc43
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
376e4ba96222163be1f1cf409dc697550be4a285 14-Aug-2014 Nicolas Prevot <nprevot@google.com> When forwarding intents, ignoring the package set in the intent.

Apps should not be allowed to target a specific package in the target user.

BUG: 17025506

Change-Id: I81afa2f8d0a1114d91c001e357366792c63b6577
ackageManagerService.java
c6f22499f3046684d7175e10ca42cce1492cd36f 14-Aug-2014 dcashman <dcashman@google.com> Address KeySet API Review

Hide KeySet API. Change getKeySetByAlias to not require aliases from the calling
package. Make KeySet parcelable. Add hashCode method.

Bug: 16895228
Bug: 17009318
Change-Id: I75951947dfc7a3cca9f8873bda72576d11abaaf0
ackageManagerService.java
29564cd24589867f653cd22cabbaac6493cfc530 07-Aug-2014 Narayan Kamath <narayan@google.com> Remove system_server classes from the boot image.

We set the system_server classpath in the environment
(like we do with BOOTCLASSPATH). After the zygote forks
the system_server, we dexopt the classpath (if needed)
and then launch the system server with the correct
PathClassLoader. This needed several small / medium
refactorings :

- The logic for connecting to installd is now in a separate
class and belongs in the system_server.
- SystemService / SystemServiceManager have now moved to
classes.jar. They are only used from there, and since they
use Class.forName, we want them to be loaded by the
system_server classloader, and not the bootclassloader.
- BootReceiver now moves to frameworks.jar, because it is
used by ActivityThread and friends.

bug: 16555230

Change-Id: Ic84f0b2baf611eeedff6d123cb7191bb0259e600
nstaller.java
ackageManagerService.java
6c4b9de8f1fd594038793c3924b52a44138c319e 08-Aug-2014 Narayan Kamath <narayan@google.com> Validate instruction sets passed to installd.

We don't want folks passing down arbitrary strings.

bug: 16837404
Change-Id: I73ac66b376f1401f9f95f3c6323da6242ac8ed3d
nstaller.java
4903f64ba2478849e6c401f42f5a77c1d4f9f7df 11-Aug-2014 Narayan Kamath <narayan@google.com> Persist the cpuAbiOverride setting.

If an app is installed with an ABI override (adb install -r --abi)
we should remember this so that we don't revert to the scan derived
ABI on the next reboot.

bug: 16476618

Change-Id: I6085bc0099eb613dd9d3b07113c7c13859780697
ackageManagerService.java
ackageSetting.java
ackageSettingBase.java
endingPackage.java
ettings.java
20200849d1dd6ac5e52b3d18ced2d9becb5ff229 11-Aug-2014 Narayan Kamath <narayan@google.com> Fix a couple of PM warnings.

- "Could not delete native binary" : This one is a bit of
a WTF. git history tells us this code has been around for
a very long time (the warning's new though). It's a no-op
because codePath always contains the *current* codePath and
trying to remove native libs from the current codePath will
do nothing for bundled apps. This code sounds like it wants
to delete dangling native binaries for system apps that were
upgraded during an OTA. This sounds like a wrong place to do
that, though.

- "Unrecognized code path" : This one's harmless and removed
by moving this call closer to where it's used.

bug: 16823001

Change-Id: I9b40ae507b2c80ff3fdd45d5699df62bfc86514f
ackageManagerService.java
95ab7849444125387dc88088bb5197ee463d8c17 12-Aug-2014 Amith Yamasani <yamasani@google.com> Decouple user limit from guest creation

Allow Guest to be created even if there are N users.
Allow N users to be created even if there are N-1 users
and a Guest.
Limit number of guests and managed profiles that can
be added.

Added unit tests.

Bug: 15934700
Change-Id: I1a8f0fa38a91d71ef7b2980e05c974244dfc337a
serManagerService.java
7c97bbc39f0b748e413de3cd0b0f0c995a2af0ce 12-Aug-2014 Alexandra Gherghina <alexgherghina@google.com> Bugfix: adds extra null check

Bug: 16976436
Change-Id: Id51fd3125b4e68ff7c0ec37ec031fcb8ff882ed4
ackageManagerService.java
fb2c4d18613efb8197c6b6abcac262b7220b7231 10-Aug-2014 Jeff Sharkey <jsharkey@android.com> GID-based permissions are defined by "android".

This matches all other permissions defined by framework-res.apk,
instead of leaving it null.

Bug: 16907551
Change-Id: I7e2d671443d987906b2f29aa1579bef6380e8a52
ackageManagerService.java
05e8f801b54d43ae43f86a310217ec6f931b5738 08-Aug-2014 Narayan Kamath <narayan@google.com> Reduce the frequency of calls to isDexOptNeededInternal.

The package manager maintains a set of dexopted instruction
sets as a fast path to avoid calling expensive code. We were
correctly adding elements to that list while performing dexopt,
but were *not* adding elements to the list when isDexOptNeededInternal
told us things were up to date. As a result, we'd hit the slow path
100% of the time on userdebug builds in the steady state, i.e, when
the system did not dexopt anything since boot.

With this change, we make sure isDexOptNeededInternal is called
precisely once per boot in such case.

This patch also fixes broken logic for apps that have multiple
code paths. We must mark the paths as dexopted only if we've
processed all paths.

bug: 16828525
bug: 16868741
Change-Id: Icb59121fe915d892e677d9b7e9a4efd11555ae27
ackageManagerService.java
8ad7f2051d722b5a92f0ee0ab46622744b4289ef 04-Aug-2014 Calin Juravle <calin@google.com> Use native ISA for dex code (in case there's a NativeBridge)

In the presence of a native bridge it is more efficient to compile the
dex directly to the native ISA than to use the shared library ISA as a
reference.

This can be achieve by configuring the readonly system properties to map
between the .so ISA and the desired dex code .ISA (e.g.
ro.dalvik.vm.isa.ISA1=ISA2).

Bug: 16185267

(cherry picked from commit I50baa7b37e1465b9adf72d6f6b96f526a08d59c7)
(cherry picked from commit I8fe453a800812e382e8f41b5f7922997aa9c18a9)

Change-Id: I6c9684149691285310c961189b58af8c7f47aff4
ackageManagerService.java
6c0b9da65e36543bb50833d1b54ca532d0bd3aab 08-Aug-2014 Jeff Sharkey <jsharkey@android.com> Handle null IPackageDeleteObserver.

Bug: 16862614
Change-Id: I0c197a994b89d49123027f24fe46827c2b994ab6
ackageManagerService.java
f06009542390472872da986486d385001e91a2a7 08-Aug-2014 Jeff Sharkey <jsharkey@android.com> Logic to confirm uninstalls.

Prompt user for confirmation when caller doesn't have DELETE_PACKAGES
permission. Also extend uninstall events to return failure codes.

Bug: 16515814
Change-Id: I15b52190ff02dbeaaf038b92364264f64c57ba89
ackageInstallerService.java
ackageInstallerSession.java
7328a1b39b3dae1c0cd390c0a3695c6a46b8e9d8 07-Aug-2014 Jeff Sharkey <jsharkey@android.com> Logic to confirm permissions on install sessions.

When an app without INSTALL permission attempts to commit a session,
we involve user to confirm permissions. We currently point at the
base APK, which defines all permissions for an app, handling the case
where a session may only be adding splits.

Add failure codes to represent rejection. Fix bug by ignoring stages
during initial boot scan.

Bug: 16515814
Change-Id: I702bb72445216817bcc62b79c83980c1c2bb0120
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
a25dc2bbe70b7449dc57e9619778ba592c198003 05-Aug-2014 Alex Light <allight@google.com> resolved conflicts for merge of 37651b60 to lmp-dev-plus-aosp

Change-Id: I1fe0e64d2069b7424014bd3ff0bf6f80b439220d
(cherry picked from commit 1faf2d0d25550dc759481fd523456711808e8251)
nstaller.java
ackageManagerService.java
fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4c 07-Aug-2014 Jeff Sharkey <jsharkey@android.com> Surface user action events when un/installing.

This will be used shortly to connect up with permissions
confirmation UI.

Bug: 16515814
Change-Id: If28cecc28549900d960ac107a1fba0b10ce5bd7b
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
e41ce995a0c2c6b167ed64b51e34865c5d58ea4d 29-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Add hidden API for removing cross-profile package filters

Bug: 16646591
Change-Id: Iaf6837fe4390ac1018c49df366ea434776ed7244
ackageManagerService.java
f17e498fea935a389d88193dde2d236ea674d10b 06-Aug-2014 Amith Yamasani <yamasani@google.com> Merge "Allow phone UID to export singleton providers" into lmp-dev
41c1ded7f042a4cf303479550b38fa66d7a18906 05-Aug-2014 Amith Yamasani <yamasani@google.com> Allow phone UID to export singleton providers

Also add a user variant of replacePreferredActivity for use
by SmsApplication.

Map user restrictions for SMS/MMS to AppOps perms.

Bug: 16681533
Change-Id: I3dfed5fc754e33bb51c6f571851653a7c2770e46
ackageManagerService.java
f174c6e6de6ba863179401aa7b3d55d91ceed707 05-Aug-2014 Jeff Sharkey <jsharkey@android.com> Stronger constraints around install session IDs.

Generate positive, non-zero session IDs, and don't recycle them
within a given boot. Guard against ID starvation by crazy apps.

Bug: 16792837
Change-Id: I6035afe4d942d358b5ca12b4f818c55885b74aba
ackageInstallerService.java
ceb2adca4905bc1f80545792d82bed5d877ed583 01-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "Persist install sessions, more lifecycle." into lmp-dev
1cb2d0d4bba387665128c62c342e59103ea4be26 31-Jul-2014 Jeff Sharkey <jsharkey@android.com> Persist install sessions, more lifecycle.

To resume install sessions across device boots, persist session
details and read at boot. Drop sessions older than 3 days, since
they're probably buggy installers.

Add session callback lifecycle around open/close to give home apps
details about active installs. Also give them a well-known intent
to show session details.

Extend Session to list staged APKs and open them read-only, giving
installers a mechanism to verify delivered bits, for example using
MessageDigest, before committing.

Switch to generating random session IDs instead of sequential.

Defensively resize app icons if too large. Reject runaway
installers when they have too many active sessions.

Bug: 16514389
Change-Id: I66c2266cb82fc72b1eb980a615566773f4290498
ackageInstallerService.java
ackageInstallerSession.java
73140e4df9ed9cfcc897f5cd0742b81d9839d4d4 31-Jul-2014 Christopher Tate <ctate@google.com> Attempt install-time restore even for no-agent apps

Packages without their own backup agents can still have restorable
data to be delivered. Correct the logic for attempting a restore
at install time so that it no longer requires an app-defined backup
agent.

Bug 16688665

Change-Id: I7dcf7ef85ad6b5b393a2c97ce62f1b2eec9d3520
ackageManagerService.java
29762c3dfb7a510c23f021f6797840ebd80663af 29-Jul-2014 Nicolas Prevot <nprevot@google.com> Removing old tag TAG_FORWARDING_INTENT_FILTERS.

By now, all devices should have updated, so we can remove the
old tag name.

Change-Id: Id0bc0e08f3979c5a2652c4eb8da9ff938b5d5bc4
rossProfileIntentFilter.java
ettings.java
43327a61eb57839429fbb064f4166a858788779c 28-Jul-2014 Narayan Kamath <narayan@google.com> Fix regression in renderscript detection.

We must persist the selected (32 bit) ABI for legacy
renderscript apps so that we can launch them correctly.

bug: 16569287

Change-Id: I944acd0cf56ddb1f27337e01bca1b24cd369eb8f
ackageManagerService.java
3f7777fa4f1d392e18bad39edcd4539880c52ff9 24-Jul-2014 Nicolas Prevot <nprevot@google.com> Storing the app who sets a CrossProfileIntentFilter.

When we add a CrossProfileIntentFilter, we store the package and userId of the calling app
inside the CrossProfileIntentFilter.
When an app calls clearCrossProfileIntentFilters, we only remove the filters that the calling app
has set itself.

BUG: 16537557

Change-Id: I6e7bc859383ea66553d9f4230365df8ba27525f3
rossProfileIntentFilter.java
ackageManagerService.java
20e0c50f601e5930a246d4556118423a49c12ca1 25-Jul-2014 Jeff Sharkey <jsharkey@android.com> Offer force-dex-opt when running as root.

Recently we removed the PackageManager inotify triggers, meaning the
only supported ways of installing apps were:

-- adb install -r Foo.apk
-- adb shell stop && adb sync && adb shell start

Iterating on most system apps (like Settings) can use the first
approach, but it doesn't work for "persistent" processes like
SystemUI. (ActivityManager is very particular about how it deals
with persistent apps, and it always sticks with the first
ApplicationInfo found at boot.)

So to enable rapid iteration on persistent apps, we now offer the
one missing piece of forcing a dexopt with a new pm force-dex-opt
command only available to -eng or -userdebug builds. Typical use
for iterating on persistent apps now looks like this:

$ mmm frameworks/base/packages/SystemUI/ && adb sync &&
adb shell pm force-dex-opt com.android.systemui &&
adb shell kill `pid systemui`

Yay!

Change-Id: I0ae2467f1d7cda56c70ba20953cd25fa8ee766ff
ackageManagerService.java
16c8e3f49497b6046972ae650772f65768366be8 25-Jul-2014 Jeff Sharkey <jsharkey@android.com> PackageInstaller changes based on feedback.

Mostly cosmetic changes from API council feedback.

Bug: 16543552
Change-Id: Ic926829b3f77c31f50a899c59b779353daf00d59
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
466d203c4ff032477d9a6bdb077ce3cd9b4fe070 23-Jul-2014 Kenny Guy <kennyguy@google.com> Add method to launch settings app details page.

Add a method to LauncherApps to allow launchers to
show application details for an app in a managed profile.

Bug: 16371359
Change-Id: I23acb4365c09e4a7b9fa742ae6fc7e04434f45aa
auncherAppsService.java
340ca8b7e81afe891b2d76a08e406eafc63c4fc8 23-Jul-2014 Narayan Kamath <narayan@google.com> Handle apps that share a UID with the system_server correctly.

The system process does not explicitly declare any ABI, or
package any native code that it depends on but its ABI is
dictated by the zygote configuration. We need to account for
it correctly to have apps that share a UID with it work
correctly.

bug: 16317188

Change-Id: I84713c64409d7fdcc314114231e87a9263d5c5e7
ackageManagerService.java
045e648980e66a19f7021116020e733814ac8019 23-Jul-2014 Narayan Kamath <narayan@google.com> Handle renderscript apps in the system partition correctly.

Get rid of various pointless calls to setBundledAppAbisAndRoots.
This method should only need to be called during scanPackageLI.

There's no other good reason to call it.

bug: 16484595
Change-Id: I2830b140058f0fffdbedb51d673e514852854626
ackageManagerService.java
84e71d1d61c53cd947becc7879e05947be681103 23-Jul-2014 Jeff Sharkey <jsharkey@android.com> Remove APK observers.

Most app installations have migrated to the new cluster-style layout
where each app is placed in a unique directory. There are now two
general issues with these observers:

We can't know when a push/sync has finished delivering all splits
for an app. Also, inotify isn't recursive, so we'd have to manage
watches for each app directory.

Change-Id: I3770fa9059ddf80f933a3804714f2e52591fce49
ackageManagerService.java
33f5ddd1bea21296938f2cba196f95d223aa247c 22-Jul-2014 Dianne Hackborn <hackbod@google.com> Add permissions associated with app ops.

Change-Id: I575ad7a3ceea59486ca601f69760b14f6269511d
ackageManagerService.java
e5bcff624fb58b6f95be8ddff7f5b6b3bf5d19c7 20-Jul-2014 Amith Yamasani <yamasani@google.com> Rename setApplicationBlocked to setApplicationHidden

This corrects the expected behavior of the app state. Hidden apps
can be installed by the store to be brought out of hidden state.

Bug: 16191518
Change-Id: Id128ce971ceee99ba1dea14ba07ce03bd8d77335
ackageManagerService.java
ackageSettingBase.java
ettings.java
serManagerService.java
603862517569cbebed9a7bd231c3fb80292d4bcd 21-Jul-2014 Jeff Sharkey <jsharkey@android.com> Detect bundled app ABI for cluster-style layout.

Now that build system switched to cluster-style layout for bundled
apps, we need to detect primary/secondary ABI based on that layout.

Bug: 16456263
Change-Id: If6daf60ee1815bb6fde560a0c373b4f2bc8bd3a8
ackageManagerService.java
bb4d6a20bdb14903067e486b33f842fac388e338 17-Jul-2014 Amith Yamasani <yamasani@google.com> Merge "Split telephony restrictions into outgoing calls and sms" into lmp-dev
390989da1967f9d385212cd2e22a50589ce69046 17-Jul-2014 Amith Yamasani <yamasani@google.com> Split telephony restrictions into outgoing calls and sms

DISALLOW_TELEPHONY renamed to DISALLOW_OUTGOING_CALLS and introduced
DISALLOW_SMS.

Outgoing emergency calls should always be permitted.

Change-Id: I0a38ef6e2df9dcf62d16fd93622ad61f4327614f
serManagerService.java
69eef8a0d250ae1b50b510499014e109bd2c6112 17-Jul-2014 Jeff Sharkey <jsharkey@android.com> Merge "Support cluster-style installs for bundled apps." into lmp-dev
1e9189a276e967a7a74ff44a44cf627764396954 17-Jul-2014 Jeff Sharkey <jsharkey@android.com> Support cluster-style installs for bundled apps.

Bug: 16319961
Change-Id: I499b904dfd56f236a1b574c29a44272ed814be0f
ackageManagerService.java
f05b231485fdbf4deedd22aecc51d9b0a9550e47 17-Jul-2014 Kenny Guy <kennyguy@google.com> Merge "Allow app restrictions for uninstalled packages." into lmp-dev
d21b2181390fb96e3a0742be9b985a52d4de2d2c 17-Jul-2014 Kenny Guy <kennyguy@google.com> Allow app restrictions for uninstalled packages.

Stop cleaning up app restrictions for packages
that aren't installed.
Remove app restriction file if restrictions is
set to an empty or null bundle.
All user types may now have restrictions if a
profile or device owner is present.

Bug: 15565914
Change-Id: I55f38ca0ad7794b9fc2967113973dc035a416558
serManagerService.java
78fd9d6b36b78abb57bf2a29e314202bdf26f480 17-Jul-2014 Kenny Guy <kennyguy@google.com> Merge "Check for exported and category before starting activity." into lmp-dev
e702404c5a9d46765acb76f63ea6338d0a42b030 08-Jul-2014 Nicolas Prevot <nprevot@google.com> DO NOT MERGE

Remove cross-profile intent filters when removing a user.

When a user is being removed: removing cross-profile intent filters that have
this user as their source.
This makes sure that if the user id gets reassigned without restarting the phone,
we do not have old information from the preexisting profile.

Change-Id: Ie3a2aa0cbbe6c9eb9e945e650fd907e5cc012409
(cherry picked from commit d44e2d7340c70406d8b5eb8b3d6c6c0daaa8705f)
ettings.java
2df1892f411de6fa93ba487e3c4d23a079b74fcb 17-Jul-2014 Kenny Guy <kennyguy@google.com> Check for exported and category before starting activity.

Make LauncherAppService check that component passed to
startActivityAsUser is exported and has the category
Intent.CATEGORY_LAUNCHER before starting it.

Bug: 15989072
Change-Id: I29d03fae49ff0ca8d7f7524f5e71895d62ff3cae
auncherAppsService.java
9a445771f57dd15b06db0dbefd66c368d84eec2d 16-Jul-2014 Jeff Sharkey <jsharkey@android.com> Install sessions only inherit APK files.

Also track historical install sessions for debugging purposes. Hide
signature verification API for now. Clear code cache only after
killing the app being upgraded.

Bug: 14975160
Change-Id: I52fc7f11d2506f792236d8a365c8cfed21b46c30
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
2053168eb4506e2f8795afdbe9731c6451e1589c 14-Jul-2014 Narayan Kamath <narayan@google.com> Dexopt for Context.createPackageContext when code is included.

The package manager now keeps track of per ISA dex-opt state.

There are two important things to keep in mind here :

- dexopt can potentially be very slow. In cases where the target
package hasn't been dexopted yet, this can take multiple seconds
and may cause an ANR in the caller if the context is being
created from the main thread.
- We will need to remove the constraint that dexopt can only be
requested by the system (or root). Apps will implicitly be
requesting dexopt by asking for package contexts with code included.
It's important to note that unlike dalvik, the dexopt stage in ART
isn't optional. ART cannot load classes directly from dex files.

bug: 15313272
Change-Id: I0bd6c323a9c1f62f1c08f6292b7f0f7f08942726
ackgroundDexOptService.java
ackageManagerService.java
d8723bd3d68fc62134729a767ffead821add128e 16-Jul-2014 Narayan Kamath <narayan@google.com> Merge "Adjust nativeLibraryDir for package contexts of multiArch installs." into lmp-dev
7dba6eb3ac4fd6c8195cb0d0425866de50a9e114 16-Jul-2014 Narayan Kamath <narayan@google.com> Adjust nativeLibraryDir for package contexts of multiArch installs.

When we're creating a package context for a multi-arch app,
adjust the native library directory to match the bitness of
the process creating the context.

This change also removes apkRoot (which wasn't really being used)
and replaces it with a fully constructed secondary library path.
The secondary library path is a transitional measure until we
can reorganize the system image so that we can use nativeLibraryRoot
for system paths as well (nativeLibraryRootRequiresIsa will then
be true for all packages except for legacy installs).

bug: 16013931

Change-Id: I5ae090334b377b9e087aecf40075fab81b20b132
ackageManagerService.java
5fcaa0c6705ae42be8ff507b362fb8e2393a606a 16-Jul-2014 Jeff Sharkey <jsharkey@android.com> Merge "Clearing "cache" shouldn't include "code cache."" into lmp-dev
78f3cf971b33aa5788f59234fbf3b93b0d0197ec 16-Jul-2014 Jeff Sharkey <jsharkey@android.com> Clearing "cache" shouldn't include "code cache."

Bug: 16187224
Change-Id: I075b651d1ff89d4f0232497d28a6b11270cba4d9
ackageManagerService.java
4ed745d359ada6986ac15d8718452e5c55f40170 16-Jul-2014 Jeff Sharkey <jsharkey@android.com> Add code cache directory for apps.

This provides a directory where apps can cache compiled or optimized
code generated at runtime. The platform will delete all files in
this location on both app and platform upgrade.

Bug: 16187224
Change-Id: I641b21d841c436247f35ff235317e3a4ba520441
nstaller.java
ackageManagerService.java
ettings.java
78a130144bdd047665f00782c481d31edb3e5fb7 16-Jul-2014 Jeff Sharkey <jsharkey@android.com> Mark resource-only splits as hasCode=false.

PackageManagerService now skips dexopt for split APKs that don't
declare they have code. Also surface more detailed error messages
in logs.

Bug: 14975160
Change-Id: Ie6078dba724815020cee59b7fc52317e88ca097a
ackageManagerService.java
da96e137bcc8191c584ada7b5de31eaae92f244f 15-Jul-2014 Jeff Sharkey <jsharkey@android.com> Parse more split APK manifest details.

Allow split APKs to define activities, services, receivers,
providers, and metadata. However, support for many manifest items
are explicitly omitted.

Only dexopt split APKs that include code.

Bug: 14975160
Change-Id: I2fbf99e2a62328aa2185e5924755af33060282fc
ackageManagerService.java
d0a2de06a7fb4daaf91a75e9e04a2cb54ebc6fba 16-Jul-2014 Jeff Sharkey <jsharkey@android.com> Merge "Add code cache directory for apps." into lmp-dev
61e9bf246f3eacf1b11305eb86a8cb2a217adc5c 16-Jul-2014 Narayan Kamath <narayan@google.com> Fix install --abi for apps with no native code.

We will need to record the overriden ABI in the package
settings (and applicationInfo) so that we launch the app
with it.

Change-Id: Ib71aae69d006a4b0e85e7101c0e0cebf1a950997
ackageManagerService.java
377ea31c43afe02d452fe462b2b09f23e58d6347 15-Jul-2014 Narayan Kamath <narayan@google.com> Don't throw errors on sharedUid adjustment.

Given that this is "best effort" anyway, stop short of
aborting installs when ABIs can't be adjusted. Otherwise
it will be impossible to test or upgrade an APP that has
a shared UID and changes ABIs. All apps that use a given
sharedUid are expected to use the same instruction set.

Change-Id: Ia9ffd1eb2df7c6ec9a39b23fc40e58794c013749
ackageManagerService.java
f5f1828d968e427b95fe219af022434f1cdfaeb4 15-Jul-2014 Narayan Kamath <narayan@google.com> Fix multiArch installs where only some archs are available.

In this case, NO_MATCHING_ABIS shouldn't result in a failure
when we're trying to match against one of SUPPORTED_32_BIT_ABIS
or SUPPORTED_64_BIT_ABIS.

There shouldn't be a general requirement that packages must
contain both 32 and 64 bit libs because it might legitimately
exclude one or the other for reasons such as compatibility
etc.

bug: 16299358

Change-Id: I5f66b0a54b63b93b36371b584e9cf6bed07c507a
ackageManagerService.java
69ea974f1712c83a9ad194187237edf1169f9064 15-Jul-2014 Jeff Sharkey <jsharkey@android.com> Merge "Public API for PackageInstaller!" into lmp-dev
6c833e07a05c48ca60ee4d72421bf8b1e78dc710 15-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerService.java
ackageInstallerSession.java
9f92ffa9278db42655b4d422d887eed0a199886b 14-Jul-2014 dcashman <dcashman@google.com> Merge "Initial KeySet API." into lmp-dev
9d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1 09-Jun-2014 dcashman <dcashman@google.com> Initial KeySet API.

Previously submitted but reverted due to doc-compilation bug.

Bug: 6967056
Change-Id: I9bd7ef299a4c92c4b327f5b5d7e951f0753b4c8a
eySetHandle.java
eySetManagerService.java
ackageManagerService.java
ad11eb52fe62b6696df2194cb9e176f7d799e844 14-Jul-2014 Jeff Sharkey <jsharkey@android.com> Pass install result message; path selection.

Oops, forgot to include message argument to invoke the new-style
callback. Also use more robust way of generating cluster APK
directory names, and add more logging details on rename failure.

Change-Id: Ifa8abdd1db58b73e13b9a8077ec126cf20a0d90e
ackageInstallerSession.java
ackageManagerService.java
a10311434778ea1be1621c2251c0c8c2966f337b 13-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
e0b0bef75b66f0a87039c8f58c17b1596a2baebe 13-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerException.java
ackageManagerService.java
5de7377feca5242fe7127e2d4dc7792d4886d365 12-Jul-2014 dcashman <dcashman@google.com> Revert "Initial KeySet API."

This reverts commit 9a643fe02bc960e266484547dda5572b094a4c72.
eySetHandle.java
eySetManagerService.java
ackageManagerService.java
405912bce074e9e59a246e2357a108e50dffabf8 09-Jun-2014 dcashman <dcashman@google.com> Initial KeySet API.

Bug: 6967056
Change-Id: I47a01bd5dc25591cc70f58f38920ad0a021094ae
eySetHandle.java
eySetManagerService.java
ackageManagerService.java
d79fdf1c62671abac376c71aca8fa19484a1ecf2 21-Jun-2014 dcashman <dcashman@google.com> Remove KeySetManagerService lock.

The KeySetManagerService is a part of the PackageManagerService, which is
responsible for maintaining the association between packages, keysets and
public keys. This information is a critical component of the
PackageManagerService data, and should require the holding of the
PackageManagerService's lock. Remove the existing KeySetManagerService lock
and require the mPackages lock to be held instead.

Bug: 6967056
Change-Id: I803f8388e42469d30562b40212cf497320851268
eySetManagerService.java
ackageManagerService.java
bb580670350b76fa2fcc5ee873f99b7970759cbf 10-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
398b6c26c3c46724e4c44b81d9a2541720f8750b 11-Jul-2014 Narayan Kamath <narayan@google.com> Fix an abi <-> instructionSet mixup.

We should be calling is64BitInstructionSet and
not is64BitAbi.

Change-Id: I5b099af19f1d7409f65f63493d3f13a830f4fb5d
ackageManagerService.java
557b26de560a0bed3f04afd035b0a5f97f05f43c 11-Jul-2014 Narayan Kamath <narayan@google.com> Merge "Fix broken dexopt logic."
fd12a35dfc5fa30d8221ed6214f8df1f04e569ef 11-Jul-2014 Narayan Kamath <narayan@google.com> Fix broken dexopt logic.

The logic was incorrect in the presence of multiple paths
(cluster installs) or multiple instruction sets (multi arch)
because of an early return in the case of sucessful dexopt.

- Rewrite this logic to make it (hopefully) clearer.
- Fix a related bug in getAppDexInstructionSets.
- Add instruction set to the dexopt logs.

bug: 16013931
Change-Id: I18c9755583f0a6f8be70469ec2062269564f0f41
ackageManagerService.java
70fcf0c75fee68873a2f1abfe26c8afd669c51ba 11-Jul-2014 Amith Yamasani <yamasani@google.com> Fix apparent delay in removing a managed profile

Bug: 15268575

When returning the list of profiles, don't include dying users.

Change-Id: Ifeaed5c7c2b93922cddea22057dd890a1b3750fc
serManagerService.java
8219a25e31b52c701e45ebae82219c64ea18134b 11-Jul-2014 Kenny Guy <kennyguy@google.com> Merge "Enforce block uninstall in PackageManager"
ad8dff5b1343fa8246674c240d9dd95346f6f802 11-Jul-2014 Narayan Kamath <narayan@google.com> Use the correct ABI list while copying native libs.

copyNativeBinariesIfNeededLI returns an index into the list
it was handed, so using Build.SUPPORTED_ABIS here is incorrect.

bug: 16013931

Change-Id: I35e0dad4b5e0c1dc1199f381d8b99cd228719092
ackageManagerService.java
84f1294a958b42000755dc6570e3eda72ab42140 11-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageManagerService.java
ackageSettingBase.java
ettings.java
989eb371bf8f572fed1e65c6d8aeeb2548be89a7 17-Jun-2014 dcashman <dcashman@google.com> 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
eySetManagerService.java
ackageManagerService.java
41cd577c12a3525663101ff9217ded509bb869d6 11-Jul-2014 Amith Yamasani <yamasani@google.com> Send USER_FOREGROUND and USER_BACKGROUND to all related profiles

Also do a check for null applicationInfo object during user creation.

Bug: 16211029
Change-Id: Ib49c241cf3698735e273edf5704bef277f1142a5
ettings.java
1b88da54a684cf12f36b74bbc7c9548f35180fbe 10-Jul-2014 Kenny Guy <kennyguy@google.com> Enforce block uninstall in PackageManager

Bug: 14127299
Change-Id: I144233b97e5774f6a5d1d2b49f3f0f8a360557ac
ackageManagerService.java
aef5fcdcb5ff13cbdc64f18b315750b8a9a7fe3e 10-Jul-2014 Narayan Kamath <narayan@google.com> Don't assume all system apps are bundled.

Calling setBundledAppAbisAndRoots will end up
setting a path that points to /system/ if it's called
on a system app that was subsequently updated.

bug: 16208505

Change-Id: I0bf85e0341029b3d4d209a402d30c2ce357daaf2
ackageManagerService.java
ff110bd61a69f7ed8602ae14b27f7befec76b2e7 04-Jul-2014 Narayan Kamath <narayan@google.com> 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
nstaller.java
ackageManagerService.java
ackageSetting.java
ackageSettingBase.java
endingPackage.java
ettings.java
ec55ef0934b8e0d1bb705434947de817f7be57f1 08-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
dbbf07a5c7f514f2168f236e1df3b2ca70d4ab2f 09-Jul-2014 Jeff Sharkey <jsharkey@android.com> Upgraded system apps could be mono or cluster.

Derive old-style paths for monolithic installations, otherwise
assume cluster installation.

Bug: 16163776
Change-Id: I03f1a12f9c07f6177a5c09be2bfe967416c07652
ackageManagerService.java
284d0906cde8922983f35edaac79900806026d82 09-Jul-2014 Robin Lee <rgl@google.com> am 06505d23: am 1f0180bf: am 74803e55: Merge "Make misc config directory during user creation"

* commit '06505d234ddf66cb71d1f7defd096bdf68bc222d':
Make misc config directory during user creation
06505d234ddf66cb71d1f7defd096bdf68bc222d 09-Jul-2014 Robin Lee <rgl@google.com> am 1f0180bf: am 74803e55: Merge "Make misc config directory during user creation"

* commit '1f0180bfa877373b239a5675f715288db829fa75':
Make misc config directory during user creation
5e6643c1376130e402d30da647fdfebd86b7f2fc 09-Jul-2014 Jeff Sharkey <jsharkey@android.com> Merge "Clean up IPackageManager install surface area."
513a074de68a4772a9900e90f38e74ff92c15e7c 09-Jul-2014 Jeff Sharkey <jsharkey@android.com> Clean up IPackageManager install surface area.

Also more removal of encryption support.

Change-Id: If525dc5a8422134515f225a8ac4731e968069468
ackageManagerService.java
8d479b0c2ddb150182bcf510876a240cb869661b 08-Jul-2014 Jeff Sharkey <jsharkey@android.com> Derive library path for upgraded system apps.

Bug: 16156270
Change-Id: I368433063ff33d15129c8076ddc6f1e2a0963e54
ackageManagerService.java
65b1a7c0ba4213d625b1cb36d1405cf8767310d4 08-Jul-2014 Jeff Sharkey <jsharkey@android.com> Offer to scan cluster packages at boot.

Bug: 14975160
Change-Id: Ib637f68354b3d4ce4b5b23d875d8e94ccd497fd2
ackageManagerService.java
d746057f2414cba2bdc69257cc5be8cb681bb592 07-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerSession.java
ackageManagerService.java
ettings.java
4ec2023349f19b2fd2461aa3c9b208eb799a662e 09-Jul-2014 Jeff Sharkey <jsharkey@android.com> Merge "Derive library path for upgraded system apps."
9a944532af0f07d8b916556d229c21d3eda91a59 08-Jul-2014 Jason Monk <jmonk@google.com> Fix UserManagerService.setUserIcon throwing expt.

setUserIcon sends a broadcast that requires INTERACT_ACROSS_USERS.
Since the function directly checks MANAGE_USERS permission, added
a clear calling identity.

Alternative solution would be to make function check for one of
INTERACT_ACROSS_USERS permissions before performing any actions.

Change-Id: Ibbf27d4e188d059671024e4bb62f92a2daea3661
serManagerService.java
539a7ef5c93b3a4d6ad7db0d278b1aa5814c0393 07-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Removes cross profile package information when removing an user

This makes sure that if the user id gets reassigned without restarting the phone,
we do not have old information from the preexisting profile.

Also renames method which needs write locks.

Bug: 15928463
Change-Id: I30b0f85cf90d3e0c289a37bcbaec8da63499a170
ackageManagerService.java
ettings.java
3a0dbfb206dbde546fffa35902cf13101667eb79 07-Jul-2014 dcashman <dcashman@google.com> Record properSigningKeySet values to packages.xml

PackageKeySetData records all of the defined keysets which are a subset of an
apk's signing keyset. It also records the original superset for all of these
in an easy-to-access 'proper' signing-keyset which is consulted as the official
source for a package. This value was not being recorded, causing
PackageManager to re-gather the certificates for a package on each boot after
a fix for a different bug. Record it.

Bug: 16076095
Change-Id: If5a7f6d70dd4784284d7bab466dab0311aa13c28
ettings.java
b5afefbd0770a9af9e1b8a8b9d01a26e2f0338a7 04-Jul-2014 Nicolas Prevot <nprevot@google.com> Fixing bug when checking that the target user can handle the intent.

BUG: 16079965
Change-Id: Iac61d1c20f5b66b3f3016b82bc4e48d7997ea1a0
ackageManagerService.java
be520fba1e45c77ca20eb66005a0cf19e10939a1 05-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageManagerService.java
0c54798aac8a86fed24b14a66f09797d58ad0399 06-Jul-2014 Jeff Sharkey <jsharkey@android.com> Start removing ContainerEncryptionParams.

The new PackageInstallerSession APIs will allow installers to deliver
bits directly into system protected storage, so we no longer need
encrypted containers.

Change-Id: I8b598cb149b7dfd1d41e6626c1359610a573edf1
ackageManagerService.java
73767b9d607d99b3a027619b5c6b7f1a09b7673d 05-Jul-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerSession.java
ackageManagerService.java
c13053bf1c05b980421611487ce67677c08db299 29-May-2014 Kenny Guy <kennyguy@google.com> 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
ackageManagerService.java
ackageSettingBase.java
ettings.java
57dcf5b177b56195421535938544f32d8b591b42 19-Jun-2014 Jeff Sharkey <jsharkey@android.com> 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
ackageInstallerSession.java
ackageKeySetData.java
ackageManagerService.java
ackageSettingBase.java
ca76cccb61d4d914abbb5079cb65455505494e2f 02-Jul-2014 dcashman <dcashman@google.com> Merge "Initial work for key rotation."
55b1078e2a1b56daa85edfd5000a5844d3c7914b 09-Apr-2014 dcashman <dcashman@google.com> 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
eySetManager.java
eySetManagerService.java
ackageKeySetData.java
ackageManagerService.java
ettings.java
dbbc070670c1160b15b92a5928e8b9b5bf008b3f 02-Jul-2014 Narayan Kamath <narayan@google.com> am e2840977: am 6e84f8c1: Merge "Fix native crashes when APKs can\'t be opened."

* commit 'e2840977d37e4d19425d448b54895536e43a2989':
Fix native crashes when APKs can't be opened.
db32fb646d90abb5e2281bd145d9d9615c65cbed 01-Jul-2014 Nick Kralevich <nnk@google.com> am d172419e: am 9b1a7d45: Merge "Allow different SELinux policies for third party apps."

* commit 'd172419e9a36f61af8c98d316ec2625e1f1304f6':
Allow different SELinux policies for third party apps.
df0697e392c1789a49966d5091c2ee9e1003a02f 02-Jul-2014 Julia Reynolds <juliacr@google.com> Merge "Apply ENSURE_VERIFY_APPS restriction to PackageManagerService."
6728239cfe8a71d3294b9368a4af73e427a2341c 30-Jun-2014 Julia Reynolds <juliacr@google.com> Apply ENSURE_VERIFY_APPS restriction to PackageManagerService.

Bug: 15986973
Change-Id: I9e8dae15cb866a3bb16e91fc49086fe1633f0bf8
ackageManagerService.java
f29131f7013dc0d6994556b95e74db608c89beb8 02-Jul-2014 Narayan Kamath <narayan@google.com> Merge "Fix native crashes when APKs can't be opened."
cef0b39b9211882f59b6bfe1148e2cd247056693 12-Jun-2014 Narayan Kamath <narayan@google.com> Fix native crashes when APKs can't be opened.

There was lax / incomplete error checking around the
construction of Apk handles. This change changes the ApkHandle
API and makes it throw IOException if the zipfile couldn't
be opened.

Additionally :
- Fix a resource leak in DefaultContainerService
- Report errors correctly during package moves.

bug: 15563874
(cherry picked from commit ec4516470d7ce6e47769591d678c838bd3f6f388)

Change-Id: Ia35b464355467d0d36faf34fae85acbbab3f2896
ackageInstallerSession.java
ackageManagerService.java
7f7b0c759e2970178ef68805b21f06a26e24eb76 23-Jun-2014 Nicolas Prevot <nprevot@google.com> Returning badged icons for components of corporate apps.

So, corporate apps in disambiguation dialogs are badged.
And updating the way we show the icon of the personal space to this new design.

BUG: 14377051

Change-Id: Idc707773a64a8feb2d9d4df88c425d5100542636
ackageManagerService.java
1c7c319bb89b9988bfd12afc3e8d89449fd163fc 26-Jun-2014 Jason Monk <jmonk@google.com> User restriction for disallowing window creation

Block any types of windows that could by used by apps to create
views on top of a locked app. This can be used by device admins
in conjunction with lock task mode.

Added a way for system (and priv apps) to bypass user restrictions
for specified op codes.

Bug: 15279535
Change-Id: I2381530ef6226a5bb32a99bb4030baafb39bf564
serManagerService.java
3edb62a5ade9de69f55df239a55dac990f4bf5c6 01-Jul-2014 Nick Kralevich <nnk@google.com> am db32fb64: am d172419e: am 9b1a7d45: Merge "Allow different SELinux policies for third party apps."

* commit 'db32fb646d90abb5e2281bd145d9d9615c65cbed':
Allow different SELinux policies for third party apps.
be7c50e0a14e91330ce13161bc14a33d34ff6aca 30-Jun-2014 Dianne Hackborn <hackbod@google.com> Add network access blocking when in battery save mode.

The network policy manager now monitors battery save mode and,
when in battery save, uses its facility to block access to metered
networks to block access to all networks. That is, it tells the
network management service that all networks have an (infinite)
quota, and puts various app uids to be restricted under quota
interfaces as appropriate.

This new network blocking needs a new facility to be able to white
list apps, such as GmsCore. To do this, I refactored the package
manager's permission configuration stuff into a separate SystemConfig
class that can be used by others, and it now has a new tag to
specify package names that should be white-listed for power save
mode. These are retrieved by the network policy manager and used
to build a whitelist of uids.

The new general config files can now go in system/etc/config,
though currently everything still remains in the permissions dir.

Still left to be done is changing the semantics of what uids are
allowed in this mode, to include all perceptable uids. (So that we
can still do things like background music playback.) This will be
done in a follow-on CL.

Change-Id: I9bb7029f61dae62e6236da5ca60765439f8d76d2
ackageManagerService.java
e4afaa3a3d7c2885b82fe43f51bcf04e036f7462 30-Jun-2014 Amith Yamasani <yamasani@google.com> Store and retrieve default Guest settings

Save the default guest restrictions for use when a guest is created.

Bug: 15761405
Change-Id: I28db7d823944b0b47527a4909c10cc856c842a62
serManagerService.java
37271629b5bcf54858d6b4c4f5dbde6e85614d79 30-Jun-2014 Julia Reynolds <juliacr@google.com> Merge "If DISALLOW_REMOVE_USER is enabled, UserManager.removeUser should not remove users."
75175025f8d727d9841308fa0afcb9a7a1a118cd 26-Jun-2014 Julia Reynolds <juliacr@google.com> If DISALLOW_ADD_USER is enabled, do not allow users to be created.

Bug: 15910634
Change-Id: I7e14bf7d71001f218402a5d90e2aadc54fcfd875
serManagerService.java
152d5cd30bdfd88b0903b205d38c6966cbded5a8 24-Jun-2014 Narayan Kamath <narayan@google.com> am 22a32d88: am 2a0f9e6a: Merge "Explicitly list out the list of cache subdirs to prune."

* commit '22a32d883794a7a96ff5ffb4830ea59065b3ebda':
Explicitly list out the list of cache subdirs to prune.
828d11df52680ad75e045f5e4251311605d37af2 25-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Fix uninitialized variable warning

Change-Id: Ib1d4a4e1431388a839f9ef8027b439f57922b025
ackageManagerService.java
fa4533f3a07ebed479d2a0e7af7d6e03d4417d41 24-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Skip forwarding launcher intents

If we forward intents when looking up launcher icons, we end up
having an icon for a disambig activity instead of the apps for that user.

Bug: 15769854
Change-Id: Ia57525466dba57b6669b2b5cedf98f202d08f586
auncherAppsService.java
ackageManagerService.java
4ac5f85482de4f1845b21567ec510d79878552cd 23-Jun-2014 Julia Reynolds <juliacr@google.com> If DISALLOW_REMOVE_USER is enabled, UserManager.removeUser should not remove users.

Bug: 15834711
Change-Id: I8048c971401fe3216a6e92aae1c961a3aee02dde
serManagerService.java
67565a09f59db91ee0ebcdcf29b9bae0fb17ec32 24-Jun-2014 Narayan Kamath <narayan@google.com> am 152d5cd3: am 22a32d88: am 2a0f9e6a: Merge "Explicitly list out the list of cache subdirs to prune."

* commit '152d5cd30bdfd88b0903b205d38c6966cbded5a8':
Explicitly list out the list of cache subdirs to prune.
3cd9b0d5ef0b171a79b49f76794e8325198876cf 24-Jun-2014 Nicolas Prevot <nprevot@google.com> Merge "Small fix related to cross-profile intents."
9e36a8cd3e106e5a2bb0d5cce805842b61e05426 23-Jun-2014 Brian Carlstrom <bdc@google.com> am 1b98ccf2: am 0924ef65: Merge "Treat missing package usage data as a separate case"

* commit '1b98ccf275d93197c1aa746d5c492a57cd62be7f':
Treat missing package usage data as a separate case
a29e43a364dc8dbe7e97184b535fe3f5d587d7ed 23-Jun-2014 Nicolas Prevot <nprevot@google.com> Small fix related to cross-profile intents.

Change-Id: Ie489d1f83fd23190ffdc1e1abb4f0cfffebeac8d
ackageManagerService.java
aeb0ed74670e0502a04b689fe1b4fe0f537f4a91 23-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Merge "Adds cross-profile intent filters for the Settings app"
78e51f360d9d89f1fe8acf4baa76ef7854d88130 23-Jun-2014 Brian Carlstrom <bdc@google.com> am 9e36a8cd: am 1b98ccf2: am 0924ef65: Merge "Treat missing package usage data as a separate case"

* commit '9e36a8cd3e106e5a2bb0d5cce805842b61e05426':
Treat missing package usage data as a separate case
88cc346d0602e0b173b5076cd0051120682da601 14-May-2014 Nicolas Prevot <nprevot@google.com> Show the icon of the personal space.

In an intent disambiguation dialog from a managed profile,
when the intent can be forwarded to the personal space:
show the icon of the parent next to "Personal apps".
And put it at the bottom of the dialog.

Change-Id: I523222aac5dde9653e784eb26cf23cdaf018b86c
ackageManagerService.java
serManagerService.java
1b8b3aa265190e84467f740e99a0ade3a0e3cd67 20-Jun-2014 Christopher Tate <ctate@google.com> Fix BackgroundDexOptService scheduled job

1) use the right package name in the ComponentName
2) use a unique-within-package job ID

Also put the full component name in dumpsys, not just the package name

Change-Id: Icf6edabf45573ba72a1adf86b6f83baba57fc593
ackgroundDexOptService.java
6e2ae2590ded39f04f76d5ddca0f06fe01586e26 12-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Adds cross-profile intent filters for the Settings app

Bug: 15466742
Change-Id: Id9af588f2f3d51a562ef2a06fe7404c96123cc2e
ackageManagerService.java
ettings.java
e7cd37e6138c5e769cc6cb398e632bca24d2d1ab 19-Jun-2014 Nicolas Prevot <nprevot@google.com> Merge "Introducing crossProfileIntentFilters that skip the current profile."
63798c596dc757135950313eb4bb44ca58696c68 27-May-2014 Nicolas Prevot <nprevot@google.com> Introducing crossProfileIntentFilters that skip the current profile.

For these crossProfileIntentFilters, the activities in the current profile cannot
respond to the intent.
Only activities in the target profile can respond to the intent.

BUG: 14936725

Change-Id: I5e2704c2b56ff50a8339dd49284956391d7fad7e
rossProfileIntentFilter.java
ackageManagerService.java
275e085d5a42ced54bb79e40ff76c77539e7d82d 18-Jun-2014 Jeff Sharkey <jsharkey@android.com> Stronger PackageParser contract, more split work.

Require that method callers always provide relevant paths, instead of
relying on constructor. Move DisplayMetrics to be an overall parser
parameter, and move PARSE_TRUSTED_OVERLAY to flags.

Parse split APKs and apply deterministic ordering based on split
names. Assert consistent package name and version code across all
split APKs in a package, and enforce unique split names and required
base APK.

Collect certificates for split APKs, enforcing they're all signed
consistently. Better flow control and resource cleanup when
collecting certs. Refactor validation code so it's easier to reason
about. Cleaner maintenance of read buffer when draining stream
contents.

Change-Id: I8bc8c62095fbb933227b9e76ad8771f4b1246fe8
ackageInstallerSession.java
ackageManagerService.java
0270cfb71df55c1d213340bf9b678a48cc7b8e6e 20-Jun-2014 Jeff Sharkey <jsharkey@android.com> Merge "Explicitly collect manifest digests."
032f2b246bd01653c592f2b148d6a0debfe164b2 20-Jun-2014 Jeff Sharkey <jsharkey@android.com> Explicitly collect manifest digests.

Previously it was a side effect of collectCertificates().

Bug: 15740334
Change-Id: I2e044fdcc1c86ce730b9570bfbecf873366325e1
ackageManagerService.java
36fbc8d6453da438a8ab83352ff1bcfcba5f25b5 18-Jun-2014 Julia Reynolds <juliacr@google.com> Rename apps User Restriction.

Change-Id: I9f81a6b94ba06b593e7213967df51c7cb30a7b31
serManagerService.java
2c43c339de5aaf4fef58aa9b5ac3af48609263a8 13-Jun-2014 Jeff Brown <jeffbrown@google.com> Resolve boot time dependencies related to the power manager.

This change fixes a bug where native daemons may try to communicate
with the power manager before it was fully initialized due to a race
between publishing the binder service and completing init().

The solution was to simplify the dependencies related to the power
manager. It turns out that most services that were passed in
init are not actually needed until systemReady. What remained
was a dependency on the activity manager to check permissions for
incoming calls. So now we start activity manager first.
However, the activity manager also depends on power manager for
wakelocks. To break the cycle, we now defer initializing the activity
manager's wakelocks until after the power manager has been started.

Cleaned up a bunch of boot-time service dependencies so that we
can have better confidence that they are correctly maintained.

Bug: 13884219
Change-Id: If08e2d7ccd44e7026a72441bb6bd5afd7bb9fffe
ackageManagerService.java
8fb63d5a5a61ff6974f792a3ea815af193d1a7a0 18-Jun-2014 Jeff Sharkey <jsharkey@android.com> Merge "Plumb split APKs into public API."
8a4c9721a9e09d20c63381c13fa29bd9f7cbc3e3 16-Jun-2014 Jeff Sharkey <jsharkey@android.com> Plumb split APKs into public API.

Introduces new ApplicationInfo fields to surface zero or more split
APKs for an application. Splice these APKs into both the class
loader and resource system. Cleaner building of these paths.

Run dexopt() on all split APKs found after a parse, and populate
into ApplicationInfo.

Change-Id: I4a376bf4492d84ea95aafa866e106ea43a43e492
ackageManagerService.java
5b2034e2cc1cd8cb934160465364cb1eda99c208 17-Jun-2014 Christopher Tate <ctate@google.com> Merge "Switch everything to scheduled jobs"
cf1a2f73fc102be2ac7060ac97d4682bb2565ca5 17-Jun-2014 Christopher Tate <ctate@google.com> Switch everything to scheduled jobs

Everything that used the IdleMaintenance APIs/broadcasts gets to use the
spiffy new JobScheduler instead. Hooray!

On top of that, the now-obsolete "idle maintenance" APIs are now gone
entirely. Double hooray!

Bug 14993295

Change-Id: I5fb67c296ca8cd0ba8a2c8760a0f0d9d962d813b
ackgroundDexOptService.java
96f4e595ba09bf9a5a5b58882d6e4cebdcf06503 17-Jun-2014 Jeff Sharkey <jsharkey@android.com> Only movedex() when working with apps-on-SD.

Partial revert of earlier change that tried doing movedex() during
a package upgrade. Verified that the normal package upgrade path
already wipes old code as part of InstallArgs.cleanUpResourcesLI().

Change-Id: Icc5ae0d2718a0c494bfe7becf72df50c641efe1b
ackageManagerService.java
5406f59abd0cde826e8254fe628bea6d80769c8c 16-Jun-2014 Narayan Kamath <narayan@google.com> am 6a6411e3: am 076dc013: Merge "Move dex file pruning to installd."

* commit '6a6411e3d8c533a40bfe1897e2c26e3d6f3b52e0':
Move dex file pruning to installd.
c4858a2ba972e86436d629c4d3f18eb49116de14 16-Jun-2014 Jeff Sharkey <jsharkey@android.com> Switch PackageParser to reference single path.

It previously kept mPath separate from mScanPath for some very odd
edge cases around moving apps-on-SD. This changes it to always use
a single path, refactors moving to keep separate paths.

Refactors method names in PackageParser to be clearer about their
APK-versus-package relationship.

Beginnings of a split package parser. Instead of requiring that
callers check error codes when null, switch to always throwing on
parse errors, to require that callers deal with the error. Longer
term the entire parser should switch to this style, but its too
pervasive for a simple refactoring.

Change-Id: If071d8e55e46e56cc201fadfb51cb471713ae973
ackageInstallerSession.java
ackageManagerService.java
b87de28f50e9f02a365f35348f8da6cc2629bc1c 13-Jun-2014 Jeff Sharkey <jsharkey@android.com> Build usesLibraryFiles with ArraySet.

Use ArraySet instead of using odd shared variable.

Change-Id: Ide5095069ae8f2dcb4553f37e877fc1fce33ebde
ackageManagerService.java
5d140e4b1b1d43c742a7d67dd5f9d394c846945f 16-Jun-2014 Narayan Kamath <narayan@google.com> am 5406f59a: am 6a6411e3: am 076dc013: Merge "Move dex file pruning to installd."

* commit '5406f59abd0cde826e8254fe628bea6d80769c8c':
Move dex file pruning to installd.
17c9d69d7018c62d9d08ceecc6218df6704832dd 13-Jun-2014 Kenny Guy <kennyguy@google.com> Don't remove a user already being removed.

Check if UserManager is already removing
a user before starting to remove it.

Bug: 15583858
Change-Id: If9763e9b47355d9ae35cc621367c74725029aa90
serManagerService.java
db6cf3a7685b6ec3cc27a65f5015c41dc9fe8953 12-Jun-2014 Amith Yamasani <yamasani@google.com> Merge "Guest user first iteration"
1e9c21871e81642669079cd290ef47818a3165bd 12-Jun-2014 Amith Yamasani <yamasani@google.com> Guest user first iteration

Setting for controlling if guest is enabled on the device.
Setting to hint to apps that they should skip showing first use clings.

User switcher handles creation and deletion of the guest user.
Some tweaks to the user switcher to show some feedback and make the icons
circular.

Change-Id: I187dc381d2ee7c372ec6d35e14aa9ea4dfbe5936
serManagerService.java
93e9e7208e0de349a9592ac59153d6b06c202fe6 12-Jun-2014 Christopher Tate <ctate@google.com> am ba6e8ae5: Merge "Relax duplicate-permission-definition constraints slightly" into lmp-preview-dev

* commit 'ba6e8ae5d2a364799fd6bc84179e33b6731e574b':
Relax duplicate-permission-definition constraints slightly
f9fcfaae78afb0bc3e6a0716ad1d5fe3561bb81e 12-Jun-2014 Christopher Tate <ctate@google.com> Merge "Relax duplicate-permission-definition constraints slightly" into lmp-preview-dev
104e14531ca2212117540d8b6abc06ab67564ebc 12-Jun-2014 Dianne Hackborn <hackbod@google.com> am f894cad0: Merge "Some tweaks to improve document task creation." into lmp-preview-dev

* commit 'f894cad093c1a3083f4aca099babc4677977a12f':
Some tweaks to improve document task creation.
d38aed81420d7d992f65ef2efb5f69c1900fc61d 11-Jun-2014 Dianne Hackborn <hackbod@google.com> Some tweaks to improve document task creation.

- Mark the chooser activity as never launching in to a new
task, even if the caller asks for it. These are dialogs
so don't make sense as stand-alone tasks. (Maybe later
the policy should be to not launch into a new task in any
case that the activity is a dialog or even transparent at all.)

- Keep track in the task record of whether any activities in
it have been shown to the user, and use this to automatically
remove the task when all activities finish. This leans up
cases where apps are launching stub activities that get turned
in to tasks but are never seen by the user because they
immediately launch another activity in another task and
then finish.

Change-Id: I00b641c80aa96bd5071479f36ee2e4d8e3a81aeb
ackageManagerService.java
8f70744221b739f749f4e5fecff53083ef1d075a 05-Jun-2014 Adam Connors <adamconnors@google.com> DO NOT MERGE : Allow system process to call getApplicationBlockedAsUser

MDMs in the managed profile needs to be able to call
DPM.isApplicationBlocked without the INTERACT_ACROSS_USERS
permission. DevicePolicyManager checks for appropriate
PROFILE_OWNER permission and then removes callerId, so this
change is needed to prevent a spurious security exception.

Bug: 14400206
Change-Id: Idd1bda6bb234f6cb7cb78a885ae2d7cc5cca4890
(cherry picked from commit c11c67b3e117b4fec3245f87b6d510461c1f8323)
ackageManagerService.java
ac383e52a9c76dcc1a14a82848abb49b81c49f99 09-Jun-2014 Adam Connors <adamconnors@google.com> DO NOT MERGE : Api review: Make ACTION_MANAGED_PROFILE_REMOVED registered only.

And update the javadoc to explain use-case.

Bug: 15025562
Change-Id: I8eb2666c8480f873e042687223b1a1f82e7919c9
serManagerService.java
d4b584ea7f6da5c06b7ba9b1ea75428dcc5fe7b2 09-Jun-2014 Adam Connors <adamconnors@google.com> Api review: Make ACTION_MANAGED_PROFILE_REMOVED registered only.

And update the javadoc to explain use-case.

Bug: 15025562
Change-Id: I8eb2666c8480f873e042687223b1a1f82e7919c9
serManagerService.java
b8c0383b0c00ed372ab92d3d0a5095c352d3e642 06-Jun-2014 Christopher Tate <ctate@google.com> Relax duplicate-permission-definition constraints slightly

If the permission being redefined by the install-candidate package is
supplied by the system itself, ignore the redefinition but allow the
install.

Bug 14618942

Change-Id: I3d320e446587e528ae175dcd4782e607729caff7
ackageManagerService.java
1a910ef2b40de91e834a5a82d9b75d117a45da04 05-Jun-2014 Adam Connors <adamconnors@google.com> Allow system process to call getApplicationBlockedAsUser

MDMs in the managed profile needs to be able to call
DPM.isApplicationBlocked without the INTERACT_ACROSS_USERS
permission. DevicePolicyManager checks for appropriate
PROFILE_OWNER permission and then removes callerId, so this
change is needed to prevent a spurious security exception.

Change-Id: Idd1bda6bb234f6cb7cb78a885ae2d7cc5cca4890
ackageManagerService.java
c32a244e907719e03d0fae42b20401dcd2c595fc 03-Jun-2014 Narayan Kamath <narayan@google.com> am dd2e9d33: am 7cb13f8a: Merge "Scan for renderscript files before deciding ABIs."

* commit 'dd2e9d3386d2d74f99f79bcad951ff5cdefa6fab':
Scan for renderscript files before deciding ABIs.
dd2e9d3386d2d74f99f79bcad951ff5cdefa6fab 03-Jun-2014 Narayan Kamath <narayan@google.com> am 7cb13f8a: Merge "Scan for renderscript files before deciding ABIs."

* commit '7cb13f8a0a40f3d971a953b330f38bfcfb001c5e':
Scan for renderscript files before deciding ABIs.
797b109c60bda8e122075b0c2101d3f2a0b67c07 03-Jun-2014 Narayan Kamath <narayan@google.com> am 7ed98c43: Merge "Add an --abi argument to "pm install""

* commit '7ed98c43f8cbcfbb4862205a72455ab39359a011':
Add an --abi argument to "pm install"
dad8f819a710510be28e9fdeee84f9b5b2ddacbf 03-Jun-2014 Narayan Kamath <narayan@google.com> Merge "Add an --abi argument to "pm install""
116bdbd823b607d860b039ec334a1f985eed7a7f 29-May-2014 Narayan Kamath <narayan@google.com> Add an --abi argument to "pm install"

This allows callers to force an install to a particular
ABI. This is intended only for testing (and CTS) and is
not meant for usage by the installer package.

bug: 14453227

(cherry picked from commit 6431d11cd420536aaa9d93ae510a3151ccc4df1d)

Change-Id: I85d4f8785deea02a6a4d3cb0b05e6ef8bf64826b
ackageManagerService.java
dc31af2d4ffa069fe87f4b748995c2616eae5a5f 02-Jun-2014 Amith Yamasani <yamasani@google.com> Merge "Handle saving and restoring ints in application restrictions"
5b5aa4072fb58aea47f523c724878c579adae294 02-Jun-2014 Amith Yamasani <yamasani@google.com> Handle saving and restoring ints in application restrictions

Unit tests for restrictions types and proper escaping.

Change-Id: Iac35521faf5798398a89fecbad82fcdd256a4146
serManagerService.java
df7db074b5e6a19c8a33c2cc6be88f85eb5ee47c 01-Jun-2014 Amith Yamasani <yamasani@google.com> Derive LauncherAppsService from SystemService

And encapsulate the aidl interface implementation.

Change-Id: Id9a2544b411648e2596de18682079a64e95b0710
auncherAppsService.java
3cccd63e562e764dbfd8b03f383620ee2ade6441 31-May-2014 Nick Kralevich <nnk@google.com> am 532536f1: am daa0ee13: am 4f8785f2: Merge "SELinuxMMAC additions to perform policy versioning checks."

* commit '532536f145c3f295cd3ec790dd79f95c00d9d8f5':
SELinuxMMAC additions to perform policy versioning checks.
532536f145c3f295cd3ec790dd79f95c00d9d8f5 31-May-2014 Nick Kralevich <nnk@google.com> am daa0ee13: am 4f8785f2: Merge "SELinuxMMAC additions to perform policy versioning checks."

* commit 'daa0ee137d43850c834b1ead3f871ceaa49814a7':
SELinuxMMAC additions to perform policy versioning checks.
92b25a0ef8f6cf73d5c4e2209a8eac3288ecafd0 30-May-2014 Nicolas Prevot <nprevot@google.com> Merge "Cleaning CrossProfileIntentFilters on user deletion."
a422a07d29b115a6eed1eda6dba55fb8aa1f55a1 29-May-2014 Nicolas Prevot <nprevot@google.com> Merge "Small fix related to Cross-profile intents."
ad0634c50c5c4a18b5b66f2c8250e6a09bf69f1c 29-May-2014 Nicolas Prevot <nprevot@google.com> Small fix related to Cross-profile intents.

Change-Id: Id4cadd051c337776451ed807a2edac6d869b372a
ettings.java
415f354134254fbc70db48d5798e82fc87751df2 29-May-2014 Christopher Tate <ctate@google.com> am ba922631: Merge "Don\'t crash on boot" into lmp-preview-dev

* commit 'ba9226316df301fb612606f919aa69e109645c82':
Don't crash on boot
f889ed11d21bfd3010f8e4e192a0532b7f6f7994 29-May-2014 Christopher Tate <ctate@google.com> Don't crash on boot

...when removing dangling preferred-activity entries.

Bug 15310848

Change-Id: Ibe9d82a06f8c608b866a2c3c6b286da2ededacca
ackageManagerService.java
a0f48855493b7b9c3cdc93a1c8f7d18f9578ed66 27-May-2014 Nicolas Prevot <nprevot@google.com> Cleaning CrossProfileIntentFilters on user deletion.

When a user is deleted, remove all CrossProfileIntentFilters that have this user as their target.

Change-Id: I1cac3ecc0c053ee129d7f0ad13648f44737a378d
ettings.java
e282c97e21197d0fdf2c814fbe5716cb9630152e 27-May-2014 Nicolas Prevot <nprevot@google.com> Merge "Rename code related to cross-profile intents."
ee58b4f44d1c2ecd94e9b39fe74b70b28c859c1a 23-May-2014 Kenny Guy <kennyguy@google.com> Fix bug with removeUser assuming it is called from system uid.

This causes adb shell pm remove-user to fail.

Bug: 15160176
Change-Id: If1ff61dbde90f930d32affd87f935b318df813df
serManagerService.java
8194899071e0a84c95ef10614bd1b9485b48f589 16-May-2014 Nicolas Prevot <nprevot@google.com> Rename code related to cross-profile intents.

For example, replace ForwardingIntentFilter by CrossProfileIntentFilter

Bug: 15023443

Change-Id: Iee8cdf578817ef9956bcdece803a49b0d07b67f7
rossProfileIntentFilter.java
rossProfileIntentResolver.java
orwardingIntentFilter.java
orwardingIntentResolver.java
ackageManagerService.java
ettings.java
d9a6475c9c4825b2d8fc5ea09b9de54ad4f91ee3 22-May-2014 Christopher Tate <ctate@google.com> DO NOT MERGE - Don't crash uninstalling updates to system apps

Bug 15167960

Cherrypick from master

Change-Id: Ibcb3275adb27b20939a237511aaaa8b0011127e1
ackageManagerService.java
5ec9aed64cd03545eded622cca214c83c170ab22 23-May-2014 Jeff Sharkey <jsharkey@android.com> Merge "Offer to stream and fsync() install sessions."
78cc340c2de873d6995c283b777476f7237d690f 22-May-2014 Jeff Sharkey <jsharkey@android.com> Offer to stream and fsync() install sessions.

Installers are interested in both streaming APK data and establishing
a happens-after relationship to support resuming downloads after a
process kill or battery pull.

This exposes a generic OutputStream for writing, and hooks up flush()
to be a blocking call which returns only when all outstanding write()
data has been fsync()'ed to disk.

Tests to verify behavior.

Bug: 14975160
Change-Id: I38289867c80ac659163bb0c2158ef12d99cc570d
ackageInstallerSession.java
f71ece48a14e5c7da97024b0ced83da69e648a89 22-May-2014 Christopher Tate <ctate@google.com> Don't crash uninstalling updates to system apps

Bug 15167960

Change-Id: I606638292e524078f2859ba6be0a4861a4e01c00
ackageManagerService.java
a562f5daf6863640afb931db9e9ea66bea94b828 21-May-2014 narayan <narayan@google.com> am 82ec8c58: am ab3d85ab: am 838b1e22: Merge "Fix NPE in PackageManagerService."

* commit '82ec8c58b1f1cd0cce56d11b7679440f6ba54f4a':
Fix NPE in PackageManagerService.
82ec8c58b1f1cd0cce56d11b7679440f6ba54f4a 21-May-2014 narayan <narayan@google.com> am ab3d85ab: am 838b1e22: Merge "Fix NPE in PackageManagerService."

* commit 'ab3d85ab1a0ae58add5df6efc30607624475405b':
Fix NPE in PackageManagerService.
3856204c0ef3bf35e3c991fb401f30e54aefb4f0 21-May-2014 Sander Alewijnse <salewijnse@google.com> Merge "Disallow adb sideloading if UserManager flag is set for user."
1c91077bf7e13f8fe4e58cef8389d9b7a3ddb230 14-May-2014 Sander Alewijnse <salewijnse@google.com> Disallow adb sideloading if UserManager flag is set for user.

Solution is based on "redefining" the User_all.

Change-Id: Ie1ce5d6391e807f8caa05fe2a92009923d1032a8
ettings.java
1d265716954122f79d5fdd9d953a98e303d298c9 21-May-2014 Brian Carlstrom <bdc@google.com> am e77a77d0: am ec71fed0: Merge "Improve ABI handling for shared user ids."

* commit 'e77a77d081ff9d05100702f5880f356da27fd087':
Improve ABI handling for shared user ids.
96db91e0ff30c872dacc7f9a5d5a67e950e4ba26 20-May-2014 Narayan Kamath <narayan@google.com> Improve ABI handling for shared user ids.

The key improvement is that we need to keep track of
the package that's currently being scanned (this includes
new installs and upgrades of existing packages) and treat
it specially. If we didn't do that, In the case of upgrades
we would perform the shared UID calculation based on the ABI
of the old package, and not the current package.

This change also allows us to perform the CPU ABI calculation
before dexopt, which saves us from having to do it twice and
fixes a bug where we were using the wrong package path to
dexopt a package.

This also has the side effect of fixing 15081286.

bug: 15081286

(cherry-picked from commit b851c89d2252cf3d1dc504558ce1553527885316)

Change-Id: I20f8ad36941fc3df29007f0e83ce82f38f3585c8
ackageManagerService.java
9f6c25f57e26f3e2f9c744547a139d14b7d3db5c 16-May-2014 Amith Yamasani <yamasani@google.com> Per-user telephony restrictions

Allow profile owners or administrators of restricted profiles
to restrict access to telephony features such as calling and
texting for a user.

Change-Id: I89f97608c07c647ad8a7b43fef9d1e6bc4a84e95
serManagerService.java
d4e6d467cd61d6bec1ae25744a415a96f0a0f760 17-May-2014 Dianne Hackborn <hackbod@google.com> Delay the dispatching of non-wakeup alarms.

When the screen is off, there are no guarantees about when
non-wakeup alarms will be dispatched. Historically they are
dispatched any time the device wakes up. With this change,
we will delay the dispatch until sometime later.

The amount of delay is determined by how long the screen has
been off. Currently there are three possible delays: up to
2 minutes if the screen has been off for less than 5 minutes;
up to 15 minutes if it has been off for less than 30 minutes;
and otherwise up to an hour.

When the screen is turned on or a wakeup alarm is dispatched,
all delayed alarms will also be dispatched.

Note that one of the things this delays is TIME_TICK, which
means the in many cases we won't deliver TIME_TICK until the
screen is in the process of waking up. The current
implementation causes this to be delayed until the SCREEN_ON
broadcast is sent; we probably want to improve this to have
the power manager tell the alarm manager about the screen
turning on before it sends that broadcast, to help make sure
things like the lock screen can update their current time
before the screen is actually turned on.

In addition, switch all of the alarm stats to use the new
PendingIntent "tag" identifier for its operations, instead
of the old code to try to construct a pseudo-identifier
by retrieving the raw Intent.

Also add a new package manager command to immediately write
packages.xml.

Change-Id: Id4b14757cccff9cb2c6b36de994de38163abf615
ackageManagerService.java
f584f014dbb281727fccfea10bc9c2539a752f17 20-May-2014 Amith Yamasani <yamasani@google.com> Allow adding a user while still removing other users

When at the user limit, removing and adding a user causes a race
condition where the deleted user is still being removed and adding
another one fails.

This change excludes deleted users from the counting to compare
against the limit.

Also fix an ArrayIndexOutOfBounds recently introduced in AppOpsService.

Bug: 13282768
Change-Id: Ib79659e7604396583a280dbbc560b288a6d9051c
serManagerService.java
f6edb97b62a89789f7eea5ca4b31f697333c88cc 19-May-2014 Narayan Kamath <narayan@google.com> am 9672ee12: am deda5467: am a4fd1baa: Merge "Fail if we\'re unable to agree on an ISA for shared UIDs."

* commit '9672ee125d6aee73bf1e5425c4089285714f25bf':
Fail if we're unable to agree on an ISA for shared UIDs.
9672ee125d6aee73bf1e5425c4089285714f25bf 19-May-2014 Narayan Kamath <narayan@google.com> am deda5467: am a4fd1baa: Merge "Fail if we\'re unable to agree on an ISA for shared UIDs."

* commit 'deda5467f44fc4a03c3435f0c6d7bda4ea298b99':
Fail if we're unable to agree on an ISA for shared UIDs.
8974f2490992b2921b636c0b65ebeb5b19dda89b 16-May-2014 Jason Monk <jmonk@google.com> Merge "Notify AppOpsService of UserRestrictions and Owners"
62062996dd256df8b575b2ba1f0bf97109c4e0ba 06-May-2014 Jason Monk <jmonk@google.com> Notify AppOpsService of UserRestrictions and Owners

This makes the DevicePolicyManagerService and UserManagerService
push the DeviceOwner/ProfileOwners and user restrictions on boot
as well as on any change.

This also adds a list of restrictions that allow any op to connected with
a user restriction such that it will return MODE_IGNORED when the user
restriction is present (except for the device/profile owner).

Change-Id: Id8a9591d8f04fe5ecebd95750d9010afc0cd786c
serManagerService.java
6f16aec6de6e9c49304e3589abc75eeff6d6f6af 16-May-2014 Kenny Guy <kennyguy@google.com> Merge "Send profile removed intent earlier so launchers updates."
f8d3a232e8df65aa75545963ee0ccf753b2d8fb9 15-May-2014 Kenny Guy <kennyguy@google.com> Send profile removed intent earlier so launchers updates.

This sends the profile removed intent when the user has
been disabled.

Bug: 14981942
Change-Id: I32ab9c68ca53ec3aac0c930c0bbf93da7ff5b479
serManagerService.java
5d5f19a339bc4a8f10f75b51625d8d50ee0729e0 15-May-2014 Narayan Kamath <narayan@google.com> am 6e2e6868: am 706b1d7e: Merge "Remove "required" prefix from ABI fields."

* commit '6e2e686889037711170ee145f9dfdb442cee85db':
Remove "required" prefix from ABI fields.
1e74c37f8e1acb595f407e0f65744bb6b00c9314 15-May-2014 Narayan Kamath <narayan@google.com> Merge "Remove "required" prefix from ABI fields."
3a44f3f1b446315ef894e01d2ab9b5388c2bd8c4 29-Apr-2014 Jeff Sharkey <jsharkey@android.com> Initial support for split APKs, PackageInstaller.

Defines a new PackageInstaller class that will be used for installing
and upgrading packages. An application desiring to install an
application creates a session, stages one or more package files in
that session, and then kicks off the install.

Previously, PackageManager would always make its own copy of a package
before inspecting it, to ensure the data could be trusted. This new
session concept allows the installer to write package data directly to
its final resting place on disk, reducing disk I/O and footprint
requirements. Writes are directed through an intermediate pipe
to ensure we can prevent mutations once an install has been initiated.
Also uses fallocate() internally to support optimal ext4 block
allocation using extents to reduce fragmentation.

Sessions are also the way we support installing multiple "split" APKs
in a single atomic operation. For a set of packages to form a valid
application, they must have exactly the same package name, version
code, and certificates. A session can also be used to add a small
handful of splits to an application by inheriting existing packages
when not performing a full install.

Add PackageParser support for extracting split names and certificates.

Bug: 14975160
Change-Id: I23d1bf4fbeb9f99a8c83be0c458900a0f0d1bccc
ackageInstallerService.java
ackageInstallerSession.java
ackageManagerService.java
cea2978737146485b88f06b24b5df5656f9586e1 06-May-2014 Alexandra Gherghina <alexgherghina@google.com> Ensure only enabled profile apps can be launched

Change-Id: I396e99eb6b8a957d994962300eeffeec61d7c46a
Bug: 13691041
auncherAppsService.java
34f6084bc21b07ae9112be6e7a8f50c49828ac9c 30-Apr-2014 Narayan Kamath <narayan@google.com> Remove "required" prefix from ABI fields.

As per a comment on an earlier code review.

Change-Id: I3ae30f8a7bc90730068644f93b926e0e05a2cdfb
ackageManagerService.java
ackageSetting.java
ackageSettingBase.java
ettings.java
027c75d5e2861e90058bcd2d267b47498caf82cf 13-May-2014 Brian Carlstrom <bdc@google.com> am f230061b: am 2ce02bba: am b7d7cbc9: Merge "Fix background PackageUsage writing."

* commit 'f230061b383f3e5fa63a266d84477963dc5f226c':
Fix background PackageUsage writing.
f230061b383f3e5fa63a266d84477963dc5f226c 13-May-2014 Brian Carlstrom <bdc@google.com> am 2ce02bba: am b7d7cbc9: Merge "Fix background PackageUsage writing."

* commit '2ce02bba1eea682282408b8521dad8c91837fbab':
Fix background PackageUsage writing.
809146690d03b3ec3404c37c1fb467f7b7234692 09-May-2014 Brian Carlstrom <bdc@google.com> am 09d11896: am edc31509: am b98ca5b0: Merge "If PackageUsage information is missing, treat as first boot and compile everything"

* commit '09d1189668a74b2cd4a6af124e95c9e6786499f2':
If PackageUsage information is missing, treat as first boot and compile everything
09d1189668a74b2cd4a6af124e95c9e6786499f2 09-May-2014 Brian Carlstrom <bdc@google.com> am edc31509: am b98ca5b0: Merge "If PackageUsage information is missing, treat as first boot and compile everything"

* commit 'edc31509c2ff8cba86f30c836934d32a3e249dec':
If PackageUsage information is missing, treat as first boot and compile everything
be81c800ae6216e30b6008b4c73172b36531c405 22-Apr-2014 Jessica Hummel <jhummel@google.com> Add api for getting the parent of a profile.

Change-Id: Ife59665cdf6531a118d74def864c8cfc92c92a42
serManagerService.java
86e80290792b3a259dc6db7958a2f7ace7f9c6e4 08-May-2014 Emily Bernier <ember@google.com> Merge "New user restrictions for EDU"
26ecbefea064af5ae616b135aa56fec1009296e7 08-May-2014 Kenny Guy <kennyguy@google.com> Merge "Limit package launcher apps callback to enabled users."
dfad99ad9fd5953b9d726715c40197a3e70e7dd0 08-May-2014 Brian Carlstrom <bdc@google.com> resolved conflicts for merge of 0b5598c9 to master

Change-Id: Ie911d6b0b5e2b87e2b4669fa2465a82bb5807893
6422abef786632e53337c6c298ffa64f7ddf4d90 07-May-2014 Brian Carlstrom <bdc@google.com> resolved conflicts for merge of 3bbef521 to master

Change-Id: I0bbb7c80f6c4f003779da784475d7acbfb898c94
394a6cdd987fed79bd040f39e2d3e47d4484bab4 07-May-2014 Emily Bernier <ember@google.com> New user restrictions for EDU

New user restrictions will allow schools to prevent students from 1) using
device microphones, 2) adjusting device volume, and 3) mounting physical
external media.

Change-Id: Ib2fcb7ce8fbc489a25d2c97a122b2124012a9e3c
serManagerService.java
0b5598c924fc140db5cfee08c17fd91e630b1c9e 07-May-2014 Brian Carlstrom <bdc@google.com> am 691079dd: am a21ba5be: Merge "Add BackgroundDexOptService"

* commit '691079ddc0055fac9b82dccaf35b4591978b2a55':
Add BackgroundDexOptService
3bbef521d4b07f86010ba0729a36ff8b73bcb0ac 07-May-2014 Brian Carlstrom <bdc@google.com> resolved conflicts for merge of f2db00fd to klp-modular-dev-plus-aosp

Change-Id: I745164033962f6222832f8f19fa316a2e2634fd0
2871654830e94445842d6a67d775d7c317a7f2c0 07-May-2014 Kenny Guy <kennyguy@google.com> Limit package launcher apps callback to enabled users.

Change-Id: I8e42756647025677203a7dfb1dd2d040ac6e32db
auncherAppsService.java
010cfd458121034075c7439020ffef4eedbcc0fc 16-Apr-2014 Adam Connors <adamconnors@google.com> Add enableSystemApp methods to DevicePolicyManager

These methods allow profile or device owners to enable
systems apps pre-installed in the primary user in the
managed profile. Apps can be specified by either package
name or intent.

Bug: 13587051

Change-Id: Ifcbc68c139308506b6c18cf3c0ea62b8026ff75f
ackageManagerService.java
d46d0f9dcd72dfaa93a57d07d896def6ce53bbae 23-Apr-2014 Julia Reynolds <juliacr@google.com> Add new EDU user restrictions.

Change-Id: I6aad10466d99cda6be378c72025df686fe665071
serManagerService.java
c79586ede6dcd6a167bc8360f058cb5cc655b33d 06-May-2014 Nicolas Prevot <nprevot@google.com> Cleaning code related to the forwarding intent filters.

Checking for INTERACT_ACROSS_USERS_FULL
Adding equivalent methods in the PackageManager

Change-Id: Iaa1328fa666613a78e67ca669ea045144275e895
ackageManagerService.java
6fee7d4cf991a8d39bdefb782937250c87f60f25 01-May-2014 Nicolas Prevot <nprevot@google.com> Introducing removable and non-removable ForwardingIntentFilters.

clearForwardingIntentFilters removes only non-removable IntentFilters.
The ForwardingIntentFilters set by the profile owner are always removable.

Change-Id: If950ccd7e69261b86360ea647fdb501c92f5440b
orwardingIntentFilter.java
ackageManagerService.java
7b66ed588525d2d79ef0df8b3024bae138d8681d 14-Apr-2014 Adam Connors <adamconnors@google.com> Send ACTION_MANAGED_PROFILE_REMOVED broadcast.

When the managed profile is removed, this new intent
is used to inform the rest of the system.

Change-Id: I1748bed0a7ee0122f69d5c78235a79f8e205efec
serManagerService.java
932249db930d78131c4314ff46ec5fca76cb46cd 01-May-2014 Amith Yamasani <yamasani@google.com> Deliver package broadcasts only to related profiles.

Store the listener's userhandle in a cookie and compare profile
relationships before delivering package broadcasts to a listener.

Basically, don't leave TODOs around, they'll result in bugs :)

Bug: 14436558
Change-Id: I57a21719caab6cf54b78de7be2eca3e398dc6288
auncherAppsService.java
531381056fac077cffcd509b1e89d9b41f400fca 01-May-2014 Narayan Kamath <narayan@google.com> am 5dca099d: am 1cec7f85: Merge "Don\'t adjust ABI if PackageSetting#pkg is null."

* commit '5dca099df7100c531e111b50435605c318f1e6d4':
Don't adjust ABI if PackageSetting#pkg is null.
d6809b35aff02fdccf7ac433005aba2d06bbc3ff 01-May-2014 Narayan Kamath <narayan@google.com> am c1f81f90: am 27f2bfc4: Merge "Fix dex file pruning logic."

* commit 'c1f81f9086037dde6e082b8a80c84277cb727726':
Fix dex file pruning logic.
fbd80b58db2aa8f650acf26305e8cbed24a5755b 01-May-2014 Narayan Kamath <narayan@google.com> am 51f4367c: am bcc3b312: Merge "Adjust instruction sets for shared UID apps."

* commit '51f4367cac606580a5ca10ec1cf2dcab3982aebc':
Adjust instruction sets for shared UID apps.
3a951e52d93697b7e232501b78f9ffb0ec605516 01-May-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 69da8a12 to klp-modular-dev-plus-aosp

Change-Id: Ie07b88f324749afcf8417b50d4dbbc6e2a271a2a
d2ec8724d2a3407e28161299d44e2e113fe437ec 01-May-2014 Narayan Kamath <narayan@google.com> am d85ded89: am 645a920f: Merge "Fix OEM native library path bug."

* commit 'd85ded890d86d454a0571c63911ff911633e3a95':
Fix OEM native library path bug.
f5c6a1b3eb10f0374fcbab55853f400778f0f8e7 01-May-2014 Narayan Kamath <narayan@google.com> am eb573498: am 986b901a: Merge "Fix native-lib dir assignment & updating"

* commit 'eb5734989b3ef5455359f8807684a860ad04c134':
Fix native-lib dir assignment & updating
0338af46f968e2e1c2fd8c62e9387546fa9ed86b 01-May-2014 Narayan Kamath <narayan@google.com> am 99253c2d: am fde59428: Merge "Handle /oem and /vendor as well"

* commit '99253c2da945cbd4725efced6cac2dc40c858d6c':
Handle /oem and /vendor as well
5bc12a1b5dadfd504fb03875fad97cda8d39cf25 01-May-2014 Narayan Kamath <narayan@google.com> am a7b465ef: am d91358b2: Merge "Support per-package lib dirs for bundled apps"

* commit 'a7b465efc4eede46b8dfc8932c6c30346e8e79de':
Support per-package lib dirs for bundled apps
3c4d9c56db5b24699956de0a5a841196185363cc 01-May-2014 Alexandra Gherghina <alexgherghina@google.com> Merge "Adds an enabled state in UserInfo instead of DevicePolicyManager"
df35d570ed25257c6782e632ab1bae5e1603855a 09-Apr-2014 Alexandra Gherghina <alexgherghina@google.com> Adds an enabled state in UserInfo instead of DevicePolicyManager

Bug: 14377459
Change-Id: Ib4ec43d87da96c3dddaf9b7ae1796f261863a182
serManagerService.java
ff2e05e1f69eb0cbe9ba68cb1adbd2b2922eeeb7 01-May-2014 Nicolas Prevot <nprevot@google.com> Merge "Introduce forwarding intents across profiles."
10fa67c77e11699391e27975fc2d276a0b8c7cbb 24-Mar-2014 Nicolas Prevot <nprevot@google.com> Introduce forwarding intents across profiles.

The package manager service maintains, for some user ids, a list of forwarding intent filters.
A forwarding intent filter is an intent filter with a destination (a user id).
If an intent matches the forwarding intent filter, then activities in the destination can also respond to the intent.

When the package manager service is asked for components that resolve an intent:
If the intent matches the forwarding intent filter, and at least one activity in the destination user can respond to the intent:
The package manager service also returns the IntentForwarderActivity.
This activity will forward the intent to the destination.

Change-Id: Id8957de3e4a4fdbc1e0dea073eadb45e04ef985a
orwardingIntentFilter.java
orwardingIntentResolver.java
ackageManagerService.java
ettings.java
7e5264ced758107d83da88d6e476d16028b3cc71 30-Apr-2014 Kenny Guy <kennyguy@google.com> Merge "Extend LauncherApps service to expose enabled state."
ab45d1d6d296f4f61632a472cf7bd8626c8d5a06 30-Apr-2014 Narayan Kamath <narayan@google.com> Don't adjust ABI if PackageSetting#pkg is null.

If means the package hasn't been scanned yet, and we
will adjust the ABI during the scan of the last package
in the shared user group.

NOTE: This needs some more cleaning up, which will be
done along with the remaining TODO in this function.

Change-Id: Ie332806b64e22ab4a4856e1ccd064ff6a01616bf
ackageManagerService.java
f6b635e4f00cd40d4c46730f7d23df6cc8bf4aa4 29-Apr-2014 Narayan Kamath <narayan@google.com> Fix dex file pruning logic.

We should now prune all normal files from /data/dalvik-cache
in addition to looking for dex files in all subdirectories of
/data/dalvik-cache.

Change-Id: I4abb2b01b359bbb1b8ece2c9025541a5d5e335f5
ackageManagerService.java
df6d6dc2aac2912e98de3fe37869d2b179eb23db 28-Apr-2014 Narayan Kamath <narayan@google.com> Adjust instruction sets for shared UID apps.

Since shared UID apps are run in the same process,
we'll need to make sure they're compiled for the same
instruction set.

This change implements the recompilation of apps that
don't have any ABI constraints.

Apps that *do* have ABI constraints are harder to deal
with, since we'll need to rescan them to figure out the
full list of ABIs they support and then re-extract the
native libraries from these apps once we find an ABI we
can use throughout.

Change-Id: I365c6b0b18187df814d4736da61b199dd4494e3c
ackageManagerService.java
ettings.java
0f206a149d27385ef092a34e0009a8607d663659 12-Apr-2014 Narayan Kamath <narayan@google.com> Package manager changes for dual zygote stack.

- Pass down the app's instruction set to dexopt so that
it can compile the dex file for the right architecture.

- Also pass down the app's instruction set to rmdex, movedex
and getSize so that they can construct the cache file
location properly.

- Temporarily compile "system" jars such as am,wm etc. for
both architectures. A follow up change will ensure that
they're compiled only for one architecture (the same
arch. as the system server).

- Java "shared" libraries are now compiled for the right
architecture when an app requires them.

- Improve the app native library ABI detection to account
for system apps installed in /system/lib{64}/<packagename>
and also handle sdcard and forward locked apps correctly.

Change-Id: I4f380b146137803e51d56fdf355c3bdfc92c409d
nstaller.java
ackageManagerService.java
53fa4ec7f466e70fe3e33d15c4abfc9bb557eb10 29-Apr-2014 Kenny Guy <kennyguy@google.com> Extend LauncherApps service to expose enabled state.

Provide methods for checking if a package or activity
is enabled for a given profile.

Change-Id: If9cb15dc9398a709e60e7b689b664c24c49fcc16
auncherAppsService.java
a8e65fd82a323e6065ae9ae6cc8eaa130d3c1efd 24-Apr-2014 Kenny Root <kroot@google.com> Only remember the signer certificates for Signatures

Previously we would use the JarEntry#getCertificates API which would
return a flattened array of all the signers and their certificate chain.
Since this isn't what was intended, switch to reading the certificate
chains and only paying attention to the signer certificate.

In order to migrate during upgrades of the platform, we'll scan on boot
with a compatibility mode which will check the stores signatures in the
old format by flattening the chains of the scanned packages then
comparing the two sets.

Bug: 13678484
Change-Id: I02a5c53121d8d6f70a51d7e3b98168a41e11482e
ackageManagerService.java
ettings.java
10596fbcce710a76ffc7e917400df13af5c2ebcb 28-Apr-2014 Elliott Hughes <enh@google.com> resolved conflicts for merge of 3ce4f3d0 to master

Change-Id: Id5c5997ad8f801b32e1dbd97413ea42e38c27210
3ce4f3d0af8b20f915631ab927aafa76a6105135 28-Apr-2014 Elliott Hughes <enh@google.com> am 685a0a72: am bbd87eb9: Merge "Track libcore.os\' move to android.system."

* commit '685a0a72d445515167a2071330679cdf9b53a62d':
Track libcore.os' move to android.system.
33417df78aea04a9afe6fe73958d2dac73338666 24-Apr-2014 Jeff Sharkey <jsharkey@android.com> Fix OEM native library path bug.

Bug: 13340779
Change-Id: I3d69b3453d3d284295bbfa771e6fb4a36bca05c5
ackageManagerService.java
a466b101be24c1e0df098856fe0989749afe49ce 26-Apr-2014 Kenny Root <kroot@google.com> Merge "PackageManager: add versioning to packages.xml file"
250bb6e3e045a88022db526b074e7ab38c47d93c 25-Apr-2014 Amith Yamasani <yamasani@google.com> Merge "Allow profile owners to set user restrictions"
c1c0d3c4f461be5649a64920cad7b58dd4162680 24-Apr-2014 Kenny Root <kroot@google.com> PackageManager: add versioning to packages.xml file

During development, a new feature might be added that requires the
packages.xml format be updated. To that end, add a database version
attribute that allows this to happen.

Change-Id: I3340a0bd55017acd625c3cba523cec10a18a4805
ackageManagerService.java
ettings.java
91097de49b0f683b00e26a75dbc0ac6082344137 05-Apr-2014 Dianne Hackborn <hackbod@google.com> Initial implementation of new voice interaction API.

This gives a basic working implementation of a persist
running service that can start a voice interaction when
it wants, with the target activity(s) able to go through
the protocol to interact with it. It may even work when
the screen is off by putting the activity manager in the
correct state to act like the screen is on.

Includes a sample app that is a voice interation service
and also has an activity it can launch.

Now that I have this initial implementation, I think I
want to rework some aspects of the API.

Change-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9
ackageManagerService.java
898be168bda75b204611e8e24439d33213ecab5f 25-Apr-2014 Dianne Hackborn <hackbod@google.com> Merge "Add support for muliple active development codenames."
12e75126909152c448f70c48f3d2f2884cb359bd 25-Apr-2014 Christopher Tate <ctate@google.com> Merge "Fix native-lib dir assignment & updating"
be46532c9fbebf3ab6498c1b78013a33f620cd31 24-Apr-2014 Amith Yamasani <yamasani@google.com> Allow profile owners to set user restrictions

Pass the setting along to UserManager.

Fixes a security exception when fetching the profile's enabled state.

Change-Id: If71698cf32c52cce1158cf2027443a339bc58488
serManagerService.java
ffcda1086185f217ebfbac0735f92fcc8a9196c8 24-Apr-2014 Dianne Hackborn <hackbod@google.com> Add support for muliple active development codenames.

The resource API level is also bumped by the number of
active codenames there are.

Change-Id: Ic1bac452d5c13dc3f48040ffa47f54b28abe2ccc
ackageManagerService.java
353e39a973dbbadce82fee2f83ad194e04a47449 24-Apr-2014 Christopher Tate <ctate@google.com> Fix native-lib dir assignment & updating

The per-package /system/lib/* feature introduced bugs in the
native library path handling during app upgrade installs. The
crux of the fix is that when recalulating the desired native
library directory, the basis for the calculation needs to be
the scanned APK's location rather than the extant package
settings entry -- because that entry refers to the pre-upgrade
state of the application, not the new state.

Bug 14233983

Change-Id: I76c3249c72ecc055115d430529d386599e52ae42
ackageManagerService.java
97efc15b32b61a5deb1f54c6c08844b788785c39 24-Apr-2014 Kenny Root <kroot@google.com> Merge "PackageManager: remove GET_CERTIFICATES boolean"
07c79fcc7f2538e849a3f9961abb81df72b8d0a4 24-Apr-2014 Kenny Root <kroot@google.com> PackageManager: remove GET_CERTIFICATES boolean

This is a really old debugging flag that is not useful and also
dangerous.

Change-Id: I3badb5e361a8fe8458a355bf7d9ab055cb1b57d5
ackageManagerService.java
1c299031982b6145e372aa43a3b8a5c683fad3da 24-Apr-2014 Kenny Guy <kennyguy@google.com> Merge "Fix bug with getLauncherActivities ignoring packageName."
1a4e0b998030bb86196559947f417ee6fe117644 23-Apr-2014 Kenny Guy <kennyguy@google.com> Fix bug with getLauncherActivities ignoring packageName.

Change-Id: Ica5817378a24cb4b68e2c99e37cd214d3fde8ba4
auncherAppsService.java
385124d8cee38dee00d4fac31e8fbe46fb30565b 03-Apr-2014 Alexandra Gherghina <alexgherghina@google.com> Modify getUserProfiles to return only enabled profiles:

Add a new enabled state for a managed profile.
Expose that as a new API on DevicePolicyManager.
Set the new state when enabling the profile.
Return only enabled profiles from the user manager.

Bug: 13755441
Bug: 13755091
Change-Id: I2907b182e19b3562592da688b3f68ef5f4088557
serManagerService.java
7a2b4d11c741de8b78570c0e11f49deb165e35da 23-Apr-2014 Emily Bernier <ember@google.com> Allow device or profile owner app to modify user restrictions.

Currently this is gated on being a system or root app with the
MANAGE_USERS permission; third-party MDM apps set as device or profile
owner should have this ability as well.

Bug: 13585295

Change-Id: I61d21b13b9ec66fc0cb497ec2007ee732461d448
serManagerService.java
d236d625b4a4e938629fbcc55687ca7bebaab6e8 22-Apr-2014 Nick Kralevich <nnk@google.com> am 3ab7882a: am a67d4a6e: Merge "remove unused import."

* commit '3ab7882a57d3c7a0e13f58837cd02138df43f301':
remove unused import.
740888f62eae158d5775be716620f0d56d87f587 18-Apr-2014 Christopher Tate <ctate@google.com> Handle /oem and /vendor as well

Bug 13170859

Change-Id: I95dec4cd68e3d64517d08b3f08eefb849ce37b86
ackageManagerService.java
0153487d01e4921a7e3dc42c2fd68642622dd6f6 18-Apr-2014 Christopher Tate <ctate@google.com> Merge "Support per-package lib dirs for bundled apps"
addfbdc09ccf258395db8bfc510989a4c583f7ab 11-Apr-2014 Christopher Tate <ctate@google.com> Support per-package lib dirs for bundled apps

Bundled apps can now use /system/lib/apkname or /system/lib64/apkname
in addition to the (globally shared) /system/lib and /system/lib64
directories. Note that when an app is updated post hoc the update APK
will look to its normal library install directory in
/data/data/[packagename]/lib, so such updates must include *all*
needed libraries -- the private /system/lib/apkname dir will not be in
the path following such an update.

"apkname" here is the base name of the physical APK that holds the
package's code. For example, if a 32-bit package is resident on disk
as /system/priv-app/SettingsProvider.apk then its app-specific lib
directory will be /system/lib/SettingsProvider

Bug 13170859

Change-Id: Ic44cc75312f33d2f5d402a1c261b2eca3fe8badc
ackageManagerService.java
66e5d96cf9e689148b202787bdc269519c4b6f8f 09-Apr-2014 Robin Lee <rgl@google.com> Allow ProfileOwner apps to manage app restrictions

Simple wrapper around the UserManager.{get|set}ApplicationRestrictions
APIs. Also added a new Intent to signal to running apps that the set
of restrictions has changed since startup.

Change-Id: Ifd108108a73f87325b499d9de2e1b2aacc59b264
serManagerService.java
f148f36d140e995ec8f755e60bbb0b37f33c3da7 10-Apr-2014 Narayan Kamath <narayan@google.com> am 9e289d70: am 1d26a3f1: am 09e13cc5: Merge "System services detect and register app CPU ABIs"

* commit '9e289d70a8baaed0030413b5991653792e2a816d':
System services detect and register app CPU ABIs
d11f223c535ed9ce628fe5aaf0fd5692dd0cf9e4 10-Apr-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 286a247e to master

Change-Id: I63df9d482da3ce2ac851959223b9180020ffad0c
9e289d70a8baaed0030413b5991653792e2a816d 10-Apr-2014 Narayan Kamath <narayan@google.com> am 1d26a3f1: am 09e13cc5: Merge "System services detect and register app CPU ABIs"

* commit '1d26a3f1efd0d965e8751e8515608c31789bdbe2':
System services detect and register app CPU ABIs
286a247e4c8fcecb59636f668678d24e33142744 10-Apr-2014 Narayan Kamath <narayan@google.com> am 0fd40cb1: am 80413c9f: Merge "Re-implement native library search and copies."

* commit '0fd40cb100bccbd5d9ad6109ca39c818a857f889':
Re-implement native library search and copies.
c03dea76307163b95a313ba3e887aa94ed01dc2c 09-Apr-2014 Sander Alewijnse <salewijnse@google.com> Merge "Changed tag name and error strings for PersistentPreferredActivity storage."
4f58263d02f296430a9653126d28501e95c7bb6c 19-Feb-2014 Amith Yamasani <yamasani@google.com> Launcher APIs and broadcasts for managed profiles

UserManager
- Corp badging
- Querying list of managed profiles

Launcher API
- LauncherApps and Service to proxy changes in managed profile
to the launcher in the primary profile
- Querying and launching launchable apps across profiles

Change-Id: Id8f7b4201afdfb5f414d04156d7b81300119289e
auncherAppsService.java
serManagerService.java
ed3db02c051f52f9ad3770e3c6b5b90c71a04fb1 04-Apr-2014 Christopher Tate <ctate@google.com> Significant preconditions are significant

If you are going to check whether we've failed yet, make sure that
the default state to test against has been established properly.

Bug 13790971

Change-Id: I7fc6ff1bbbd9e569df59dcb65cc30f120c128efa
ackageManagerService.java
c935d1f11144443a91b3c03d7da82314db6e049b 31-Mar-2014 Christopher Tate <ctate@google.com> Refuse update of a system app if it changes its shared uid

Bug 13657183

Change-Id: I6d8fb9c8810ca896d2d10e5a80a3c4a50c9e4fed
ackageManagerService.java
1ccace916c8fdc61f1a8db6677aed518d31647e6 02-Apr-2014 Kenny Guy <kennyguy@google.com> Merge "Rename related users to profiles."
2a764949c943681a4d25a17a0b203a0127a4a486 02-Apr-2014 Kenny Guy <kennyguy@google.com> Rename related users to profiles.

Rename the related user concept as profiles.
When returning profiles of a user include the
user as a profile of itself.

Change-Id: Id5d4f29017b7ca6844632ce643f10331ad733e1d
serManagerService.java
f74aa094b413f113f7dd8cef0ce28fb933a27a5d 01-Apr-2014 Christopher Tate <ctate@google.com> Handle bad package name arguments sensically

Don't blithly go ahead and assume package name arguments are non-null,
and don't continue to do a bunch of work after an early failure on
invalid non-null package names.

Bug 13745101

Change-Id: I12ccae343066b39162dedeb46dc58869f55be0ba
ackageManagerService.java
0e290b7708e2ac59e645f499d8348a3a087a9568 31-Mar-2014 Nick Kralevich <nnk@google.com> am ce30fca8: am e531e2ec: am 3b2a9d22: Merge "Change when the SELinux relabel of /data/data occurs."

* commit 'ce30fca85deec8e268009a2acaefe85541ab1e58':
Change when the SELinux relabel of /data/data occurs.
ce30fca85deec8e268009a2acaefe85541ab1e58 31-Mar-2014 Nick Kralevich <nnk@google.com> am e531e2ec: am 3b2a9d22: Merge "Change when the SELinux relabel of /data/data occurs."

* commit 'e531e2ec6b311c35b077cc228e832b3f1530dffa':
Change when the SELinux relabel of /data/data occurs.
f1977b4500e82b72ea6aa5c46d97406a20017caf 25-Mar-2014 Christopher Tate <ctate@google.com> Expand install observer semantics

...and now fail conservatively when two apps both attempt to define
the same permission. Apps signed with the same certificate are
permitted to redefine permissions.

We also finally have a (hidden) interface class for observing package
installation so that we can now rev the interface without breaking
existing callers.

Bug 13551375

Change-Id: Ifa4e59154dcccbb286ee46a35a6f25e4ad0f0f01
ackageManagerService.java
1ee4eb074c2d85148658e93e865a18834bdced72 26-Mar-2014 Glenn Kasten <gkasten@google.com> Merge "Revert "Expand install observer semantics""
7629a18a3f190368e6268d3f2827824905683268 26-Mar-2014 Glenn Kasten <gkasten@google.com> Revert "Expand install observer semantics"

This reverts commit ab8a501f255b272af887acb0e66eb71cdf24c755.

Change-Id: I4ab4ae1a96efa2adf9d5a513793d8b84eef38b4e
ackageManagerService.java
9067dc03ffc76c5210d26d5a53a211eff046d412 26-Mar-2014 Christopher Tate <ctate@google.com> Merge "Expand install observer semantics"
c76275377cbc807b3bbc2fc1662ff18c59043e5b 26-Mar-2014 Nick Kralevich <nnk@google.com> am 32cc40a9: am fdd63510: am 491eaf22: Merge "Note libselinux dependency on packages.list format changes."

* commit '32cc40a9b57750451a6489e01526dc6a14d72bff':
Note libselinux dependency on packages.list format changes.
32cc40a9b57750451a6489e01526dc6a14d72bff 26-Mar-2014 Nick Kralevich <nnk@google.com> am fdd63510: am 491eaf22: Merge "Note libselinux dependency on packages.list format changes."

* commit 'fdd6351067740f80148ff03c43d2ebc91f1d9656':
Note libselinux dependency on packages.list format changes.
ab8a501f255b272af887acb0e66eb71cdf24c755 25-Mar-2014 Christopher Tate <ctate@google.com> Expand install observer semantics

...and now fail conservatively when two apps both attempt to define
the same permission.

We also finally have a (hidden) interface class for observing package
installation so that we can now rev the interface without breaking
existing callers.

Bug 13551375

Change-Id: I3a286d024a30e812ee4b098f345401df3c00e178
ackageManagerService.java
99d607844da2b100afe3d134c1c006f4cc5b35b1 25-Mar-2014 Adam Lesinski <adamlesinski@google.com> am 415e6f8e: Merge "Fix issue with early service start" into klp-modular-dev

* commit '415e6f8ed46a70e6ae50e05cda56356dae31718c':
Fix issue with early service start
a6db4ab6193626c880970572a0d03db511d403af 24-Mar-2014 Adam Lesinski <adamlesinski@google.com> Fix issue with early service start

NotificationListener services would start too early
and crash due to system_server not being ready.

Bug: 13439345
Change-Id: I86ee93b50d016bfa0119e21a8cde8635212b16a4
serManagerService.java
af597627cb344a144cbeb0a982e97e282cfd8f82 20-Mar-2014 Sander Alewijnse <salewijnse@google.com> Changed tag name and error strings for PersistentPreferredActivity storage.

They still referred to hard preferred activity, which was renamed
to persistent preferred activity.

Change-Id: Ib06baa5da746ea1e4cbd035cd73e8847acba3f7c
ersistentPreferredActivity.java
ettings.java
c55f9c04427796d5b6f833fe43adffd9d7b99ad2 21-Mar-2014 Christopher Tate <ctate@google.com> Cap the size of app-defined permission trees

Bug 13529742

Change-Id: I46c2ebc39caf4a9eacbffbb35fc386c2a1cedc12
ackageManagerService.java
244d18bfb3ae7ff9781616b35e29ffb84713ef68 20-Mar-2014 Nick Kralevich <nnk@google.com> am 857fe511: am 0b4f63c3: am dd6b7495: am 83725810: Merge "Get rid of noise during boot."

* commit '857fe511fe7139a41ad3d587a73758be53340e90':
Get rid of noise during boot.
0b4f63c319f211ddd0d572b6b1eb647d0a6dc8a7 20-Mar-2014 Nick Kralevich <nnk@google.com> am dd6b7495: am 83725810: Merge "Get rid of noise during boot."

* commit 'dd6b7495577eca7a00aa37bfdca3449cf1443681':
Get rid of noise during boot.
70b7d163aa0d4b2911eff525f83c9f245bfd9813 19-Mar-2014 Nick Kralevich <nnk@google.com> am 31654e19: am b630ffe3: am e75d340a: am 5c8e1a6e: Merge "Allow PMS to restorecon directories under /data."

* commit '31654e19c92c94675c0e2f2a86b59683d4c48d2f':
Allow PMS to restorecon directories under /data.
b630ffe3fdd72be186495f2c0a8d05b936a73d46 19-Mar-2014 Nick Kralevich <nnk@google.com> am e75d340a: am 5c8e1a6e: Merge "Allow PMS to restorecon directories under /data."

* commit 'e75d340ae5919942d19f57856ae9e3f8bc62e098':
Allow PMS to restorecon directories under /data.
1be762c1ba0f4ab57c9d2038620e03d45eeb1f0a 06-Mar-2014 Jeff Sharkey <jsharkey@android.com> Define an OEM directory, scan features and APKs.

To support OEM customizations, define a new top-level directory
that roughly mirrors the layout of the system partition. Scan this
location for (non-privileged) apps, and for additional features.

Bug: 13340779
Change-Id: Idb6d6626655061ee31ad952cab734d30ea6130b9
ackageManagerService.java
10ad98223fd1fabb7b893de55d1384fd012aed7b 17-Mar-2014 Dianne Hackborn <hackbod@google.com> Start enforcing explicit intents for Context.bindService()

No longer prints a warning, now throws an exception.

Also fix a bug in UserManagerService that was causing an
exception while booting.

Change-Id: I3b43cfe08067da840b6850b9bed58664d36d34f1
serManagerService.java
00d115a7533df23027f671c90c0ae52684392e4a 14-Mar-2014 Brian Carlstrom <bdc@google.com> resolved conflicts for merge of aa737c49 to klp-modular-dev-plus-aosp

Change-Id: I1f4e555773fe6138efaf73444525da0f747b01d5
aa737c49df79749fe92b89d745eba7442762e2b5 13-Mar-2014 Narayan Kamath <narayan@google.com> am 9af19bee: am 52af2ca9: DO NOT MERGE - Remove data dirs if a new install fails dexopt.

* commit '9af19bee1c7da8d2e8bc6e40c6e9c1e28e0640c6':
DO NOT MERGE - Remove data dirs if a new install fails dexopt.
2d3ddc2ba9f86d795e437ea90dccb59cf1ebfd11 08-Mar-2014 Dave Allison <dallison@google.com> am 199670c4: am 324aa693: am b94904ab: am 3fc3b9fd: Merge "ART profiler usage."

* commit '199670c46a9950bd2e06af43ea082427b542060a':
ART profiler usage.
324aa693b82656809b97e307676adbbce37c3d95 08-Mar-2014 Dave Allison <dallison@google.com> am b94904ab: am 3fc3b9fd: Merge "ART profiler usage."

* commit 'b94904ab6dfbb9db7e8042f10886042a295857d4':
ART profiler usage.
75870cf391eb6f1ec91f512e0a6f28840093d413 06-Mar-2014 Dianne Hackborn <hackbod@google.com> am 75374879: am ea391750: am 5e578e17: am 40a26004: Issue #13308712: Add --checkin to package manager dump.

* commit '75374879938c1767b0266132672361487f2f58d4':
Issue #13308712: Add --checkin to package manager dump.
75374879938c1767b0266132672361487f2f58d4 06-Mar-2014 Dianne Hackborn <hackbod@google.com> am ea391750: am 5e578e17: am 40a26004: Issue #13308712: Add --checkin to package manager dump.

* commit 'ea391750fbf78b395b414147dba6426ad907431d':
Issue #13308712: Add --checkin to package manager dump.
7a4e519eda4e0e7bac9ad0159b29b11f61b50e01 05-Mar-2014 Christopher Tate <ctate@google.com> am 8106dce7: am a6c59158: am f63ae644: am 1e995c76: Merge "Update PackageMonitor to recognize new \'replacing\' semantics" into klp-dev

* commit '8106dce705ba69d5bc0ccafa8e21068216f42a5f':
Update PackageMonitor to recognize new 'replacing' semantics
8106dce705ba69d5bc0ccafa8e21068216f42a5f 05-Mar-2014 Christopher Tate <ctate@google.com> am a6c59158: am f63ae644: am 1e995c76: Merge "Update PackageMonitor to recognize new \'replacing\' semantics" into klp-dev

* commit 'a6c59158761423551941f6ed338a117658e581ad':
Update PackageMonitor to recognize new 'replacing' semantics
98bab263500b258025c9c6ca64f8aaff7dc914f4 27-Feb-2014 Christopher Tate <ctate@android.com> am 4522bd12: am a58c03f6: am 41bfe121: am 16678ac6: Merge "Fixed upgrading from forward-lock application to system application"

* commit '4522bd12a4f3d2b0c3156fc70937f78bed15a1f8':
Fixed upgrading from forward-lock application to system application
a58c03f603cd90d1fed5566c88af5cd6c6f4caf5 27-Feb-2014 Christopher Tate <ctate@android.com> am 41bfe121: am 16678ac6: Merge "Fixed upgrading from forward-lock application to system application"

* commit '41bfe121cfa889df803a8916000e1fd0fbe87d5a':
Fixed upgrading from forward-lock application to system application
c6d033ed11f3b6b73f2650c56827ed0427411e9e 27-Feb-2014 Nicolas Prevot <nprevot@google.com> Correcting a deadlock in CreateRelatedUser

A deadlock sometimes happened in CreateRelatedUser of UserManagerService.
A lock was kept when it should have been released.

Change-Id: I15444c0b5d0d5d1e14e7bf29c2115aa954b7dfc0
serManagerService.java
f475ca33d9232785710aaa438f17915029dfa83b 17-Feb-2014 Sander Alewijnse <salewijnse@google.com> Enables a profile owner or device owner to set and clear default intent handler activities.

Those intent handlers are persistent preferences. They will remain the default intent
handler even if the set of potential event handlers for the intent filter changes
and if the intent preferences are reset.

Change-Id: Id0cfae46f93c10d89e441f272096a205ec518dd0
ackageManagerService.java
ersistentPreferredActivity.java
ersistentPreferredIntentResolver.java
ettings.java
55b8ddc30386ec15073304b1f9fabc7eb789f52e 19-Feb-2014 Adam Lesinski <adamlesinski@google.com> am 0817d16c: am 04520a01: am 6feaa267: Merge "Add fastpath for single signature comparison" into klp-modular-dev

* commit '0817d16c539ca6b499da9f807e8ac6988233e9c3':
Add fastpath for single signature comparison
04520a01b8469729379e73a7995a188ffea2b187 19-Feb-2014 Adam Lesinski <adamlesinski@google.com> am 6feaa267: Merge "Add fastpath for single signature comparison" into klp-modular-dev

* commit '6feaa267a585f22595f846c9e3d09a76dc3db47a':
Add fastpath for single signature comparison
f5b3a01e54d9b2e496f865e05b18f9455b0b8038 19-Feb-2014 Adam Lesinski <adamlesinski@google.com> Add fastpath for single signature comparison

PackageManager does not need to create a hash set
when comparing two sets of signatures, where each set
contains one signature. This is the common case for
most applications.

Bug:13029313
Change-Id: I61883d85960db7b376e234d7abae6149c4d20245
ackageManagerService.java
d5c8044e7e1f1402fdd4a035690329294ab07b33 12-Feb-2014 Nick Kralevich <nnk@google.com> resolved conflicts for merge of 1cbea39f to master

Change-Id: Ib33484546c6a03cbc4cd96e97d9d785d68e10700
dd3d95f182a634acdcc1b1e8e4954234d048eb54 12-Feb-2014 Nick Kralevich <nnk@google.com> resolved conflicts for merge of 4ad93639 to klp-modular-dev-plus-aosp

Change-Id: I7ad222301ec0b863d48a1a9a839469436c385ea0
7b0e2827153752ae51c3ae80746e42ee185e7358 11-Feb-2014 Jeff Sharkey <jsharkey@android.com> Merge "First <provider> always wins."
c6809bb6853c6f055905cbbbf873bbe4066c5d21 11-Feb-2014 Jeff Sharkey <jsharkey@android.com> First <provider> always wins.

In scanPackageLI(), the first provider to claim an authority wins
over any other later providers. To match this behavior, this changes
ProviderIntentResolver to ignore later providers with the same
ComponentName.

Without this behavior, AM.getContentProvider() could end up wedged
waiting for a provider that generateApplicationProvidersLocked()
never decided to spin up.

Bug: 12956224
Change-Id: I37d3e6e9cf3eea2cac4c0e914134f6c83b2fc2bf
ackageManagerService.java
826e51c4da2beac50c0ed1e1359787a0b69c878c 11-Feb-2014 Kenny Guy <kennyguy@google.com> Merge "Add concepts of related users and managed profiles to user manager."
a52dc3eb40777b055c0ca8d7885bd2c9577bcd1a 11-Feb-2014 Kenny Guy <kennyguy@google.com> Add concepts of related users and managed profiles to user manager.

Related users are a group that will share things like notifications.
Managed profiles are a profile of another user.

Change-Id: I2d0532f1abf939810f0fa3fc7c77ad13fa567833
serManagerService.java
cab8617b8ccea3a99b1ee15e15915c512a10c738 11-Feb-2014 Jeff Brown <jeffbrown@google.com> am 25df673b: am 1b51c9cb: Merge "Make SystemService constructor take a Context." into klp-modular-dev

* commit '25df673b849de374cf1de40250dfd8a48b7ac28b':
Make SystemService constructor take a Context.
25df673b849de374cf1de40250dfd8a48b7ac28b 11-Feb-2014 Jeff Brown <jeffbrown@google.com> am 1b51c9cb: Merge "Make SystemService constructor take a Context." into klp-modular-dev

* commit '1b51c9cb96fe2a0818289857a016521eed1ec183':
Make SystemService constructor take a Context.
b880d880c6cd989eacc28c365fc9a41d31900da1 11-Feb-2014 Jeff Brown <jeffbrown@google.com> Make SystemService constructor take a Context.

This change simplifies the process of initializing a SystemService
by folding the onCreate() step back into the constructor. It removes
some ambuiguity about what work should happen in the constructor and
should make it possible for services to retain most of their final
fields after refactoring into the new pattern.

Change-Id: I25f41af0321bc01898658ab44b369f9c5d16800b
nstaller.java
d8efad825df245f0b235a91fdb381b5be8248379 10-Feb-2014 Christopher Tate <ctate@android.com> am 88daefd4: am 379bb6ed: am ff27e6bc: Merge "Use canonical path for /vendor/app"

* commit '88daefd40767695f7e8a67d1d52dfaac2ab6bdb6':
Use canonical path for /vendor/app
88daefd40767695f7e8a67d1d52dfaac2ab6bdb6 08-Feb-2014 Christopher Tate <ctate@android.com> am 379bb6ed: am ff27e6bc: Merge "Use canonical path for /vendor/app"

* commit '379bb6ed4ea4de035569b04018f84d7ce95a8036':
Use canonical path for /vendor/app
8b3e3ecc3d1a0ab45c02e7cb84bc7db856d21f1d 09-Jan-2014 Christopher Tate <ctate@google.com> Update PackageMonitor to recognize new 'replacing' semantics

The ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE broadcast now uses the
EXTRA_REPLACING intent extra when it is sent as part of an upgrade operation
on a forward-locked application. Update PackageMonitor to recognize this
new information and express it appropriately to the observer.

Bug 11988313

Change-Id: I34dfaa965dd322f4fa8945e7b83c9f2e8cf5269a
ackageManagerService.java
79bea304eababaae0421a0ee563f783faf1638ac 22-Jan-2014 Christopher Tate <ctate@android.com> am 46c95dfc: am b450505c: am a7a9327b: am 5474f085: am 9fc157a4: Merge "FLAG_PRIVILEGED disappears if privileged app is updated and rebooted"

* commit '46c95dfc1009607184ea023921e1f262f38cd61e':
FLAG_PRIVILEGED disappears if privileged app is updated and rebooted
46c95dfc1009607184ea023921e1f262f38cd61e 22-Jan-2014 Christopher Tate <ctate@android.com> am b450505c: am a7a9327b: am 5474f085: am 9fc157a4: Merge "FLAG_PRIVILEGED disappears if privileged app is updated and rebooted"

* commit 'b450505c2e0d0dfd67bc228961a00a6eaaf092df':
FLAG_PRIVILEGED disappears if privileged app is updated and rebooted
509cc13b705f8c488774e7097ab17471c3dacd2e 18-Jan-2014 Jeff Brown <jeffbrown@google.com> am e2c9cd58: Merge "Refactor display manager service to new pattern." into klp-modular-dev

* commit 'e2c9cd583f4f706b48270b8cbe84df627c69af24':
Refactor display manager service to new pattern.
84aa8ab3c6b6cd5fca2a06e47ae29c01b037eed8 17-Jan-2014 Dianne Hackborn <hackbod@google.com> Merge "Add --checkin to package manager dump."
60dc0d97fc0a40caae2fa91fbf296b8ac630d748 17-Jan-2014 Dianne Hackborn <hackbod@google.com> Add --checkin to package manager dump.

Change-Id: Ibafd82f40dd4fa6a5b700a8b6725b007a528a92f
ackageManagerService.java
ettings.java
4ccb823a9f62e57f9d221f83a97e82967e79a9e5 17-Jan-2014 Jeff Brown <jeffbrown@google.com> Refactor display manager service to new pattern.

Transform DisplayManagerService into a SystemService and start cleaning
up other local services that it uses from window manager and input manager.

Clean up service thread initialization.

Remove unnecessary static variables from ActivityManagerService.

It's starting to become clear that we really need a better way to manage
service dependencies. Boot phases don't quite cut it.

Change-Id: If319dbd7cbfbd4812fe55ece969e818d4b20755b
ackageManagerService.java
09d30981f8e882ffaa336aa4665bfe348557895a 16-Jan-2014 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of 6f357d32 to master

Change-Id: I1979e6ed1acddbe656f5010114fd900f10865e75
6f357d3284a833cc50a990e14b39f389b8972254 16-Jan-2014 Jeff Brown <jeffbrown@google.com> Start untangling system server early bootstrapping.

Refactored SystemServer to get rid of a bunch of legacy cruft related
to how the ServerThread used to be started up.

Create system context first when system server starts. This removes
the tangled initialization order dependency that forced us to start
the activity manager service before most anything else.

Moved factory test related constants into the FactoryTest class.

Partially migrated Installer, ActivityManagerService, and
PowerManagerService to the new SystemService pattern. There's more
work to be done here, particularly around the lifecycle of the
power manager.

Bug: 12172368
Change-Id: Ia527dd56e3b3fd90f9eeb41289dbe044921230d4
nstaller.java
ackageManagerService.java
08af733f87857dc8fdb83f25554874bd6a561287 08-Jan-2014 Christopher Tate <ctate@google.com> Don't just log this warning; record the situation for posterity

When a previously 3rd-party permission declaration is superseded
by a new system-owned declaration, don't just log; leave a persistent
record of the fact for post-hoc recognition of what happened even
after reboots.

Change-Id: I816a5003f8f8ef2dfbdbfa36316c4bae5005dfbf
ackageManagerService.java
49782e46c0eb85a25ae2abcf80880c48dbab5aea 20-Dec-2013 Amith Yamasani <yamasani@google.com> am 9158825f: Move some system services to separate directories

* commit '9158825f9c41869689d6b1786d7c7aa8bdd524ce':
Move some system services to separate directories
9158825f9c41869689d6b1786d7c7aa8bdd524ce 22-Nov-2013 Amith Yamasani <yamasani@google.com> Move some system services to separate directories

Refactored the directory structure so that services can be optionally
excluded. This is step 1. Will be followed by another change that makes
it possible to remove services from the build.

Change-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85
asePermission.java
rantedPermissions.java
nstaller.java
eySetManager.java
ackageKeySetData.java
ackageManagerService.java
ackageSetting.java
ackageSettingBase.java
ackageSignatures.java
ackageVerificationResponse.java
ackageVerificationState.java
endingPackage.java
referredActivity.java
referredComponent.java
referredIntentResolver.java
ELinuxMMAC.java
ettings.java
haredUserSetting.java
serManagerService.java