• Home
  • History
  • Annotate
  • only in /frameworks/base/core/java/android/content/pm/
History log of /frameworks/base/core/java/android/content/pm/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
460a7b461902d55d20e99f6c19e131947384d04a 06-Feb-2015 Amith Yamasani <yamasani@google.com> Limit cache update to packages that have changed

When updating the RegisteredServicesCache, don't remove any packages
that are not in the list of modified packages.

Bug: 19228972
Change-Id: Id4f264403b7ceca9005854dfbbc25abfd7b54889
egisteredServicesCache.java
d23f8b44d575dcdc00965aae5fffd97f0336df43 03-Dec-2014 Eino-Ville Talvala <etalvala@google.com> Merge "Revert "Camera: Add new capability flags as system features as well"" into lmp-mr1-dev
08a125562c9af620e83e9f96c7810eae871d6067 03-Dec-2014 Eino-Ville Talvala <etalvala@google.com> Revert "Camera: Add new capability flags as system features as well"

This reverts commit 6aee1d2ba52cf7f44c9355f279844b8a937903da.
But leaves in some of the improved documentation.

Bug: 18281970
Bug: 18573576
Change-Id: I320f2229456ac039bc8f3cd8bc8b4ea6cf0e80eb
ackageManager.java
1bc177c58550514c6e48d74061392b4247a9bf6a 03-Dec-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17948584: Application crash and phone restart when app...

...is installed with <provider> with empty string.

Don't allow empty authorities, just like we don't allow null authorities.

Change-Id: I5c64592a639efe4dba848bd6f0efe4257f1565a2
ackageParser.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
ackageInfo.java
ackageInfoLite.java
ackageParser.java
6aee1d2ba52cf7f44c9355f279844b8a937903da 20-Nov-2014 Eino-Ville Talvala <etalvala@google.com> Camera: Add new capability flags as system features as well

Also add all the L and L MR1 new system features to the uses-feature documentation.

Bug: 18281970
Change-Id: I116ca3fd04cd90eb53cc696b6fa62488687e7740
ackageManager.java
db3d76ab685955aae4a3e363238a2931d89c6f03 13-Nov-2014 Adam Lesinski <adamlesinski@google.com> Merge "Fix ParceledListSlice to enforce the same concrete types among its elements." into lmp-mr1-dev
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
ignature.java
3df1c38ee098872352086e03d6f1adb16796ee29 07-Nov-2014 Adam Lesinski <adamlesinski@google.com> Fix ParceledListSlice to enforce the same concrete types among its elements.

Bug:17671747
Change-Id: I896f75738e5b464ccb6c03290f139cc2fa72f966
arceledListSlice.java
85d558cd486d195aabfc4b43cff8f338126f60a5 04-Nov-2014 Dianne Hackborn <hackbod@google.com> Add Activity API to get referrer information.

This expands the use of EXTRA_REFERRER to be relevant anywhere,
allowing apps to supply referrer information if they want. However,
if they don't explicitly supply it, then the platform now keeps
track of package names that go with Intents when delivering them
to apps, which it can be returned as the default value.

The new method Activity.getReferrer() is used to retrieve this
referrer information. It knows about EXTRA_REFERRER, it can return
the default package name tracked internally, and it also can return
a new EXTRA_REFERRER_NAME if that exists. The latter is needed
because we can't use EXTRA_REFERRER in some cases since it is a Uri,
and things like #Intent; URI extras can only generate primitive type
extras. We really need to support this syntax for referrers, so we
need to have this additional extra field as an option.

When a referrer is to a native app, we are adopting the android-app
scheme. Since we are doing this, Intent's URI creation and parsing
now supports this scheme, and we improve its syntax to be able to build
intents with custom actions and stuff, instead of being all hung up
on custom schemes.

While doing this, fixed a problem when parsing both intent: and new
android-app: schemes with a selector portion, where we were not
respecting any scheme that was specified.

Change-Id: I06e55221e21a8156c1d6ac755a254fea386917a2
abeledIntent.aidl
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
PackageManager.aidl
ackageManager.java
dd6cb55b0ef324096ff9f04a75864ecc43397c4f 31-Oct-2014 Kenny Guy <kennyguy@google.com> Tidy up unused hidden methods in LauncherApps

Bug: 17483329
Change-Id: Ic4fbb180bafaa4d2c5ba332fe228c3d9baf4761c
auncherApps.java
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
PackageManager.aidl
ackageManager.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
ackageParser.java
ackageUserState.java
2df76285914692973a4dfa6d600a71584e3e1c2a 15-Oct-2014 Jeff Sharkey <jsharkey@android.com> am 203ed4db: am 88a6ed54: Merge "Reduce PackageInstaller Binder memory pressure." into lmp-dev

* commit '203ed4db9656cc3047c65e12e3969d21652d4ccf':
Reduce PackageInstaller Binder memory pressure.
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
PackageInstaller.aidl
ackageInstaller.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
ackageInfo.java
ackageParser.java
6b7515dd0d70ad1b3149b1f38ef548a06a4d5cec 09-Oct-2014 Jeff Hao <jeffhao@google.com> Merge "Improve priority ordering of apps when performing boot dexopt." into lmp-mr1-dev
b424849533ac369c41a824510a8f3914f62ed2c6 09-Oct-2014 Jeff Sharkey <jsharkey@android.com> am b01a5ba2: am 562262cc: Merge "Bring along more ApplicationInfo fields." into lmp-dev

* commit 'b01a5ba2b7c1bc22e30d6cc16c30f8e1215701cd':
Bring along more ApplicationInfo fields.
272bf3a274daff62995caf05da338c1f2a73dae3 08-Oct-2014 Jeff Hao <jeffhao@google.com> Improve priority ordering of apps when performing boot dexopt.

Added core apps and updated system apps.

Bug: 17641843
Change-Id: Ia00ea3399cf1e1acaef45ff8df8f754442de5185
ackageInfo.java
ackageParser.java
7f1a57a3e709b9e1fdb03a7a8af5f13859f7f1ad 08-Oct-2014 Jeff Sharkey <jsharkey@android.com> Bring along more ApplicationInfo fields.

When we added scan paths, we forgot to bring them along through
Parcel and copy constructor.

Bug: 17900178
Change-Id: I0ee9374f909d375768045976fd88cee7431f7d4d
pplicationInfo.java
fcc059dcf0d84a77d9c2b5ef3b01c23afe25f72c 07-Oct-2014 Jeff Sharkey <jsharkey@android.com> am 1d5ef81e: am 99586dc0: Merge "Reduce PackageInstaller I/O pressure." into lmp-dev

* commit '1d5ef81e29279f769d79315f2a38e747ea92e10f':
Reduce PackageInstaller I/O pressure.
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
ackageInstaller.java
2f577e83cbd5b12e47178a90443390210b446102 06-Oct-2014 Dianne Hackborn <hackbod@google.com> am 90d557b7: am 7f7d240b: Merge "Fix issue #17752399: Multiple apps broken by GET_TASKS permission change" into lmp-dev

* commit '90d557b7a68e64e049a44560b76b959ef87f13d7':
Fix issue #17752399: Multiple apps broken by GET_TASKS permission change
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
PackageManager.aidl
ec2d48b96d1f95fb266914df294a27c210f8c3f5 01-Oct-2014 Benjamin Franz <bfranz@google.com> Introduce new API to get an unbadged icon and unbadge permissions.

Bug: 17125560
Change-Id: I61b884186c96cc54dcaf1d3c7ee8f47610fd1d21
ackageItemInfo.java
ackageManager.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
ackageParser.java
49c0e7375b237bc6eff8746ae91466ea6a660233 15-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Update API naming to follow style guide." into lmp-dev
de74231f245c90e5861ec84a9880b5b4ec247480 15-Sep-2014 Jeff Sharkey <jsharkey@android.com> Update API naming to follow style guide.

Bug: 17510755
Change-Id: If73d81b416355559592feb895a62132194f4ba62
ackageInstaller.java
1ec6888685e1dd172502ade6ce455ad938400e0e 12-Sep-2014 Ihab Awad <ihab@google.com> Add system feature for ConnectionService API support (1/3)

Bug: 17445268
Change-Id: Ibf52cb394f00d075afd07b883a91f00da84b3c85
ackageManager.java
1d653272a2847c0cda10482f70e991e7afdaee4b 12-Sep-2014 Amith Yamasani <yamasani@google.com> Rename and repurpose feature MANAGED_PROFILES to MANAGED_USERS

Bug: 17392243
Change-Id: I5ff0e70eeeeba264c96eaa2a17a6bd3669576c96
ackageManager.java
b6edee0dadba9ceef40601c4779332d6d3a21281 11-Sep-2014 Kenny Guy <kennyguy@google.com> Hide APIs renamed during API review of LauncherApps

Bug: 17390765
Change-Id: I79a979365005b13a2268b1cfe455241ae4fecb51
auncherApps.java
3969cabf5931059fcc4d36addb5b75ddf76ad1f3 12-Sep-2014 Craig Mautner <cmautner@google.com> Merge "If activity is an alias get maxRecents from target" into lmp-dev
8307ea701c8a06378bd31148bcbe4d312af2b31a 12-Sep-2014 Craig Mautner <cmautner@google.com> If activity is an alias get maxRecents from target

Activity aliases do not pick up values in the PackageParser. The
actual values should come from the target activity instead.

Also ActivityInfo now propagates maxRecents in copy constructor
and across Binder calls (via parcelling).

Fixes bug 17391328.

Change-Id: I35d248032eca7557528c9d499b3b38f27c713d09
ctivityInfo.java
ackageParser.java
e107c3eb79be40f1071c4370fd9a3f9e4fd6d6de 09-Sep-2014 Adam Connors <adamconnors@google.com> Remove package level intent forwarding.

Clean up unused methods.

Bug: 17389110
Change-Id: I8a80fe3e14219f06572de05c390cdda0efcbf5db
PackageManager.aidl
ackageManager.java
c90f95c79ddd930c3fba13352f15ce7666eca402 10-Sep-2014 Adam Connors <adamconnors@google.com> Merge "Add feature flags for verified boot and securely remove users." into lmp-dev
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
ackageParser.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
serInfo.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
ackageManager.java
8e3b4d41e3a70eef19e3928f6aca9b7e8712aa08 09-Sep-2014 Michael Wright <michaelwr@google.com> Merge "Add FEATURE_GAMEPAD." into lmp-dev
6faa6759cde497acbdf33cadbed74cd1c5e94471 06-Sep-2014 Michael Wright <michaelwr@google.com> Add FEATURE_GAMEPAD.

This allows micro-consoles or other devices to signify that there's a
game controller in the box, even if the user hasn't connected it.

Change-Id: Ie5e2cf69f777ebe84abb83f34c9ed63d9555deff
ackageManager.java
d9037a48c6a3537b90c72fce9845fae182be62db 08-Sep-2014 Kenny Guy <kennyguy@google.com> Merge "Renaming of LauncherApps apis" into lmp-dev
19ccb5fd759dc9284da32320ed1219bee3e031be 08-Sep-2014 Adam Connors <adamconnors@google.com> Add feature flags for verified boot and securely remove users.

Bug: 17405636
Change-Id: I5e81cf02f8b3d5b98957019c76844875b491181c
ackageManager.java
e016605981985b64cc28a8272474ae925801548b 08-Sep-2014 Jeff Sharkey <jsharkey@android.com> Merge "Delayed ASEC allocation, refine progress handling." into lmp-dev
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
ackageInstaller.java
66d557875dcb5955314dfadd0ee926ba90825982 07-Sep-2014 Dianne Hackborn <hackbod@google.com> Merge "Work on issue #17357238: Recents is often slow if not used in a while" into lmp-dev
68c936f77d836285c255e98b73bdadb78025ade9 07-Sep-2014 Unsuk Jung <unsuk@google.com> Merge "Add a hardware feature definition corresponding to audio output support." into lmp-dev
a4e102ee580282dc7abeb22f4a025813e53b9431 05-Sep-2014 Dianne Hackborn <hackbod@google.com> Work on issue #17357238: Recents is often slow if not used in a while

Add a new activity attribute, resumeWhilePausing, that allows an
activity specifying it to immediately start running without waiting
for the previous activity to pause. The recents activity is updated
to use this.

The implementation of this is ultimately fairly simple -- if we are
in the path of resuming such an activity, and find that we first need
to pause the existing activity, then within the activity manager we
do the regular pause flow but act like it has immediately finished
pausing right then so that we can immediately go on to the resume.
To make this clean, we tell the activity when asking it to pause that
it should not come back and tell us it is done, because we aren't in
any way waiting for it.

One potentially important change I needed to make here is the pause
callback no longer provides the saved persistent state, because we
now can't count on that callback happening. I don't think there was
really any utility in this anyway -- all modern apps will have their
save state flow happen as part of stopping, not pausing, so we'll
only capture that saved state when the stop is reported back anyway.
And since we do send the saved state back when stopping, it would
always blow away whatever we had gotten at the pause.

Finally, update the documentation for AppTask.startActivity(), and
fix the implementation handling that to be cleaner -- we need to
deal with inTask first before getting in to "oh noes add NEW_TASK
if this isn't coming from a calling activity" flow.

Change-Id: Ia1da0fac90d7bdbaafdda2e34850d795ce17a39f
ctivityInfo.java
ackageParser.java
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
PackageInstallerCallback.aidl
ackageInstaller.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
PackageInstaller.aidl
PackageInstallerCallback.aidl
ackageInstaller.java
c7d62f02b8acfd0a6b31f8544ec2c07e780fe4bb 05-Sep-2014 Svetoslav <svetoslavganov@google.com> Addressing API council comments for UserManager.

bug:17390424

Change-Id: I498d2541289915cb7db16e5c3249ccc7a7dc5ee6
auncherActivityInfo.java
ackageManager.java
10a574fbf3c786791b84078f41932f83ad3e34ff 26-Aug-2014 Kenny Guy <kennyguy@google.com> Renaming of LauncherApps apis

Bug: 17008230, 17390765
Change-Id: Id03aa5fab0a88e9ca6f8279fa4e6c5f7d356c541
auncherApps.java
50909f673268aaa477149d5db56379398f9a89db 03-Sep-2014 Unsuk Jung <unsuk@google.com> Add a hardware feature definition corresponding to audio output support.

Should also update/add xml files in platform/frameworks/native

Bug: 15318046

Change-Id: I5038ef38cd82977f257ec1499964d0bc291cbf59
ackageManager.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
PackageManager.aidl
c62f2e1bb76d3e7ff9e4504fdaa86cfa2ca849a3 29-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "FileBridge needs to keep strong reference to PFD." into lmp-dev
9a1507aa10577badabcbe00396613a967302e456 29-Aug-2014 Jeff Sharkey <jsharkey@android.com> FileBridge needs to keep strong reference to PFD.

Even though we've grabbed the underlying FD, the PFD could be GC'ed
and when finalized it would end up closing the underlying FD. This
fix ties the PFD object lifecycle to the returned OutputStream.

Bug: 17183379
Change-Id: Ibee8f4cf78fee357181a250d15f2a653294b2877
ackageInstaller.java
cfd861ec15fe96143c61948d396e747b221a7f9d 27-Aug-2014 Jae Seo <jaeseo@google.com> Add android.software.live_tv feature

This feature will be listed by Android TV devices that allow displaying
contents from TV inputs implemented with the
android.media.tv.TvInputService API. (Note that not all leanback devices
support this feature.)

Bug: 17284986
Change-Id: Ic1f23f6f5955866e9f1db9229693d370576066a3
ackageManager.java
852975d5377bfe5f4abc9d2a28e301aa2fa99994 23-Aug-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17179314: Make recents limits consistent

The max limit is now 100 (or 50 on svelte devices), and that is
what everyone used.

Re-arranged things so we have a big expensive "fix the world!"
function for recents that we go in to at only select points:
when first initializing the system, when external storage comes
and goes, and if we detect something wrong with the recents
structure.

With that, now getRecentTasks() and addRecentTaskLocked() are
generally much simpler, doing very little work in most cases.
This will help a lot with scaling up to many more recents
entries.

Change-Id: I7b5ae89edc06568f68c8af54a4420aff7635581c
ackageParser.java
264a5f5b34d8c1169e81da4136e263344115e02d 26-Aug-2014 Jeff Sharkey <jsharkey@android.com> Merge "Treat moving app as installing in new location." 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
PackageInstaller.aidl
ackageInstaller.java
51f6f52d9de011553bed9f624002b071f2b6c2f3 26-Aug-2014 Vinod Krishnan <vinodkrishnan@google.com> Merge "Fwk: Adding an ECG hardware feature" into lmp-dev
6b2416492e78b8f8d7bcff58cbd2015e9b0ef59c 25-Aug-2014 Adam Lesinski <adamlesinski@google.com> Merge "PM: Load all splits when parsing an app manifest" into lmp-dev
1ab7689ce8a4164a86cf472fa028d7b0f18f696f 20-Aug-2014 Vinod Krishnan <vinodkrishnan@google.com> Fwk: Adding an ECG hardware feature

Change-Id: I77e36b010a8ff0cce89a419b64a24f16d7e68caf
ackageManager.java
3bcbd906bcf76267d7413297b9748c2cac0f9b82 23-Aug-2014 Adam Lesinski <adamlesinski@google.com> PM: Load all splits when parsing an app manifest

Previously the base APK would be considered without
any splits loaded into the same AssetManager. This would
prevent splits from overriding attributes in the
AndroidManifest.xml, such as enabled state based on
version, etc.

This CL loads all APKs in the cluster into a common AssetManager
from which the base AndroidManifest.xml is parsed.

Bug:17006358
Change-Id: Ib88096c49d0c4f743b7e6ba0921251459bee107c
ackageParser.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
ackageInstaller.java
ackageParser.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
ackageInstaller.java
ackageParser.java
545de86fcaeaf10534d9bf9c3a5fe0abfeccba28 19-Aug-2014 Kenny Guy <kennyguy@google.com> Merge "First part of renaming methods in LauncherApps." into lmp-dev
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
ackageInstaller.java
6d248493878b1280e13be82e3e02a5ea42949555 24-Apr-2014 Nicolas Prévot <nprevot@google.com> Revert "Adding the requiredForProfile flag."

This reverts commit 531270a4a177a9f245d328d9467c6d1adbd5354a.

BUG: 17102702

Change-Id: Iec5d047dc74bd4899662ede82c48fc024238427c
ackageInfo.java
ackageParser.java
91306bccf16715f0867a10f3537122179527f7c3 16-Aug-2014 Adam Lesinski <adamlesinski@google.com> Merge "Add FeatureGroup to PackageInfo" into lmp-dev
d3edfde51bd069a63e820282421d1a534fcf00ce 09-Aug-2014 Adam Lesinski <adamlesinski@google.com> Add FeatureGroup to PackageInfo

FeatureGroups replace top-level FeatureInfo objects.
FeatureGroups inherit top-level FeatureInfos but override
them if the feature names are the same.

Bug:16822121

Change-Id: I80b2cb778a0fbcb4521efce986fba641e0914290
eatureGroupInfo.java
eatureInfo.java
ackageInfo.java
ackageManager.java
ackageParser.java
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
PackageInstaller.aidl
PackageInstallerSession.aidl
nstallSessionInfo.aidl
nstallSessionInfo.java
nstallSessionParams.aidl
nstallSessionParams.java
ackageInstaller.aidl
ackageInstaller.java
ackageInstallerParams.aidl
ackageManager.java
erificationParams.java
f939dbaf766bd81b10bfc44fd493647180eabad8 15-Aug-2014 Kenny Guy <kennyguy@google.com> First part of renaming methods in LauncherApps.

Added new versions of the APIs that need
renaming.

Bug: 17008230
Change-Id: Ic74d21115dd250082f6dbc45d1301635cc176cfc
auncherApps.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
PackageManager.aidl
eySet.aidl
eySet.java
ackageManager.java
e9b78fdbbef558f5e84f88397daf990dcc2e29cb 13-Aug-2014 Jeff Sharkey <jsharkey@android.com> Fix javadoc on PROTECTION_FLAG_APPOP.

Change-Id: I36e339ac2c6e6842441fd2572b0b8cda24bd34ca
ermissionInfo.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
ackageParser.java
6c0b9da65e36543bb50833d1b54ca532d0bd3aab 08-Aug-2014 Jeff Sharkey <jsharkey@android.com> Handle null IPackageDeleteObserver.

Bug: 16862614
Change-Id: I0c197a994b89d49123027f24fe46827c2b994ab6
ackageManager.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
ackageInstaller.java
ackageManager.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
PackageInstaller.aidl
nstallSessionInfo.java
ackageInstaller.java
ackageManager.java
0068d3dcf1f1a804554a1a09e3b173ac12651786 07-Aug-2014 Dianne Hackborn <hackbod@google.com> Fix issue @16555033: Battery history overflowing too much

- No longer track process starts/stops normally.
- Increase buffer size to 256KB.
- Buffer size increase requires reworking how battery stats
are retrieved, since it is going to be hitting IPC limits.
- Also, store the last full stats after a reset, to be reported
at the next checkin.
- Also, discharge and charge times are tagged with the screen
and battery save state during that time.

Change-Id: Ie108ac9b626846108a9bb858101ac2b93276ac16
PackageInstaller.aidl
65810072d6ad7c1c2a019cf37c3156e3971f491a 07-Aug-2014 Kenny Guy <kennyguy@google.com> Remove LauncherApps method left for compat.

Method was left while updating unbundled apps
which have now been updated.

Bug: 16864685
Change-Id: I687cb23a1b60b88eeb988f3cf2604dc24b739121
auncherApps.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
PackageDeleteObserver2.aidl
PackageInstallObserver2.aidl
PackageInstaller.aidl
PackageManager.aidl
ackageInstaller.java
c71c42fdb2ee54a419dc8eb0a5f4f82532b16c0c 06-Aug-2014 Svetoslav <svetoslavganov@google.com> Polish of the app widgets cross-profiles feature.

1. Added API for badging an arbitrary drawable at a given location.

2. Updated the icon and previewImage deprecation as they are no longer
returning a badged drawable. The methods to load the icon and the
preview are now just making it easier for a developer to get the
drawables.

3. Fixed a bug in AppWidgetServiceImpl leading to a crash when a user
is removed.

4. Fixed a bug in AppWidgetHost which was unnecessarily caching its
package name and having code paths where the cached value was not
populated when calling into the system.

bug:14991269

Change-Id: I50d011a6597d88814715d5ec04ee67815e8ce0bd
auncherActivityInfo.java
e41ce995a0c2c6b167ed64b51e34865c5d58ea4d 29-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Add hidden API for removing cross-profile package filters

Bug: 16646591
Change-Id: Iaf6837fe4390ac1018c49df366ea434776ed7244
PackageManager.aidl
ackageManager.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
PackageManager.aidl
ackageManager.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
ackageInstaller.java
a709314537164d959a18ee78768c69c4a9cb33c7 30-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Use the appropriate default icon

ComponentInfo subclasses and ApplicationInfo have different ways to retrieving
the default icon. Previously, in CL I2db300a69a08030eacc245ee91556f0443ba5878
we defaulted everything to the green Android. This makes sure that they get the
right default.

Bug: 16630068
Change-Id: Ifa499eac6f1543523d6ecf0831175bfd6b772edb
pplicationInfo.java
omponentInfo.java
ackageItemInfo.java
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
PackageInstallerCallback.aidl
PackageInstallerSession.aidl
nstallSessionInfo.java
nstallSessionParams.java
ackageInstaller.java
b42c89bfb0415d2a4b1d8b7247309f15fd348974 28-Jul-2014 Kenny Guy <kennyguy@google.com> Add optional handler to LauncherApps callback

Allow caller to pass in handler to LauncherApps
when adding a callback.
Stop apps adding callbacks twice.

Bug: 16401733
Change-Id: I2e192091c1b79acb905d899e96d6dacd45e561da
auncherApps.java
ad97b8b905bb6f0a30241bea27a56572068c39ab 30-Jul-2014 Amith Yamasani <yamasani@google.com> Potential fix for apps disappearing in launcher on system server crash

Throw RuntimeException to launcher if there was a RemoteException
from LauncherAppsService. This matches the behavior of previous
calls that were made to PackageManager that could have resulted
in a RemoteException if the system server was dying/dead.

Bug: 15687732
Change-Id: Ifda3fda209141b361a286fc033217acfa0ec196e
auncherApps.java
a71e3903e5d3f38795c443c052125faede9d9ec7 25-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Return a default icon from the package manager directly

Bug: 16369104
Change-Id: I2db300a69a08030eacc245ee91556f0443ba5878
ackageItemInfo.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
PackageManager.aidl
ackageManager.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
PackageManager.aidl
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
PackageInstaller.aidl
PackageInstallerCallback.aidl
PackageInstallerObserver.aidl
PackageInstallerSession.aidl
nstallSessionInfo.java
nstallSessionParams.java
ackageInstaller.java
ackageManager.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
LauncherApps.aidl
auncherApps.java
2c72b6822debb08fe997926eedc110f62d287d34 24-Jun-2014 Adam Lesinski <adamlesinski@google.com> Add <feature-group> tag and change aapt badging

A <feature-group> represents a set of features required
for an app to be compatible with a device. Multiple
<feature-group> elements represent a logical 'or'
of required features.

Features defined in the old way with <uses-feature> tags
under the <manifest> tag are automatically added to each
feature-group defined.

Defining a <feature-group> means that any default
features are not included (such as android.hardware.touchscreen)
and declared permissions do not imply any features.

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

Change-Id: I575ad7a3ceea59486ca601f69760b14f6269511d
PackageManager.aidl
ermissionInfo.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
pplicationInfo.java
PackageManager.aidl
ackageManager.java
ackageParser.java
ackageUserState.java
1716baa6d3f0691087a7d512fc289bd88babda1c 21-Jul-2014 Craig Mautner <cmautner@google.com> Merge "Rename flag and attribute per API council" into lmp-dev
7f72f53704cbee26dc2a0be429b8446b2493226c 21-Jul-2014 Craig Mautner <cmautner@google.com> Rename flag and attribute per API council

ActivityInfo.DO_NOT_PERSIST => PERSIST_NEVER.
android:persistableMode="doNotPersist" => "persistNever".

Fixes bug 16400594.

Change-Id: I94d25f7d2e3dc453b1251c89bce8c210a65dc331
ctivityInfo.java
7f51706265cab675ba139d2cfba5c01ce7dba077 18-Jul-2014 Jesse Hall <jessehall@google.com> Add FEATURE_OPENGLES_EXTENSION_PACK_ES31A

Bug: 15593761
Change-Id: Id1865cbf27c98a611cc6414fe47ee979c1d7cee2
ackageManager.java
7040e9f7fe3e5c9fbd0084eff01b4ce8ae1a16b1 17-Jul-2014 Eino-Ville Talvala <etalvala@google.com> Merge "Add PackageManager features for differentiating camera2 devices" into lmp-dev
611fecec08eb9efeb4393b986d590369df5c812f 11-Jul-2014 Eino-Ville Talvala <etalvala@google.com> Add PackageManager features for differentiating camera2 devices

Also rename DNG capability to RAW.

Bug: 15415688
Change-Id: I1ea9f65b03c4fa06a5004f9d1d485935742001c8
ackageManager.java
7df3625d5bb28d11cce9ac23429f5e3c6ebac030 16-Jan-2014 Martin Kosiba <mkosiba@google.com> Allow for appending of resources to an AssetManager.

BUG: 11505352
Change-Id: Ifa290580a6dc63c2f471d0bbf5f066db14aed4d7
ackageParser.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
PackageManager.aidl
ackageParser.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
pplicationInfo.java
f7cecf8f4bd7e34c8c49ca8816ffe3966195b6da 16-Jul-2014 Andrew Solovay <asolovay@google.com> am c8fcb3bc: am 57553775: am 63477e67: Merge "cherrypick from klp-docs docs: Corrected doc for getLaunchIntentForPackage(). Change-Id: I2eab0956eaedac71289e19a3618a3553908f8c38" into klp-modular-docs

* commit 'c8fcb3bcdb71fe16624bea146a67b13c150adb82':
cherrypick from klp-docs docs: Corrected doc for getLaunchIntentForPackage(). Change-Id: I2eab0956eaedac71289e19a3618a3553908f8c38
c8fcb3bcdb71fe16624bea146a67b13c150adb82 16-Jul-2014 Andrew Solovay <asolovay@google.com> am 57553775: am 63477e67: Merge "cherrypick from klp-docs docs: Corrected doc for getLaunchIntentForPackage(). Change-Id: I2eab0956eaedac71289e19a3618a3553908f8c38" into klp-modular-docs

* commit '575537759222e0277c3979e33342407aa7ca1a78':
cherrypick from klp-docs docs: Corrected doc for getLaunchIntentForPackage(). Change-Id: I2eab0956eaedac71289e19a3618a3553908f8c38
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
ackageParser.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
ackageInfo.java
ackageInstaller.java
ackageParser.java
5ae13354773911f2c1567332a846020ff93390e3 06-Jun-2014 Andrew Solovay <asolovay@google.com> cherrypick from klp-docs docs: Corrected doc for getLaunchIntentForPackage(). Change-Id: I2eab0956eaedac71289e19a3618a3553908f8c38

Doc had inaccurately said that getLaunchIntentForPackage() throws an
exception if the package name is not recognized; in fact, it returns
null. Also cleaned up some style issues for that Javadoc item.

Doc is staged to:

http://asolovay.mtv:9655/reference/android/content/pm/PackageManager.html#getLaunchIntentForPackage(java.lang.String)

Bug: 15022655
Original SHA1: I2eab0956eaedac71289e19a3618a3553908f8c38

Change-Id: Ief8dfaac248ba03779c6f13237aff9b26d362fd9
ackageManager.java
a8755a8407d1583425cd9e69fb580bba26a66041 15-Jul-2014 Narayan Kamath <narayan@google.com> Fix multiArch parsing for ApkLite.

Two separate issues :
- We were not parcelling the value at all.
- We were looking for it in the wrong manifest attribute.

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

Change-Id: I54c3efcf8f57e6970f8fbde8cd1f57d487b13114
ackageInfoLite.java
ackageParser.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
nstallSessionInfo.java
nstallSessionParams.java
ackageInfo.java
ackageInstaller.java
ackageManager.java
ackageParser.java
8b674abf4d83db29ae1e7488dbdb520edf970e67 15-Jul-2014 Aravind Akella <aakella@google.com> Merge "Add PackageManager feature strings for relative humidity and temperature sensors." 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
PackageManager.aidl
eySet.java
ackageManager.java
8b8e74bd74e5a4bc4316d4bf0fc84cb46106e3ab 09-Jul-2014 Aravind Akella <aakella@google.com> Add PackageManager feature strings for relative humidity and temperature sensors.

Change-Id: I56351f37f1c51517a3384b6040df0ed2be0c95b0
ackageManager.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
PackageInstallerSession.aidl
nstallSessionParams.java
ackageInstaller.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
ackageParser.java
9726eeb2b01a0e5a3d52139f3bc48d4690af1ea9 12-Jul-2014 dcashman <dcashman@google.com> Merge "Revert "Initial KeySet API.""
5de7377feca5242fe7127e2d4dc7792d4886d365 12-Jul-2014 dcashman <dcashman@google.com> Revert "Initial KeySet API."

This reverts commit 9a643fe02bc960e266484547dda5572b094a4c72.
PackageManager.aidl
eySet.java
ackageManager.java
405912bce074e9e59a246e2357a108e50dffabf8 09-Jun-2014 dcashman <dcashman@google.com> Initial KeySet API.

Bug: 6967056
Change-Id: I47a01bd5dc25591cc70f58f38920ad0a021094ae
PackageManager.aidl
eySet.java
ackageManager.java
d2794789c8ddcdb5876bb7c609438aac6edd2bfe 12-Jul-2014 dcashman <dcashman@google.com> Merge "Initial KeySet API."
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
PackageInstallObserver2.aidl
PackageInstaller.aidl
PackageInstallerObserver.aidl
nstallSessionInfo.aidl
nstallSessionInfo.java
nstallSessionParams.aidl
nstallSessionParams.java
ackageInstaller.java
ackageInstallerParams.java
ackageManager.java
a0c4a06ba336df1c1775d3918f20ba14b4607052 10-Jul-2014 Yuncheol Heo <ycheo@google.com> Add the system feature for HDMI-CEC.

Change-Id: I2a985cedf49d50649c89f2ac5fbb80a81300156d
ackageManager.java
8219a25e31b52c701e45ebae82219c64ea18134b 11-Jul-2014 Kenny Guy <kennyguy@google.com> Merge "Enforce block uninstall in PackageManager"
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
pplicationInfo.java
ackageParser.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
ackageParser.java
1b88da54a684cf12f36b74bbc7c9548f35180fbe 10-Jul-2014 Kenny Guy <kennyguy@google.com> Enforce block uninstall in PackageManager

Bug: 14127299
Change-Id: I144233b97e5774f6a5d1d2b49f3f0f8a360557ac
ackageManager.java
bc99305dae000d36f367378b0f88c81b8d82ba91 10-Jul-2014 Kenny Guy <kennyguy@google.com> Merge "Remove old listeners from LauncherApps."
44b6dee70eb2dfb7e26aeec9b2640d64e4f7d199 10-Jul-2014 Kenny Guy <kennyguy@google.com> Remove old listeners from LauncherApps.

Removed functions kept to support
transition from old api names to new.
Fix bug with attempting to remove from
listeners rather than callbacks list.

Bug: 15518265
Change-Id: Ief08a6bd8289608875c1cbf5af9a4389c6e9adfd
auncherApps.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
pplicationInfo.java
ackageInfoLite.java
ackageParser.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
PackageInstaller.aidl
ackageInstaller.java
ackageInstallerParams.java
ackageParser.java
ignature.java
404b8578c54c38d3658287030ae06c8221349534 09-Jul-2014 Narayan Kamath <narayan@google.com> Merge "Add manifest attribute for multiArch apps."
589a1bc0b00e570db079b4b157f60229ad8ef8f9 03-Jul-2014 Narayan Kamath <narayan@google.com> Add manifest attribute for multiArch apps.

bug: 16013931
Change-Id: Ie8b01d364eed0846deeddf11e0d6e4cc1fba3e61
pplicationInfo.java
ackageParser.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
pplicationInfo.java
ackageParser.java
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
PackageManager.aidl
4bb015d90ae2aa3ce30778f3f584e0b7124f7505 05-Jul-2014 Joe LaPenna <jlapenna@google.com> CW on Master: Disable CaptivePortalTracker, EthernetService

BUG: 15143878

Change-Id: I6c534a28c1fcd475982ae70e7f3af69f3a219e24
ackageManager.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
ackageParser.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
ackageParser.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
PackageManager.aidl
ackageManager.java
ackageUserState.java
7482a8d08ea1270c8411ecd634eaf7c2a0fda7ee 17-Jun-2014 Marcin Kosiba <mkosiba@google.com> Preload the WebView package into all applications.

This is a temporary workaround to allow the WebView to move into
an APK.

BUG: 11505352
Change-Id: I0c446d44c3f94f70bced7f471ae6fb74f65d5ff9
ackageParser.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
pplicationInfo.java
ackageParser.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
ackageParser.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
ackageItemInfo.java
ackageManager.java
esolveInfo.java
0363c3eb089afd4474bfd6ae6ee8a500d6e97614 23-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Expose per-user APIs for content services.

Bug: 15466880
Change-Id: Ib5a030e78559307627fe0d2e80ce6f1a7825109d
ackageManager.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
ackageManager.java
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
ackageManager.java
esolveInfo.java
aeb0ed74670e0502a04b689fe1b4fe0f537f4a91 23-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Merge "Adds cross-profile intent filters for the Settings app"
9d4e9bcebbd97ad51daa0ef15cfba5aabb399bbb 19-Jun-2014 Craig Mautner <cmautner@google.com> Allow a root activity to relinquish task identity

If a an acitivty with attribute android:relinquishTaskIdentity true
is the root activity of a task then the intent of that task will
be that of the first activity in the stack with
android:relinquishTaskIdentity set false.

The ability to set intent also includes the ability to set the
TaskDescription of the task.

Fixes bug 15675610.
Fixes bug 10428661.

Change-Id: Ib28a9eae3b9832eeeef9106adbebe344184ee5ae
ctivityInfo.java
ackageParser.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
ackageManager.java
ackageParser.java
6e2ae2590ded39f04f76d5ddca0f06fe01586e26 12-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Adds cross-profile intent filters for the Settings app

Bug: 15466742
Change-Id: Id9af588f2f3d51a562ef2a06fe7404c96123cc2e
PackageManager.aidl
ackageManager.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
ackageManager.java
ackageParser.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
PackageManager.aidl
ackageManager.java
9c46e06478ddd821c9172c77f48fa7f64a870ad0 19-Jun-2014 Christopher Tate <ctate@google.com> Merge "Introduce <application> attribute android:fullBackupOnly={boolean}"
d1de2567c6758e81a87c0f5eff9ff53ffebab134 18-Jun-2014 Christopher Tate <ctate@google.com> Introduce <application> attribute android:fullBackupOnly={boolean}

It is quite possible for an application to be happy with having the OS
save full-data archives of its data, but still need to selectively
filter the set of saved files or otherwise participate in full-data
backup and restore. In general we assume that any app which provides
a backup agent implementation will be directly participating via the
incremental key/value backup API; this new attribute allows an app
to tell the OS "perform full-data backup/restore for me even though
I am supplying my own agent implementation to participate."

Change-Id: I810c50d44aa683b1f23604b7d1f3e96a1722103a
pplicationInfo.java
ackageParser.java
c6543afd6b94671c99bd7a934da010918a015286 18-Jun-2014 Kenny Guy <kennyguy@google.com> Merge "Update API for launcher apps to use abstract class."
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
pplicationInfo.java
nstrumentationInfo.java
f62d690b00c3808496e6a5c35f3942c78fbb15d5 18-Jun-2014 Craig Mautner <cmautner@google.com> Merge "Fix persistent tasks and expand scope"
43e52ed32e2d55ef4aee18c4b4bc13b7fdef9cc4 17-Jun-2014 Craig Mautner <cmautner@google.com> Fix persistent tasks and expand scope

- Fixed missing tag closure on the xml for storing Intent categories.
- Shortened timeout for flushing tasks to persistent storage from
one minute to ten seconds.
- Made persistency the default except for those tasks on the home
stack and those tasks that exclude themselves from the recent task
list.
- Fixed deletion of tasks after restoring. Tasks now survive a second
reboot, not just the first reboot.
- Fixed sort order so most recent tasks will be restored at front.

Fixes bug 15672002.

Change-Id: I16d87d58c6fd2e879cfd0c0b18b2694432a79b71
ctivityInfo.java
ackageParser.java
c0154537b0b7926ce6a3c778597b3c2735ca5497 16-Jun-2014 Kenny Guy <kennyguy@google.com> Update API for launcher apps to use abstract class.

Leaving old API behind until unbundled launcher
has been updated.

Bug: 15518265
Change-Id: Ic26878224df51093d7d08651adda08f760b405be
auncherApps.java
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
ackageManager.java
ackageParser.java
76f7e7ee20866c41b73f60d2195f34d9b8c542b3 13-Jun-2014 Amith Yamasani <yamasani@google.com> am 54b3006b: Merge "Undo some API changes that affect third party launcher writers" into lmp-preview-dev

* commit '54b3006b6340a2a311acb8f70d4602506e63b1ae':
Undo some API changes that affect third party launcher writers
992fdbeff296670e62078dd0c3d3b2b9bb2c95ec 12-Jun-2014 Amith Yamasani <yamasani@google.com> Undo some API changes that affect third party launcher writers

Remove hidden interface methods that were added temporarily for
launcher compatibility. These cannot be implemented by third parties
if they're hidden from the SDK.

Bug: 15574383
Change-Id: I976256da4278b7077f8d357e971e8cadb4d2d686
auncherApps.java
7683baad6c437af2931020423bf227f97a3ce0ba 10-Jun-2014 Craig Mautner <cmautner@google.com> am a7c5791a: Merge "Redefine FLAG_ACTIVITY_NEW_DOCUMENT without NEW_TASK" into lmp-preview-dev

* commit 'a7c5791a95bf732c2381f698d78930ee61efd36b':
Redefine FLAG_ACTIVITY_NEW_DOCUMENT without NEW_TASK
df8e542a8a638c18074221f47c4e4afcd3502810 10-Jun-2014 Craig Mautner <cmautner@google.com> Merge "Redefine FLAG_ACTIVITY_NEW_DOCUMENT without NEW_TASK" into lmp-preview-dev
f357c0ca514d73273a18b3896e565b2272e608ad 09-Jun-2014 Craig Mautner <cmautner@google.com> Redefine FLAG_ACTIVITY_NEW_DOCUMENT without NEW_TASK

Change definition of FLAG_ACTIVITY_NEW_DOCUMENT from
FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET to
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET alone.

Also add new documentLaunchMode of "never" to allow activity
writers to keep their activity from being launched in document mode.

Fixes bug 15468528.

Change-Id: Ied11adf97e85c5d3f99f4c0bbbb4a2905dcfb24e
ctivityInfo.java
5c507c1371d273cdff61d2395d47bd54fa26d614 06-Jun-2014 Jeff Brown <jeffbrown@google.com> Rename PrivateApi annotation to SystemApi. (DO NOT MERGE)

Change-Id: I97b473884f81ad375d0733e4766afe091dfdd854
ontainerEncryptionParams.java
anifestDigest.java
ackageManager.java
89b3b4a0b214eea12a5f48b61a021103cdc5c10e 05-Jun-2014 Adam Connors <adamconnors@google.com> API Review: rename FEATURE_MANAGEDPROFILES

To be FEATURE_MANAGED_PROFILES

Bug: 15025371
Change-Id: I2f818b4d8488fe7943fe5ff6051d6b1f84ca9e8c
(cherry picked from commit 687efd6f5c05dc1e4a9c284bf3edae901af45942)
ackageManager.java
82b3201a95063a1fe51842417c444c0dfd8cf780 07-Jun-2014 Nick Kralevich <nnk@google.com> resolved conflicts for merge of 13ed83ee to master

Change-Id: Ia3739cfa7af60e6a47bf94d403df190f3f2cd082
d5a5b5a547462f3e7c6315a501909bce2418ba86 06-Jun-2014 Jeff Brown <jeffbrown@google.com> Rename PrivateApi annotation to SystemApi.

Change-Id: I97b473884f81ad375d0733e4766afe091dfdd854
ontainerEncryptionParams.java
anifestDigest.java
ackageManager.java
ffcfcaadfefec2fb56f67a0a614a54bf4599d62b 05-Jun-2014 Craig Mautner <cmautner@google.com> Implement maxRecents and fix TaskPersister bug

Activities can now set the maximum number of times that they will
appear in the recent task lists when using DocCentric mode. The
default number is 15, the min 1, and the max 100.

Also a bug in TaskPersister that deleted files because it did not
properly parse their task ids is fixed.

Fixes bug 13736052.

Change-Id: I7ccb4e6f89d6202ff31c8577bb7b9d8d1b7e5e8d
ctivityInfo.java
ackageParser.java
7283f963d30c2cc9694e1a1a178641ac40dd3a07 05-Jun-2014 Adam Connors <adamconnors@google.com> Merge "API Review: rename FEATURE_MANAGEDPROFILES"
551c0789bcc6e2fe428d848f5845e6b939f81c47 05-Jun-2014 Adam Connors <adamconnors@google.com> API Review: rename FEATURE_MANAGEDPROFILES

To be FEATURE_MANAGED_PROFILES

Bug: 15025371
Change-Id: I2f818b4d8488fe7943fe5ff6051d6b1f84ca9e8c
ackageManager.java
a2d1454133405f5a031d5838a68159106f719720 05-Jun-2014 Elliott Hughes <enh@google.com> am ef3aeeca: am 38a5a257: am 759a8978: Merge "Minor javadoc improvements for PackageManager."

* commit 'ef3aeecacd4c47f6baeb96d06d69aad1ca4bcb1a':
Minor javadoc improvements for PackageManager.
ef3aeecacd4c47f6baeb96d06d69aad1ca4bcb1a 05-Jun-2014 Elliott Hughes <enh@google.com> am 38a5a257: am 759a8978: Merge "Minor javadoc improvements for PackageManager."

* commit '38a5a257a9aaf85606eb7117d943a877dc7d3c93':
Minor javadoc improvements for PackageManager.
dde24269c1eecb3ade2f625f4777492d4ef71526 04-Jun-2014 Amaury Medeiros <amaurymedeiros@gmail.com> Minor javadoc improvements for PackageManager.

- Removed duplicated use of the word "the".
- Changed @return and @param explanation of getApplicationEnabledSetting,
which should get the enabled state of an application and not just one component.

Change-Id: Ide07ec84ceb5b9b5caa28efa9ba838a40ee7b514
Signed-off-by: Amaury Medeiros <amaurymedeiros@gmail.com>
ackageManager.java
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
PackageManager.aidl
6431d11cd420536aaa9d93ae510a3151ccc4df1d 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.

Change-Id: Icb1528c0cd35b1aa9323386cb35ff4aaba374fcb
PackageManager.aidl
de8f11654f10cf9e7d6285a26680dda3ac757b5e 30-May-2014 Amith Yamasani <yamasani@google.com> am 651fcf79: Merge "Tweak LauncherApps API based on feedback" into lmp-preview-dev

* commit '651fcf798faf62f95bafaf3f1aaa1f05358254a2':
Tweak LauncherApps API based on feedback
e781c81d3394642583d555e7a5d6f6f8f63bc538 29-May-2014 Amith Yamasani <yamasani@google.com> Tweak LauncherApps API based on feedback

UserHandle must be after packageName/componentName.
Improved javadoc for density.
Added getApplicationInfo().
Remove synchronized methods.

Temporarily @hide the old APIs to make sure they continue to work
for unbundled launchers.

Bug: 15025908
Change-Id: Iee6336b54e1b4d5c43f1e643062327ff463cb695
auncherActivityInfo.java
auncherApps.java
4b9d79c30eccb61645d98a4f0d49b7769e8c7ccc 22-May-2014 Amith Yamasani <yamasani@google.com> Fix singleUser attribute

Make it work correctly for singleton content providers.
Relax which apps can export singleton content providers.

Change-Id: I43d315c25ed76a876bfa6d5e0d1351bc19c9bdba
ackageParser.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
PackageManager.aidl
ackageManager.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
ackageInstaller.java
f564c7fe86d2aa9a7622667771d9e4bbf5518ffa 20-May-2014 Ben Murdoch <benm@google.com> resolved conflicts for merge of ecf09321 to master

Change-Id: I7a440204dfc79f3b82bd95d3d1276158bf3d44a2
ecf09321c5604558b159057e430b7faf7e6a7352 20-May-2014 Ben Murdoch <benm@google.com> am e0d6a6b0: Merge "Add PackagManager flag for WebView system feature." into klp-modular-dev

* commit 'e0d6a6b05b0861a5aa6dd8189de61a4da8d39dae':
Add PackagManager flag for WebView system feature.
422c7a5834b4e0f1bbf56d00fb824c9bbbd3ead4 16-May-2014 Ben Murdoch <benm@google.com> Add PackagManager flag for WebView system feature.

Add a flag for PackageManager.hasSystemFeature to determine
if a functional webview is available on the device.

Bug: 13438487

Change-Id: I770f7e924b3e5fa6be0397904acf18c9306096e4
ackageManager.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.
6e35a2ad05864e7dec5526d11c007efeec252706 30-Apr-2014 Narayan Kamath <narayan@google.com> Remove "required" prefix from ABI fields.

As per a comment on an earlier code review.

(cherry-picked from commit a9d64733421d6765eab5c2730fa912f068e26047)

Change-Id: I064cffc13c323b721f3a16c83e0e95ee348ef9f6
pplicationInfo.java
1e74c37f8e1acb595f407e0f65744bb6b00c9314 15-May-2014 Narayan Kamath <narayan@google.com> Merge "Remove "required" prefix from ABI fields."
8b0cfb7dbde6f19a5dd5879fef3d16576f2eeba4 15-May-2014 Jeff Sharkey <jsharkey@android.com> Binder interfaces mean we can't use @PrivateApi.

Change-Id: Ie6d516b9ef8b7874160634b3b7b70d19481d1605
ackageManager.java
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
ontainerEncryptionParams.java
PackageInstallObserver2.aidl
PackageInstaller.aidl
PackageInstallerSession.aidl
PackageManager.aidl
ackageInstaller.java
ackageInstallerParams.aidl
ackageInstallerParams.java
ackageManager.java
ackageParser.java
ignature.java
erificationParams.java
89b77cded638cab56a002c28da4d09f144f7c6cb 01-May-2014 Jeff Sharkey <jsharkey@android.com> Mark hidden PM APIs that bundled apps depend on.

Change-Id: I18f2561ee65888fee08c61babc956bb8c3285366
ontainerEncryptionParams.java
anifestDigest.java
ackageManager.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
pplicationInfo.java
82c93357d0b61a6e12dcfc5eee1101968b8cba22 12-May-2014 Tim Kilbourn <tkilbourn@google.com> am 05c581ac: Merge "DO NOT MERGE Hide more leanback stuff." into klp-modular-dev

* commit '05c581ac4d6f44263891eae94a41a3841634d89c':
DO NOT MERGE Hide more leanback stuff.
0ff8f796d968a45d26038e3a08ba9785f985a1ec 12-May-2014 Tim Kilbourn <tkilbourn@google.com> am d6fc5115: Merge "DO NOT MERGE Hide leanback packagemanager apis." into klp-modular-dev

* commit 'd6fc5115a656f9d06dd1d455f8bedd5f5eca943b':
DO NOT MERGE Hide leanback packagemanager apis.
05c581ac4d6f44263891eae94a41a3841634d89c 12-May-2014 Tim Kilbourn <tkilbourn@google.com> Merge "DO NOT MERGE Hide more leanback stuff." into klp-modular-dev
d6fc5115a656f9d06dd1d455f8bedd5f5eca943b 12-May-2014 Tim Kilbourn <tkilbourn@google.com> Merge "DO NOT MERGE Hide leanback packagemanager apis." into klp-modular-dev
8bfb3513ee8f0bd6ccd98f347a4cbdf99de703a1 09-May-2014 Eino-Ville Talvala <etalvala@google.com> am 1caeb10a: DO NOT MERGE: Add android.hardware.camera.external feature.

* commit '1caeb10a7a288d937195d925c52f441f454cbc9a':
DO NOT MERGE: Add android.hardware.camera.external feature.
1caeb10a7a288d937195d925c52f441f454cbc9a 08-May-2014 Eino-Ville Talvala <etalvala@google.com> DO NOT MERGE: Add android.hardware.camera.external feature.

This feature will be listed by Android devices that allow for an
external camera to be connected to it. Such camera devices may
not always be available or connected.

Also clarify that android.hardware.camera.any also encompasses
devices that list android.hardware.camera.external.

Change-Id: I57497758877e4286c1f0116961731d483b56808f
ackageManager.java
2e58d6de062fc48ad2a032d90d4956cf8041a894 08-May-2014 Eino-Ville Talvala <etalvala@google.com> Merge "Add android.hardware.camera.external feature."
9131da28e17856fa583d42ea23da211f7689487f 08-May-2014 Eino-Ville Talvala <etalvala@google.com> Add android.hardware.camera.external feature.

This feature will be listed by Android devices that allow for an
external camera to be connected to it. Such camera devices may
not always be available or connected.

Also clarify that android.hardware.camera.any also encompasses
devices that list android.hardware.camera.external.

Change-Id: I57497758877e4286c1f0116961731d483b56808f
ackageManager.java
7d3387bc13427b61708d5a39fc4f626ee869ecdc 08-May-2014 Vinod Krishnan <vinodkrishnan@google.com> am 03498d34: am b9d71fa1: Merge "Adding a HeartRate Feature" into klp-modular-dev

* commit '03498d349ae3aa5e429e999b97036d194981373f':
Adding a HeartRate Feature
03498d349ae3aa5e429e999b97036d194981373f 07-May-2014 Vinod Krishnan <vinodkrishnan@google.com> am b9d71fa1: Merge "Adding a HeartRate Feature" into klp-modular-dev

* commit 'b9d71fa1081dc318a811b60660009d0769c02971':
Adding a HeartRate Feature
6422abef786632e53337c6c298ffa64f7ddf4d90 07-May-2014 Brian Carlstrom <bdc@google.com> resolved conflicts for merge of 3bbef521 to master

Change-Id: I0bbb7c80f6c4f003779da784475d7acbfb898c94
3bbef521d4b07f86010ba0729a36ff8b73bcb0ac 07-May-2014 Brian Carlstrom <bdc@google.com> resolved conflicts for merge of f2db00fd to klp-modular-dev-plus-aosp

Change-Id: I745164033962f6222832f8f19fa316a2e2634fd0
2dac05617952e1341f9c522e4c05936d7ef07399 06-May-2014 Craig Mautner <cmautner@google.com> Add attributes and flags for DocCentric.

Add Intent flag and attribute for auto removal of task from recents
once task completes.

Add manifest attribute for auto launching into doccentric. Equivalent
to Intent.FLAG_ACTIVITY_NEW_DOCUMENT.

Fixes bug 14586473.

Change-Id: I04acc9333c3725b4db94a954358eb78df507ff53
ctivityInfo.java
ackageParser.java
7c433b3d9c7ca4486f392bb82f56251c69ba6cf4 07-May-2014 Tim Kilbourn <tkilbourn@google.com> DO NOT MERGE Hide more leanback stuff.

- leanback intent category
- FLAG_IS_GAME

Bug: 14116162
Change-Id: I5665dda4c47e24a06707df4989ee117b4e91c246
pplicationInfo.java
ff1ec4d9e7b7eb1b6303d147c796f8767ee6715b 17-Mar-2014 Brian Carlstrom <bdc@google.com> Use package usage information to decide what dex files to optimize in PackageManagerService

Change-Id: Iac137311e2e9d5139b5aa8651c6f3d296802612a
ackageParser.java
eeeacab5d52dea25adcc5d3e40b5afe7dfa105de 06-May-2014 Tim Kilbourn <tkilbourn@google.com> DO NOT MERGE Hide leanback packagemanager apis.

Bug: 14116162
Change-Id: I410d720013ba4e2bc1b0f8a6973daba5ca9008c6
ackageManager.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
ackageManager.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
PackageManager.aidl
8afb23cbf6506008d7724197d881979d8c29f17b 30-Apr-2014 Vinod Krishnan <vinodkrishnan@google.com> Adding a HeartRate Feature

Bug: 14140142

Change-Id: I080bf12995355eac7621ef46e1a4a64d1f865500
ackageManager.java
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
serInfo.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
PackageManager.aidl
7e5264ced758107d83da88d6e476d16028b3cc71 30-Apr-2014 Kenny Guy <kennyguy@google.com> Merge "Extend LauncherApps service to expose enabled state."
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
LauncherApps.aidl
auncherApps.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
ackageParser.java
ignature.java
0150b48c4c4876a90b74826f864a4d864921166e 26-Apr-2014 Amith Yamasani <yamasani@google.com> Merge "Handle density request in LauncherActivityInfo"
30acde7e90105d15b1639a24db3f9978e664dded 26-Apr-2014 Amith Yamasani <yamasani@google.com> Handle density request in LauncherActivityInfo

Change-Id: I4e8dc8ef1454b3881bdb80ae118e2d0d306642f3
auncherActivityInfo.java
86a6430e526efc9656c539f9d7e5dea34219ef44 25-Apr-2014 Kenny Guy <kennyguy@google.com> Provide access to ActivityInfo.name from LauncherActivityInfo

Change-Id: Ia34900f3e232b59f3879dbb3cb3131498023b8ac
auncherActivityInfo.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
PackageManager.aidl
ackageManager.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
ackageParser.java
d2cc56ebb38b0b9e792e81ba9db8148a3a4b72f6 24-Apr-2014 Craig Mautner <cmautner@google.com> resolved conflicts for merge of f8a58208 to master

Conflicts:
core/java/android/content/pm/PackageParser.java
core/res/res/values/attrs_manifest.xml
core/res/res/values/public.xml

Change-Id: I747772e9dbc7ee1cf8993e574de4b3215f6833b2
f8a5820817eb59e0fe16e3ce0f10bb3dca090192 24-Apr-2014 Craig Mautner <cmautner@google.com> am 03981a4c: Merge "Add activity attribute allowEmbedded" into klp-modular-dev

* commit '03981a4c2e9689197e4d2c916c07ae16207b5276':
Add activity attribute allowEmbedded
ffd14a13ce7425562777152256ea7760d95f254d 24-Apr-2014 Craig Mautner <cmautner@google.com> Add activity attribute allowEmbedded

Activitys without allowEmbedded=true may not be launched in an ActivityView.

Fixes bug 13693121.

Change-Id: I431d554300fc3504ab1bc7d73a58d5dad24f8639
ctivityInfo.java
ackageParser.java
3014733c8c10de1875de98922e03698416f94e7a 15-Apr-2014 Christopher Tate <ctate@google.com> Don't crash if a null key is passed for verification/parsing

Change-Id: I77c496d9d86d2831a4166a924afe1493aa0ac0ce
ackageParser.java
68b9d97593d2ec79892813ab06f1b89c41de64b0 11-Apr-2014 Jose Lima <joselima@google.com> am 9e99cab7: am 970417c7: Added getLeanbackLaunchIntentForPackage()

* commit '9e99cab7d9a0ec2315140c21bb1958eb7ff76a09':
Added getLeanbackLaunchIntentForPackage()
9e99cab7d9a0ec2315140c21bb1958eb7ff76a09 11-Apr-2014 Jose Lima <joselima@google.com> am 970417c7: Added getLeanbackLaunchIntentForPackage()

* commit '970417c7d3e33ccbd6918e28d9bc5da24651f5b3':
Added getLeanbackLaunchIntentForPackage()
970417c7d3e33ccbd6918e28d9bc5da24651f5b3 10-Apr-2014 Jose Lima <joselima@google.com> Added getLeanbackLaunchIntentForPackage()

Change-Id: I23be3bfa59be812a915adc37e08fdf59be8ad90f
ackageManager.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.
ff0c470833b2cb4130a30895093630242d5f238d 01-Apr-2014 Ramin Zaghi <ramin.zaghi@arm.com> System services detect and register app CPU ABIs

This patch uses the NativeLibraryHelper class to
match native libraries in an .apk package with
those listed in 'ro.cpu.abilist' property.
The result is stored in packages.xml and the
ApplicationInfo class.

This information will be used by the ActivityManager
to decide which zygote to use to launch the given
app.

Change-Id: I3ec3d050996d8f4621f286ca331b9ad47ea26fa0
pplicationInfo.java
1378aba7aeeb7f6dd6cc2503968ba7b0e58d9333 28-Feb-2014 Ramin Zaghi <ramin.zaghi@arm.com> Re-implement native library search and copies.

We now use a two step approach :

- First we look through the list of shared libraries in an
APK, and choose an ABI based on the (priority) list of ABIs
a given device supports.
- Then we look through the list of shared libraries and copy
all shared libraries that match the ABI we've selected.

This fixes a long-standing bug where we would sometimes copy
a mixture of different ABIs to the device, and also allows us
to clearly pick an ABI to run an app with.

The code in NativeLibraryHelper has been refactored so that all
file name validation & matching logic is done in a single place
(NativeLibrariesIterator). This allows us to avoid a lot of
redundant logic and straightens out a few corner cases (for eg.
where the abi determination & copying logic do not agree on
what files to skip).

bug: https://code.google.com/p/android/issues/detail?id=65053
bug: 13647418

Change-Id: I34d08353f24115b0f6b800a7eda3ac427fa25fef
Co-Authored-By: Zhenghua Wang <zhenghua.wang0923@gmail.com>
Co-Authored-By: Ramin Zaghi <ramin.zaghi@arm.com>
Co-Authored-By: Narayan Kamath <narayan@google.com>
ackageManager.java
5abdbb656063160ff8df2306bd01feba0714d4c1 09-Apr-2014 Amith Yamasani <yamasani@google.com> Avoid security exception when requesting badging

When requesting badged icons, use APIs that don't require the caller
to have MANAGE_USERS permission.

Change-Id: I218cdf5194f38f4affa1874a6fcb43a040ed5295
auncherApps.java
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
LauncherApps.aidl
OnAppsChangedListener.aidl
auncherActivityInfo.java
auncherApps.java
d423986e68d76958441c3bec1584a86f7f390988 04-Apr-2014 Adam Connors <adamconnors@google.com> Merge "Add android.software.managedprofiles feature flag."
4cfa8dc77ad0d74b214477ba5be28632fb3ff031 03-Apr-2014 Craig Mautner <cmautner@google.com> Add the persistable attribute for Activities

This is used for documents to allow them to be persisted across
reboots.

Fixes bug 13735406.

Change-Id: I5655ac99589d58ed5716429cf7a1ffeee677aee1
ctivityInfo.java
ackageParser.java
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
serInfo.java
23cc04e598cfb1c7f10e3fab05b188a8738edb35 01-Apr-2014 Adam Connors <adamconnors@google.com> Add android.software.managedprofiles feature flag.

Change-Id: I108d2952996d3a74596337ee2294fb33f1e28ee4
ackageManager.java
7c495dcd11d64f1630bd1ebaa9259508c1175621 27-Mar-2014 Alan Viverette <alanv@google.com> Merge "Enforce restrictions on recycled TypedArrays"
fd274a0d4ab5a6777213fecb8ddf6e8099675283 27-Mar-2014 Alan Viverette <alanv@google.com> Enforce restrictions on recycled TypedArrays

No calls may be made to recycled TypedArrays, and we'll throw a
detailed exception if developers attempt to do so. Also fixes the
place where we were doin' it wrong.

BUG: 13673783
Change-Id: Ia7a382d90fce8aef7741d926028b2d01b57435ae
ackageParser.java
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
PackageInstallObserver2.aidl
PackageManager.aidl
ackageManager.java
ackageParser.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
PackageInstallObserver2.aidl
PackageManager.aidl
ackageManager.java
ackageParser.java
9067dc03ffc76c5210d26d5a53a211eff046d412 26-Mar-2014 Christopher Tate <ctate@google.com> Merge "Expand install observer semantics"
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
PackageInstallObserver2.aidl
PackageManager.aidl
ackageManager.java
ackageParser.java
e9118138402b5631e7bea74b1b8b5cbfe24ca097 24-Mar-2014 Jose Lima <joselima@google.com> resolved conflicts for merge of 6c45157c to master

Change-Id: I95d7f927f4321405318b44a21172b99f3f16e00a
d13d701681220cdcb61b5a62669e88bb77d156aa 24-Mar-2014 Jose Lima <joselima@google.com> am eb2c85df: Merge "Added isGame application tag to the manifest" into klp-modular-dev

* commit 'eb2c85df4b2d8ea5dd3cd08cb0367d5ff666afe6':
Added isGame application tag to the manifest
12d0b4cd960e18493b1dc237adbfabed432c9df5 15-Mar-2014 Jose Lima <joselima@google.com> Added isGame application tag to the manifest

Added the ability to flag applications as Games in the manifest,
so they can receive a different treatment in the UI.

Change-Id: I4c36bc1a96757030fad58ee050cd68491b31bb6c
pplicationInfo.java
ackageParser.java
9b18001ab53c8c78aee0647983adf3ad8a1ee97c 14-Mar-2014 Tim Kilbourn <tkilbourn@google.com> am ec033943: am 9873e099: am 55740325: Merge "Add leanback device features." into klp-modular-dev

* commit 'ec0339437869ebb42a67a2811dc6de31239d5d62':
Add leanback device features.
9873e099c32513cdb28c3ffb8c2306ad87f0b052 14-Mar-2014 Tim Kilbourn <tkilbourn@google.com> am 55740325: Merge "Add leanback device features." into klp-modular-dev

* commit '557403250b9accf4f17ab87f636f1722949960a3':
Add leanback device features.
5e0e7b56a98ecf8e13100b4b6c7e2c2a64c3d938 14-Mar-2014 Christopher Tate <ctate@google.com> Merge "Make RegisteredServicesCache understand ASEC-based updates"
92703e62c1dc88a410a32b05c2d44f391c193140 14-Mar-2014 Jose Lima <joselima@google.com> resolved conflicts for merge of 4882ddfa to master

Change-Id: I179899697c148ac34a67b195e2dbd3df2f9138de
f94b6a93a4afa910f4ee4869f001183f7b4c1de7 08-Mar-2014 Tim Kilbourn <tkilbourn@google.com> Add leanback device features.

android.software.leanback - the device supports leanback UIs.
android.software.leanback_only - the device ONLY supports leanback UIs.

leanback_only is a hidden feature for now.

Change-Id: I497bd96464125ad81212c804e150f210f3e95af2
ackageManager.java
53ac5ef2141c7e7d99d5c00195bc65e86e7fc403 13-Mar-2014 Jose Lima <joselima@google.com> am 91726f4e: Merge "Add banner attribute to app manifest" into klp-modular-dev

* commit '91726f4ea7b60025490209ccb2637d712e8d75fd':
Add banner attribute to app manifest
f78e312db2aa7653ddc021e7dc58ce48f95ba047 06-Mar-2014 Jose Lima <joselima@google.com> Add banner attribute to app manifest

Change-Id: I28b0dc6dee9623ec7534bb0e741b88f439b48c9f
omponentInfo.java
ackageItemInfo.java
ackageManager.java
ackageParser.java
0598d7075ed739c9fcf115b4f3a417483ee32f84 12-Mar-2014 Christopher Tate <ctate@google.com> Make RegisteredServicesCache understand ASEC-based updates

Specifically, when the ASEC container has been unmounted as part
of updating the app we mustn't immediately conclude that any
services hosted there have become invalid until after we see the
matching remount result and have a chance to re-evaluate in the
proper new state.

Bug 12422464

Change-Id: I27794c6e4348f6a72d64bd2f44b4da7938cc567b
egisteredServicesCache.java
e21c52a8c9ef27c348f784daa8ec384152c3264e 25-Feb-2014 Kenny Guy <kennyguy@google.com> Merge "Hide managed profiles from user switchers."
1a447535cef7e3739d5f763dfe13e568568b9789 20-Feb-2014 Kenny Guy <kennyguy@google.com> Hide managed profiles from user switchers.

Hide managed profiles from lockscreen user switcher on tablets.
Hide managed profiles from power menu user switcher on phones.
Add flag to enable multi user ui turned off by default.

Change-Id: I4c69a6f7b0f39c249fc85fd940318df1ddab073f
serInfo.java
531270a4a177a9f245d328d9467c6d1adbd5354a 14-Feb-2014 Nicolas Prevot <nprevot@google.com> Adding the requiredForProfile flag.

Enabling to use requiredForProfile in application manifests
It determines which applications will be installed for managed profiles
and for restricted profiles

Change-Id: I14b4de2c9f41c2bbf5cd9fd0ca6caf5ce2d04131
ackageInfo.java
ackageParser.java
627de95925b58e7602374a66ceba76200592ec11 24-Feb-2014 Sander Alewijnse <salewijnse@google.com> Merge "Enables a profile owner or device owner to set and clear default intent handler activities."
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
PackageManager.aidl
0be0a5039b60ae4c1c8c0b6a1a2c0e7400d372d5 21-Feb-2014 Justin Koh <justinkoh@google.com> am 7206ac56: am a79ac472: am 744d3473: Merge "Add hardware feature describing a watch." into klp-modular-dev

* commit '7206ac561291298f08809614be95963966a72ca8':
Add hardware feature describing a watch.
a79ac472d71de6d13f3561012ca0e870bd9fe04b 20-Feb-2014 Justin Koh <justinkoh@google.com> am 744d3473: Merge "Add hardware feature describing a watch." into klp-modular-dev

* commit '744d3473f8a0f9f95e3fdf83670faf6d1551839e':
Add hardware feature describing a watch.
b5731f091c711a617e24ceb04cd7a1cc4ef1f717 14-Feb-2014 Justin Koh <justinkoh@google.com> Add hardware feature describing a watch.

Add hardware feature describing a watch so that hardware can specify that
it is a device that is worn on the body (perhaps the wrist).

Change-Id: I9d4cb7e86067f6ad41b39bcc545222b3b0fbf890
ackageManager.java
5441745effb885589c03050b59885e8a3ad96ad6 19-Feb-2014 Adam Lesinski <adamlesinski@google.com> am 019b1f26: am 2ea983a5: am 3d9bcb90: Create FEATURE_ constants for print and backup

* commit '019b1f2668ac17f5e52b6ce32a524d26134a062a':
Create FEATURE_ constants for print and backup
2ea983a567bf536f71dd620e1b215d5aeebce531 18-Feb-2014 Adam Lesinski <adamlesinski@google.com> am 3d9bcb90: Create FEATURE_ constants for print and backup

* commit '3d9bcb90ee6c0ffff93642539ae64fb672c7f14a':
Create FEATURE_ constants for print and backup
3d9bcb90ee6c0ffff93642539ae64fb672c7f14a 18-Feb-2014 Adam Lesinski <adamlesinski@google.com> Create FEATURE_ constants for print and backup

Bug:13079822

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

Change-Id: Ib33484546c6a03cbc4cd96e97d9d785d68e10700
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
serInfo.java
48d22323ce39f9aab003dce74456889b6414af55 31-Jan-2014 MÃ¥rten Kongstad <marten.kongstad@sonymobile.com> Runtime resource overlay, iteration 2

Support any number of overlay packages. Support any target package.

UPDATED PACKAGE MATCHING
------------------------
In Runtime resource overlay, iteration 1, only a single overlay package
was considered. Package matching was based on file paths:
/vendor/overlay/system/framework-res.apk corresponded to
/system/framework-res.apk. Introduce a more flexible matching scheme
where any package is an overlay package if its manifest includes

<overlay targetPackage="com.target.package"/>

For security reasons, an overlay package must fulfill certain criteria
to take effect: see below.

THE IDMAP TOOL AND IDMAP FILES
------------------------------
Idmap files are created by the 'idmap' binary; idmap files must be
present when loading packages. For the Android system, Zygote calls
'idmap' as part of the resource pre-loading. For application packages,
'idmap' is invoked via 'installd' during package installation (similar
to 'dexopt').

UPDATED FLOW
------------
The following is an outline of the start-up sequences for the Android
system and Android apps. Steps marked with '+' are introduced by this
commit.

Zygote initialization
Initial AssetManager object created
+ idmap --scan creates idmaps for overlays targeting 'android', \
stores list of overlays in /data/resource-cache/overlays.list
AssetManager caches framework-res.apk
+ AssetManager caches overlay packages listed in overlays.list

Android boot
New AssetManager's ResTable acquired
AssetManager re-uses cached framework-res.apk
+ AssetManager re-uses cached 'android' overlays (if any)

App boot
ActivityThread prepares AssetManager to load app.apk
+ ActivityThread prepares AssetManager to load app overlays (if any)
New AssetManager's ResTable acquired as per Android boot

SECURITY
--------
Overlay packages are required to be pre-loaded (in /vendor/overlay).
These packages are trusted by definition. A future iteration of runtime
resource overlay may add support for downloaded overlays, which would
likely require target and overlay signatures match for the overlay to
be trusted.

LOOKUP PRIORITY
---------------
During resource lookup, packages are sequentially queried to provide a
best match, given the constraints of the current configuration. If any
package provide a better match than what has been found so far, it
replaces the previous match. The target package is always queried last.

When loading a package with more than one overlay, the order in which
the overlays are added become significant if several packages overlay
the same resource.

Had downloaded overlays been supported, the install time could have been
used to determine the load order. Regardless, for pre-installed
overlays, the install time is randomly determined by the order in which
the Package Manager locates the packages during initial boot. To support
a well-defined order, pre-installed overlay packages are expected to
define an additional 'priority' attribute in their <overlay> tags:

<overlay targetPackage="com.target.package" priority="1234"/>

Pre-installed overlays are loaded in order of their priority attributes,
sorted in ascending order.

Assigning the same priority to several overlays targeting the same base
package leads to undefined behaviour. It is the responsibility of the
vendor to avoid this.

The following example shows the ResTable and PackageGroups after loading
an application and two overlays. The resource lookup framework will
query the packages in the order C, B, A.

+------+------+- -+------+------+
| 0x01 | | ... | | 0x7f |
+------+------+- -+------+------+
| |
"android" Target package A
|
Pre-installed overlay B (priority 1)
|
Pre-installed overlay C (priority 2)

Change-Id: If49c963149369b1957f7d2303b3dd27f669ed24e
ackageInfo.java
ackageParser.java
8472e6189cd4e0520c047bdb28457abc728b373f 24-Jan-2014 Dianne Hackborn <hackbod@google.com> Add app version codes to procstats.

Now the per-package proc stats data is also per-app-version-code.

In addition to changing the data structure to have one more
SparseArray and passing a version code all over, this also required
improving how we reset the stats so that we can prune a multi-package
process record back to a single package. Otherwise, as you install
updates to apps, the proc stats data would continue to explode as
the data for each of those app's processes got turned to a
multi-package due to tracking the old and new versions at the
same time.

This also bumps the checkin version code, since the package entries
also include a new field for the app version code.

Change-Id: I80de36addb0a75c7b08aef747c6f6c8012d01ee4
pplicationInfo.java
ackageParser.java
1f0299a9cb9566fd89047569388bb2612e8bd445 12-Dec-2013 Narayan Kamath <narayan@google.com> Use StrictJarFile instead of JarFile for cert collection.

This ensures that we use the same underlying zip
processing code as the runtimes.

bug: 10193060

(cherry picked from commit eb565dc527eda8c0a43df0d1f30132638ca4ba20)

Change-Id: Iaaa26b02678278394619d0a41613d9ceeae3203c
ackageParser.java
eb565dc527eda8c0a43df0d1f30132638ca4ba20 12-Dec-2013 Narayan Kamath <narayan@google.com> Use StrictJarFile instead of JarFile for cert collection.

This ensures that we use the same underlying zip
processing code as the runtimes.

bug: 10193060

Change-Id: I0f287dd6fa95207cd02f648528ef6c08dd360a72
ackageParser.java
6090995951c6e2e4dcf38102f01793f8a94166e1 19-Nov-2013 John Spurlock <jspurlock@google.com> Remove unused imports from frameworks/base.

Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
eatureInfo.java
mlSerializerAndParser.java
63e1883d96d635ce7085c46c8a29af34d521076a 15-Nov-2013 Christopher Tate <ctate@google.com> am a5acd62b: am 6e5cf573: am 99437f25: Merge "Ensure recipient can be launched before attempting broadcast delivery" into klp-dev

* commit 'a5acd62bdefe5b616c0ea080434e9dd221169527':
Ensure recipient can be launched before attempting broadcast delivery
ba629da331d01d74067afdda5d4255682d4b24d7 14-Nov-2013 Christopher Tate <ctate@google.com> Ensure recipient can be launched before attempting broadcast delivery

User removal or eviction inherently races with broadcast delivery. This
patch introduces a latest-possible recheck of the availbility of the
target application before attempting to send it a broadcast.

Once the process has actually been spun up the system is essentially
committed to presenting it as a running application, and there is no
later check of the availability of the app: the failure mode for
continuing to attempt delivery is a crash *in the app process*,
and is user-visible.

We now check the app+userid existence of the intended recipient
just prior to committing to launch its process for receipt, and
if it is no longer available we simply skip that receiver and
continue normally.

Bug 11652784
Bug 11272019
Bug 8263020

Change-Id: Ib19ba2af493250890db7371c1a9f853772db1af0
PackageManager.aidl
ackageParser.java
45484ee6bb45604d90454f56bd09a44d81691148 14-Oct-2013 Aravind Akella <aakella@google.com> am 67af9ce3: am c73810de: am 45ca531e: Merge "Adding stepcounter & stepdetector feature strings." into klp-dev

* commit '67af9ce31e7642ffc5737b9c29812c4bfdf789e0':
Adding stepcounter & stepdetector feature strings.
068b0c05fe089f58d96f71a82d57b87c5ebc1894 13-Oct-2013 Aravind Akella <aakella@google.com> Adding stepcounter & stepdetector feature strings.

Change-Id: Ic8cc95612f776db7cb1d1c13a228d5cd8ed64f56
ackageManager.java
5b6372171c5ee06dc0ce00644008297e7a14bb38 08-Oct-2013 Jeff Sharkey <jsharkey@android.com> am 9d1383c6: am 5e02e0a9: am bcc77b50: Merge "Add <intent-filter> support to <provider>." into klp-dev

* commit '9d1383c61ca0932cb36b104a89c32db15de6a10e':
Add <intent-filter> support to <provider>.
bcc77b502b56d4b91610adfa10c657003c9c820d 07-Oct-2013 Jeff Sharkey <jsharkey@android.com> Merge "Add <intent-filter> support to <provider>." into klp-dev
85f5f8132015d8a5043ea4413702420d0d157c9f 07-Oct-2013 Jeff Sharkey <jsharkey@android.com> Add <intent-filter> support to <provider>.

For the new documents work, we're only interested in the subset of
ContentProviders that actually implement DocumentsContract. Instead
of returning all providers, add <intent-filter> support to make it
easier to limit the set of returned ProviderInfo.

Define a well-known action for DocumentsProviders, and start using it
when querying for roots. Continue supporting the old <meta-data>
approach until all apps have been updated.

Bug: 8599233
Change-Id: I05f049bba21311f5421738002f99ee214447c909
PackageManager.aidl
ackageManager.java
ackageParser.java
roviderInfo.java
esolveInfo.java
1ac74b74fffd2897046b895eff3e9c6636955a33 04-Oct-2013 Alex Ray <aray@google.com> am 849ef427: am 2bbf0bfc: am 0ab7c883: Merge "Add Consumer IR feature" into klp-dev

* commit '849ef427b804c3d308e2d74eebd64e19144ef976':
Add Consumer IR feature
0c9d61f0989e5a85674fbbc24cf06dd3de1fc326 03-Oct-2013 Alex Ray <aray@google.com> Add Consumer IR feature

Bug: 10676690
Change-Id: Id2c118225dc6ef259f5ed97da4071e9b6de3a83a
ackageManager.java
23ff9f6128b5d28a99eca87bf03b221145951988 24-Sep-2013 Dianne Hackborn <hackbod@google.com> am 9b7d1484: am 5f86b90b: Merge "Fix issue #10848916: "Always" button is not working." into klp-dev

* commit '9b7d148466b1aedb24187294e0c59718afb104a0':
Fix issue #10848916: "Always" button is not working.
6d8dfbd8149942f25f2b9643a12f1fb38f3be834 24-Sep-2013 Dianne Hackborn <hackbod@google.com> Fix issue #10848916: "Always" button is not working.

The problem was that the ResolverActivity filters some activities
out of the list it shows, but it uses that display list as the
list of components the preference is set against when ultimately
setting it on the package manager... but that filtered list is *not*
the right component set, since it is not the same as the package
manager's view on it.

The fix here is to retain the original set of matching components
and use that when setting the preferred activity. Note that this
does mean that in very unusual cases where filtering is happeing
(such as one of the activities not being exported but being seen
as a possible completion from another app), then you will be setting
the preference for the complete set. Ultimately we probably need
to have the package manager apply these filtering rules up-front so
this is all consistent, but this is a very rare case so not that
important.

And then most of the change here is just improving the debug
output for intent resolution.

Change-Id: Ie35ac2c05a45946439951bbf41433c8b7de79c05
ackageParser.java
esolveInfo.java
000ecdd3f5e38c8135cfc3caffea2327c668fbc1 17-Sep-2013 Amith Yamasani <yamasani@google.com> am 6484c42e: am 33caca5c: Merge "Add a feature to specify if device admins are supported on the device" into klp-dev

* commit '6484c42eb44bfe8fc8d2972bfc564b96f0f7f16c':
Add a feature to specify if device admins are supported on the device
33caca5cd56ff41142cea121fabf5e30bebfb39f 17-Sep-2013 Amith Yamasani <yamasani@google.com> Merge "Add a feature to specify if device admins are supported on the device" into klp-dev
4b8dd603cf2f0ca56ee2f7538cf1ebbe805d15a7 17-Sep-2013 Christopher Tate <ctate@google.com> am cf611b77: am 60fcce6c: Merge "Introduce maxSdkVersion for <uses-permission>" into klp-dev

* commit 'cf611b776ed5163008fdad87452f3047c966ec08':
Introduce maxSdkVersion for <uses-permission>
44a01b742c2ad2ebc6185425be887b4bc987c4d0 16-Sep-2013 Amith Yamasani <yamasani@google.com> Add a feature to specify if device admins are supported on the device

Bug: 9520957

DevicePolicyManagerService will play dumb if the feature is not installed.

Continue to keep track of failed password attempts for keyguard's use.

Change-Id: I28d258dc09a8b4976b188da6f453d8daabcc4bdd
ackageManager.java
fb0676a902dd1195e3e35790d137bc1b90e390ba 17-Sep-2013 Christopher Tate <ctate@google.com> Introduce maxSdkVersion for <uses-permission>

This way an application can automatically sunset its permission requests
when running on later versions of the OS where those permissions are no
longer relevant, but may be alarming to the user. A canonical example
is WRITE_EXTERNAL_STORAGE, which as of KLP becomes unnecessary for an app
to use the external storage volume solely for its own large-data needs,
without the need for actual file-system sharing among multiple apps.

Bug 9761041

Change-Id: I60130af3a108fe4a750c356038a1c8cb897e9c8b
ackageParser.java
9b6c9a15922ccb1518b8147f7bd05cae754c8c3c 14-Sep-2013 Christopher Tate <ctate@google.com> am fcda3283: am 7560c256: Merge "Add hidden API for querying available \'home\' activities" into klp-dev

* commit 'fcda3283d27f8dfaa812fb735af43eea2e077c64':
Add hidden API for querying available 'home' activities
a2a0850de8e7324db37e0595d5374bb9c9903461 06-Sep-2013 Christopher Tate <ctate@google.com> Add hidden API for querying available 'home' activities

To support improved home-app selection UX in Settings.

Bug 9958444

Change-Id: I106090784618bf7bea6fce28f4f9b9fb8480d310
PackageManager.aidl
ackageManager.java
b6a3ef18342e6671d9674312b66a015d6caa80ed 13-Sep-2013 Tor Norbye <tnorbye@google.com> Merge "Add typedefs and nullness annotations."
d9273d6f289d9b55da3fd0db2f659fdfb48106a8 31-May-2013 Tor Norbye <tnorbye@google.com> Add typedefs and nullness annotations.

This changeset adds in typedef annotations (custom annotations
marked with @IntDef) for various int parameters and return values
in the API. It also adds nullness annotations for cases where the
documentation explicitly mentioned null policy, or where it was
blindingly obvious from the context. Also fixed some typos in the
documentation.

Change-Id: Ica27c01368895818e26237544edd8483007155bb
ctivityInfo.java
ackageManager.java
7140a25f0135f473b66d01eb042471b2f0ebc836 11-Sep-2013 Adam Skory <skory@google.com> Revert services assist context in KitKat

Reverts extension to assist context API to query
foreground services for assist context data.

Also hides Intent.ACTION_VOICE_ASSIST because
nobody's actually using it yet.

Bug: 10461702
Change-Id: Idf6836adc659b434e11ebb2b98e8b814c94a7227
ackageParser.java
erviceInfo.java
1d0b177754c81a20e272b91c6f703a634fe5c856 06-Sep-2013 Dianne Hackborn <hackbod@google.com> Fix issue #10560472: ApplicationInfo.manageSpaceActivity not parsed...

...correctly with overloaded resources

Change this attribute and a few other manifest attributes to allow
them to change based on platform SDK version.

Clean up a little more the whole mess with native vs. java config
bit masks.

Change-Id: Ia0baa3f7aed00bcb432701bcf99a9112124d6519
ctivityInfo.java
ackageParser.java
eaeb19048672337714c1724de7992be8cb3f2124 06-Sep-2013 Michael Wright <michaelwr@google.com> Added support for supports-input manifest element

Change-Id: Ifa7c87908081585c1940b5a47fdf5138a287d9ea
ackageParser.java
322d77185d6e8fe79642f27b653bb51677873cba 05-Sep-2013 John Spurlock <jspurlock@google.com> Revert "Re-@hide activity-level FLAG_IMMERSIVE and helpers."

This reverts commit 5e777f668526104e7dd97d3972d35eb7b9eef5a2.

Change-Id: I6dc00f376cbbe34dafde3470d8e06c9123f81d8d
ctivityInfo.java
5e777f668526104e7dd97d3972d35eb7b9eef5a2 04-Sep-2013 John Spurlock <jspurlock@google.com> Re-@hide activity-level FLAG_IMMERSIVE and helpers.

Un-@hidden in api 18, but probably should not have been.

The framework currently takes no action based on the flag,
making the docs misleading.

Bug:10460791
Change-Id: If6cc8791a85710897c8fe77cf6682d1460e3416e
ctivityInfo.java
16731d4dc02a335cf96edfa4055cbb6039ec78f5 31-Aug-2013 Adam Skory <skory@google.com> Add provideAssistData attr to public.xml

http://ag/323631 added the provideAssistData
attribute to the Service manifest tag.

It did not, however, add that attribute to
public.xml - making it impossible to actually
build a service that defines said tag.

So, add it.

Now that the attribute is where it should be,
restore @link notation to ServiceInfo.java
without breaking the offline docs build
( see http://ag//340279 ).

Also, make some log warnings related to
providing assist data slightly more verbose.

Bug: 10573008
Change-Id: Ie2bcb411c182d69738a2fa4a74de3171b9b9c455
erviceInfo.java
79a45c6f1837d5921e512213904c96660b1a80b1 29-Aug-2013 Amith Yamasani <yamasani@google.com> Merge "Improve Intent disambig dialog behavior" into klp-dev
df4d1d624d44008e919755c7a212d9e2feb4f00b 28-Aug-2013 Martijn Coenen <maco@google.com> Add requireDeviceUnlock attribute for NFC HCE.

Also added AID description, and renamed PackageManager
feature. The old name has to stay at least for a bit,
because we are already deploying apps in our builds that
use the constant.

Bug: 10461409
Bug: 10461753
Change-Id: I7a5bb023bb567dd8b0a17e8e54e9559d7fcf64f5
ackageManager.java
e9ecc8b49992840249bfb9d5d52b8824dd5de39b 22-Aug-2013 Amith Yamasani <yamasani@google.com> Improve Intent disambig dialog behavior

Keep track of last chosen activity for a particular intent, similar
to how it is tracked for "Always" choices.
Pre-select the last chosen activity if previously the user picked
"Just once".
Downgrade "Always" to "Last chosen" if there's a new kid on the block,
instead of removing it entirely.
Add methods to set and get last chosen entry.

UI - switch from Grid to List.

Bug: 9958096

Change-Id: Ied57147739a3ade1d36c3a7ec1e8ce77e5c5bb16
PackageManager.aidl
365038217553e192d011861422715f8a87b30618 08-Aug-2013 Ben Murdoch <benm@google.com> Fix the build

Change-Id: If34523c4b25b3d60edc00b0f37b636bedfc756c2
erviceInfo.java
77ece7b192d45351b313ee23270caab373d3c477 08-Aug-2013 Matt Casey <mrcasey@google.com> Merge "Extend assist context to foreground services"
dd72c9ed558158f889a8cdfed8a108553ba5a562 06-Aug-2013 Ben Gruver <bgruv@google.com> Improve the logic for determining whether the caller is a system app

Bug: 10024554
Change-Id: I742e918840a98dd83d713bdf7a43a919674e65fe
PackageManager.aidl
dfc7fd7818cda46b914c8a9d69d1ba00443ffe5b 06-Aug-2013 Adam Skory <skory@google.com> Extend assist context to foreground services

Add Service.onProvideAssistData(Bundle) which will be
called on foreground Services that have the new attr
in their manifest of provideAssistData = true;

Rename private reference to e.g. "getTopActivityExtras"
as "getAssistContextExtras" - do not rename the relevant
permission, since it is already public.

In ActivityManagerService, request extras both from the
top activity and from any foreground services with the
above attribute. Extend PendingActivityExtras as
PendingAssistExtras with a list of Services from which
extras are expected.

Reduce the timeout to or reporting extras from 4 sec to
just 500 ms.

Bug: 9526331
Change-Id: Ia03b96e8189033a68ae9c514c8cea0199a19bce8
ackageParser.java
erviceInfo.java
5cf6663c80a9b6039cc70cc9b4041af64f671571 23-Jul-2013 Dianne Hackborn <hackbod@google.com> Merge "Add new facility for apps to declared their preferred intents."
b09491f271c0a647632e5a99bfe280cbb7106195 23-Jul-2013 Dianne Hackborn <hackbod@google.com> Add new facility for apps to declared their preferred intents.

This is an extension from the existing data/etc/perferred-apps
facility. Now applications pre-installed on the system image
can declare which intents they would like to be considered the
preferred app for. When the system firsts initializes, or the
application settings are reset, these are used to configured
the current preferred app settings appropriately.

You use this with a new <preferred> tag under your activity,
which indicates which intents you would like to be the preferred
handler for. The syntax for this is written much like an
intent filter, however semantically it is not really an intent
filter and so has some important differences:

- You can not use globbing patterns (for SSPs or paths).
- You can use only one action (if you use more than one it
will only use the first one, so be careful).

Semantically what this is actually used for is a template
from which to generate a set of Intent objects, which are used
to probe the current environment in order to see if there are
multiple activities that can handle the Intent and, if so,
generate a new preferred setting for that pointing to your app.

As an example, here is how the preferred tag might be written
for the Maps application:

<preferred>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="maps.google.com" />
<data android:path="/" />
<data android:pathPrefix="/maps" />
</preferred>
<preferred>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="geo" />
</preferred>

From this, we generate the following set of potential Intents
to be matched, all with ACTION_VIEW, CATEGORY_DEFAULT+CATEGORY_BROWSABLE:

Change-Id: I7fd42aec8b6109c7dd20012529662362f1b7437a
http://maps.google.com/
http://maps.google.com/maps
https://maps.google.com/
https://maps.google.com/maps
geo:
ackageParser.java
ce1279686b17940127292aa815d46dc1cc4d71af 23-Jul-2013 Martijn Coenen <maco@google.com> Merge "Add host-based card emu feature to PackageManager."
f4bf158328fd1bcb171baab043460efd5c58152c 22-Jul-2013 Martijn Coenen <maco@google.com> Add host-based card emu feature to PackageManager.

Change-Id: Id55025e5ab8443be1e6ac23ac5d9ab93565a53f0
ackageManager.java
37dca155aaaecd79d801f53851d1d319d7ff0726 10-Jul-2013 Kenny Root <kroot@google.com> KeySets: better rejection for badly-formed manifest

During testing, I typed in a <publicKey> tag incorrectly and it
clobbered the previously defined key entry since it still parsed the
subsequent <keyset> tag defining an alias.

This gives more information in the log when running into such parsing
errors.

Change-Id: Id3c8e85530b1a5e39f4a2cb6ea8bd5521cb6918f
ackageParser.java
2758e291c82901e8e22258e519dc5af228d44dcf 08-Jul-2013 Kenny Root <kroot@google.com> KeySetManager: fix indentation

Change-Id: I4fe67143bce30a7592c6a0f5a094172112bdfe43
ackageParser.java
655d0e2029e6ae77a47e922dce4c4989818b8dd1 12-Jun-2013 Amith Yamasani <yamasani@google.com> Single-user restrictions

Introduces a new "blocked" state for each package. This is used to temporarily
disable an app via Settings->Restrictions.

PIN creation and challenge activities for use by Settings and other apps. PIN
is stored by the User Manager and it manages the interval for retry attempts
across reboots.

Change-Id: I4915329d1f72399bbcaf93a9ca9c0d2e69d098dd
pplicationInfo.java
PackageManager.aidl
ackageManager.java
ackageParser.java
ackageUserState.java
4ce55a3987c14b939cd416e24116c6ab3c760b82 25-Jun-2013 Christopher Tate <ctate@google.com> Fix FLAG_PRIVILEGED numbering

Change-Id: Ia04326acb51a76c0f1931fce94f0501d4ce7faba
pplicationInfo.java
ccbf84f44c9e6a5ed3c08673614826bb237afc54 09-May-2013 Christopher Tate <ctate@google.com> Some system apps are more system than others

"signatureOrSystem" permissions are no longer available to all apps
residing en the /system partition. Instead, there is a new /system/priv-app
directory, and only apps whose APKs are in that directory are allowed
to use signatureOrSystem permissions without sharing the platform cert.
This will reduce the surface area for possible exploits of system-
bundled applications to try to gain access to permission-guarded
operations.

The ApplicationInfo.FLAG_SYSTEM flag continues to mean what it is
says in the documentation: it indicates that the application apk was
bundled on the /system partition. A new hidden flag FLAG_PRIVILEGED
has been introduced that reflects the actual right to access these
permissions.

At some point the "system" permission category will be
renamed to "privileged".

Bug 8765951

Change-Id: I6f0fd9cdb9170e076dfc66d83ecea76f8dd7335d
pplicationInfo.java
ackageParser.java
df1c0bf7744d4abd3e2000fcfec01c119b857c75 13-Jun-2013 Dianne Hackborn <hackbod@google.com> Add scheme specific part to IntentFilter.

Change-Id: I063d086cdc742800b8e31ddf2942f2e9230e2785
ackageParser.java
04fe6ebb9f919f196ec06a19bebc09b8e943f95b 31-May-2013 Adam Powell <adamp@google.com> Fix a bug resolving the correct icon/logo in action bars

Remove some abstraction-breaking magic in ActionBarView and replace it
with proper resolution of the icon/logo when creating a window. The
old implementation relied on the ActionBarView's context being an
Activity.

Bug 9171554

Change-Id: Idbbb1942622195dcb55e8119f2d64287b07bb509
omponentInfo.java
0256c6f8d31c95f730d286b9e2ebae94736f7098 30-May-2013 Adam Powell <adamp@google.com> Optimizations for ResolverActivity

Load app icons using AsyncTask instead of during list item binding.

Make sorting resolved components by display name case insensitive.

Change-Id: I8e69781ed021035b9f0dac349791b3d8a674cf60
esolveInfo.java
f4bf0ae2a7c2d9d92c5c8abdb82baa53b4c9ccda 21-May-2013 Dianne Hackborn <hackbod@google.com> New ArrayMap class.

This is a new kind of key/value mapping that stores its data
as an array, so it doesn't need to create an extra Entry object
for every mapping placed in to it. It is also optimized to reduce
memory overhead in other ways, by keeping the base object small,
being fairly aggressive about keeping the array data structures
small, etc.

There are some unit and performance tests dropped in to some
random places; they will need to be put somewhere else once I
decided what we are going to do with this for the next release
(for example if we make it public the unit tests should go in
to CTS).

Switch IntentResolver to using ArrayMap instead of HashMap.

Also get rid of a bunch of duplicate implementations of binarySearch,
and add an optimization to the various sparse arrays where you can
supply an explicit 0 capacity to prevent it from doing an initial
array allocation; use this new optimization in a few places where it
makes sense.

Change-Id: I01ef2764680f8ae49938e2a2ed40dc01606a056b
egisteredServicesCache.java
821b58a93df5edcdaaad49582b4a6726770214cd 02-May-2013 Amith Yamasani <yamasani@google.com> am f5a553a4: am 55a08c5a: Merge "Allow requiredForAllUsers to work on updates to system apps" into jb-mr2-dev

* commit 'f5a553a4278a68fda9795dea759840d4f93546d7':
Allow requiredForAllUsers to work on updates to system apps
0d8750d771c8ad4db6f1f590ecda4ac23f783a84 02-May-2013 Amith Yamasani <yamasani@google.com> Allow requiredForAllUsers to work on updates to system apps

Bug: 8736380

Also set the default type as the constructor docs imply in RestrictionEntry.

Change-Id: I446504fad8822804d68f09b45ef62f6d79c4b8df
ackageParser.java
ae8ffa0f4e3ecf91c2d0aa51e8f8c3801d323153 24-Apr-2013 Matthew Xie <mattx@google.com> am 2e0a94d2: am b442d074: Merge "Add hardware feature android.hardware.bluetooth.le" into jb-mr2-dev

* commit '2e0a94d22b1bd25c4fa9442e03c596bd0cb3fe76':
Add hardware feature android.hardware.bluetooth.le
a722772b284c8a9889e59fcb28aa0aa87c0e8b46 19-Apr-2013 Matthew Xie <mattx@google.com> Add hardware feature android.hardware.bluetooth.le

The feature is used to differ platforms that support bluetooth low
engery radio
bug 8369273

Change-Id: Ibe23da73f7ecfa854bdb8b8bfc1a32b8e3aeee56
ackageManager.java
18197ec438ea57b2b0bc2847e7f6d903137f9e8c 15-Apr-2013 Amith Yamasani <yamasani@google.com> am 460071f8: am 919e36d5: Merge "Allow non-system apps to use restricted accounts" into jb-mr2-dev

* commit '460071f806337f09ff789892979935916323e6a1':
Allow non-system apps to use restricted accounts
e993ae197be29e16fc54f6abf2552cf4973d64bf 15-Apr-2013 Amith Yamasani <yamasani@google.com> Allow non-system apps to use restricted accounts

Anyway they need to request account access and user will be asked to approve access to the account
at runtime.

Bug: 8617168
Change-Id: I31de852b9bb25f496becc3e6470265b5c330e6ad
ackageParser.java
362c4ddff3d4278e4545e597f21477f87ebef385 14-Apr-2013 Amith Yamasani <yamasani@google.com> am 19c95bcc: am e188c984: Merge "Introducing manifest flag requiredAccountType" into jb-mr2-dev

* commit '19c95bcc76cd68e241e3d29a5e49fc892521527d':
Introducing manifest flag requiredAccountType
ccbe389b4d2cee16da77685c88fa1475bc08cdb9 13-Apr-2013 Amith Yamasani <yamasani@google.com> Introducing manifest flag requiredAccountType

This can be used by apps that won't work without an account of that
type in the limited user environment. This way we can avoid letting
users select these apps when setting up a limited user.

Bug: 8600261
Change-Id: Iaa0dd5ff88e89fa7a1d8a4e70317290268411bdb
ackageInfo.java
ackageParser.java
b735e1d426d65007011a3d915ea8e2cdd0002ecb 12-Apr-2013 Fabrice Di Meglio <fdimeglio@google.com> am 70d2c773: am f5c757c6: Merge "More fix for bug #8159072 Spinner widget should be RTL\'ized" into jb-mr2-dev

* commit '70d2c77320287d97fa2d90cc60f85e1706bffb1b':
More fix for bug #8159072 Spinner widget should be RTL'ized
f5c757c6292fb2623757ef73020d3730ead063d7 12-Apr-2013 Fabrice Di Meglio <fdimeglio@google.com> Merge "More fix for bug #8159072 Spinner widget should be RTL'ized" into jb-mr2-dev
b999d370090ae23290e907cec5094ba840afebf7 12-Apr-2013 Dianne Hackborn <hackbod@google.com> am d9d9c17d: am 77216642: Merge "Implement #7341342 API request: way to determine current orientation..." into jb-mr2-dev

* commit 'd9d9c17dda9a343b8b5386d1b9233c89ab6f3419':
Implement #7341342 API request: way to determine current orientation...
77216642884d5131290803776b0fce4d68128e97 12-Apr-2013 Dianne Hackborn <hackbod@google.com> Merge "Implement #7341342 API request: way to determine current orientation..." into jb-mr2-dev
b9ec1ac51b631c4efc9b7a7e7a2b28882105ffa3 11-Apr-2013 Dianne Hackborn <hackbod@google.com> Implement #7341342 API request: way to determine current orientation...

...to allow for orientation locking

This doesn't add an API to get the current orientation, since that is
inherantly racy. Instead there is a new "locked" orientation mode that
locks the screen into whatever the current rotation is.

While at it, added a few other useful orientation modes.

Change-Id: I5c369e6511cb72294e9e922ea8acffd770df9440
ctivityInfo.java
6e2157456a38c7b4db37ddba8c14caed2f0576c2 11-Apr-2013 Nick Kralevich <nnk@google.com> am c5931edb: am c65e4633: Merge "Optional <uses-permission> not yet supported." into jb-mr2-dev

* commit 'c5931edb4c8d95e90ac739ec88d8fca2610a57f1':
Optional <uses-permission> not yet supported.
dc25d25333d3fac96dccfb9bd31d2474d6bc2d78 10-Apr-2013 Fabrice Di Meglio <fdimeglio@google.com> More fix for bug #8159072 Spinner widget should be RTL'ized

- fix DrawableContainerState.getChangingConfigurations() to take care about its children
- make Resources.verifyPreloadConfig() return false when the changing configuration
contains layout direction bits (this is when a Drawable is having different version
for LTR and RTL layout directions)
- use constant state instead of the resource type value for checking if we can
preload the drawable
- fix typo

Change-Id: Idd64caf0fbe0f5cfd5ffe09343e84bafa9446ea5
ctivityInfo.java
32eb5b182458c05f744f9ab2963a13ef620ce069 11-Apr-2013 Nick Kralevich <nnk@google.com> Optional <uses-permission> not yet supported.

Change-Id: Ieaa97a29db75161f35905ff340b2c525bbf50612
ackageInfo.java
ackageManager.java
ackageParser.java
ef36045f9619a6bf735ddb4d75e6a9f3260f7ede 05-Apr-2013 Nick Kralevich <nnk@google.com> am 1fdaace1: am 80fdc962: Merge "Error on conflicting <uses-permission>" into jb-mr2-dev

* commit '1fdaace1b17ad651d1e5266bb227a26e76b91a50':
Error on conflicting <uses-permission>
73f2d3c79e57cac58fa0499accb1fb1192b7103f 04-Apr-2013 Nick Kralevich <nnk@google.com> Error on conflicting <uses-permission>

Don't install packages where we have multiple, conflicting
<uses-permission> lines for the same permission.

For example, a package which contains:

<uses-permission android:name="android.permission.INTERNET" android:required="false" />
<uses-permission android:name="android.permission.INTERNET" android:required="true" />

will now fail to install.

In addition, this change slightly refactors the code, and creates a new
parseUsesPermission() method.

Change-Id: I0f4bb8b51dc4a0c5b73458a70f706e19829275d2
ackageParser.java
7b22af2c31deea3925262c842446bb821d1048d7 04-Apr-2013 Nick Kralevich <nnk@google.com> am 2c0283f5: am b2c3aa8e: Merge "PackageParser: ignore <uses-permission> android:required on older apps" into jb-mr2-dev

* commit '2c0283f5d1bc43892b2e1e6ad3b111e4933bbe34':
PackageParser: ignore <uses-permission> android:required on older apps
38f130e19ac3bb4590d400c61af8a4e5bd6c30ce 04-Apr-2013 Nick Kralevich <nnk@google.com> PackageParser: ignore <uses-permission> android:required on older apps

Don't honor <uses-permission android:required="false"> on older apps.
Lots of apps in the wild are improperly using this, and we don't
want to break them.

Bug: 8528162
Change-Id: I6e0a10bc9feac58d13ef624239c6b91e9fc34590
ackageParser.java
de1175db67da94dc3bb2c1bf2cf20b961f67ccc0 03-Apr-2013 Kenny Root <kroot@google.com> resolved conflicts for merge of 0afa8b36 to master

Change-Id: I09a453ab5dbad58e3dc0858972e222a34d53b282
6c918cec31f396bb19597d107856122173c90594 02-Apr-2013 Kenny Root <kroot@google.com> Add direct API to get ManifestDigest

This makes it faster for applications that don't want to collect all the
certificates but do want the AndroidManifest.xml digest.

Bug: 8528639
Change-Id: Ide9498d0981188960af194a9568387337c075bcc
anifestDigest.java
ackageParser.java
adf7fa3d28df7a4cfd45f35b20f52e48b94d9b1c 28-Mar-2013 kmccormick <kmccormick@google.com> am ce2db15d: am 80ab68ce: am 5c3ddcd1: am 425c3d5f: am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs

* commit 'ce2db15d702dd4a27f860214ae2bfcf2693ee683':
Doc update: superceeded > superseded
80ab68ce233598ab13a9875fe17d4ec51aa5517b 28-Mar-2013 kmccormick <kmccormick@google.com> am 5c3ddcd1: am 425c3d5f: am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs

* commit '5c3ddcd14b79c4737ea06f68d8efd39543d60382':
Doc update: superceeded > superseded
5c3ddcd14b79c4737ea06f68d8efd39543d60382 28-Mar-2013 kmccormick <kmccormick@google.com> am 425c3d5f: am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs

* commit '425c3d5f59f1e315cdbdd5f7530c4380aabf76ab':
Doc update: superceeded > superseded
425c3d5f59f1e315cdbdd5f7530c4380aabf76ab 28-Mar-2013 kmccormick <kmccormick@google.com> am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs

* commit '99049335a604cae3f515fce32bc5f1b27fe8d29b':
Doc update: superceeded > superseded
ac66b85a0454793502a12926bddf70b16a0dfd7d 28-Mar-2013 kmccormick <kmccormick@google.com> Doc update: superceeded > superseded

"Bug: 5935672"

Change-Id: Ie2324d00d454cf3f3f3ed422dea2017b8a7a4c54
ackageManager.java
b54a93adafd37b615ed0e11c5d4c2c87466a26d3 28-Mar-2013 Amith Yamasani <yamasani@google.com> am 1438d67e: am e494a81f: Merge "Restricted account visibility" into jb-mr2-dev

* commit '1438d67e7ddaba1133f181bc70cd706acf57a520':
Restricted account visibility
e494a81f9b2727edd1c537f34bf0ea83b2fb0097 28-Mar-2013 Amith Yamasani <yamasani@google.com> Merge "Restricted account visibility" into jb-mr2-dev
34ba179091be99a32f6c6d205e30cb8e28631ff1 28-Mar-2013 kmccormick <kmccormick@google.com> am d805e374: am 24b8947f: resolved conflicts for merge of 603f987f to jb-mr2-dev

* commit 'd805e374c22ce7d0426efb08b38aa44a3633027b':
Doc change: Fix typo DONT_DELTE
24b8947f62d9bdb91aae408894faa5fe59564e46 28-Mar-2013 kmccormick <kmccormick@google.com> resolved conflicts for merge of 603f987f to jb-mr2-dev

Change-Id: I4a130dad9d4669799f5d477f67e0f9a6a04381ca
603f987f14d52111f8ee76eb2c6c593ec3d10918 28-Mar-2013 kmccormick <kmccormick@google.com> am 418172bf: am 19840a8d: am 65c66c74: am 6e6e861a: Merge "Doc change: Fix typo DONT_DELTE" into jb-mr1.1-docs

* commit '418172bf8823016785526b433801d44a4630f276':
Doc change: Fix typo DONT_DELTE
418172bf8823016785526b433801d44a4630f276 28-Mar-2013 kmccormick <kmccormick@google.com> am 19840a8d: am 65c66c74: am 6e6e861a: Merge "Doc change: Fix typo DONT_DELTE" into jb-mr1.1-docs

* commit '19840a8d40139a12469ef92c3541f2a433d5ae85':
Doc change: Fix typo DONT_DELTE
0ac1fc9d233b8671f371a71e2a6374b47ef069a9 28-Mar-2013 Amith Yamasani <yamasani@google.com> Restricted account visibility

When accounts are shared to a restricted/limited user, apps can
opt-in to viewing accounts of a certain type. Other shared accounts
are not visible to the app.

App would specify the account type in the manifest <application> tag
with the attribute restrictedAccountType="foo.bar", where "foo.bar"
is the account type as defined by the authenticator.

Change-Id: I7586da04d6d6d32aae15adc6b1366f325bb07384
ackageInfo.java
ackageParser.java
30498b41827b67a320360e1cc308064bab9d23f1 28-Mar-2013 kmccormick <kmccormick@google.com> Doc change: Fix typo DONT_DELTE

"Bug: 8273156"

Change-Id: I6ba2e780d1a8c2b7d1771e93125a10b228227020
ackageManager.java
adb2578a05199730d1b48b7e092b94113122d381 28-Mar-2013 Nick Kralevich <nnk@google.com> am 96e44a2c: am 98ea19ed: Merge "Reenable optional permissions parsing and expose APIs" into jb-mr2-dev

* commit '96e44a2c2ce0579177c50a4fb710adc83530e968':
Reenable optional permissions parsing and expose APIs
0655ade016e4b0b41e93455e4df5209be622d7c4 28-Mar-2013 Nick Kralevich <nnk@google.com> am e536ba7e: am 59928987: Merge "Add buildPermissionRequestIntent to PackageManager" into jb-mr2-dev

* commit 'e536ba7ecbb609ec9ada1bf39455ca0ba94163f6':
Add buildPermissionRequestIntent to PackageManager
98ea19ed247b9a2e598e2b66b84806313884a4d3 28-Mar-2013 Nick Kralevich <nnk@google.com> Merge "Reenable optional permissions parsing and expose APIs" into jb-mr2-dev
5992898755dc60d2d220a0870f76cf4f1fb27ed8 28-Mar-2013 Nick Kralevich <nnk@google.com> Merge "Add buildPermissionRequestIntent to PackageManager" into jb-mr2-dev
828c16f140eadb9265f2bf53469902dc7cdb2284 27-Mar-2013 Nick Kralevich <nnk@google.com> Reenable optional permissions parsing and expose APIs

Modify the package parsing code to understand optional permissions
(android:required="false"). This is essentially a rollback of
e824120016248bcfe3962883fe9f3b0481dd1c3d with some minor changes.

Expose the requestPermission API to third party apps. This allows
an app to request an Intent which, when passed to
startActivityForResult, will prompt the user to approve permissions
for an app.

In the event we decide to not launch with this feature, this change
can be rolled back.

Change-Id: Ie3626deae9b16e510323f94a2c80377f7c84b26f
ackageInfo.java
ackageManager.java
ackageParser.java
035f80d7c75b282f33ab10a33a3019f614ffd67d 27-Mar-2013 Nick Kralevich <nnk@google.com> Add buildPermissionRequestIntent to PackageManager

Add the buildPermissionRequestIntent API to PackageManager. This allows
an app to request an Intent which, when passed to
startActivityForResult, will prompt the user to approve permissions
for an app.

Currently, the API is @hide. It will be unhidden in a future change.

Change-Id: I4ec677002afa799a6eb5c2657c28452c91012436
ackageManager.java
d734b4f285dff25ed5fed63349d259ff15a07d60 28-Mar-2013 Dianne Hackborn <hackbod@google.com> am 6b8e7b35: am bf20aa76: Merge "Keep track of who has disabled applications." into jb-mr2-dev

* commit '6b8e7b35ef763d29a30c87a5a95ef941d39a8ee9':
Keep track of who has disabled applications.
3fa3c28a356108a6558b6b54a0b10e1a5cc4f1b6 27-Mar-2013 Dianne Hackborn <hackbod@google.com> Keep track of who has disabled applications.

Change-Id: I2640d3dc2200b589e2beb42a43cc93efd090f06e
PackageManager.aidl
ackageUserState.java
98157242e231d6415672dec751f81f8e32e43563 26-Mar-2013 Geremy Condra <gcondra@google.com> am d6c1394d: am 51163e3b: Merge "Add seinfo parsing to PackageManagerService." into jb-mr2-dev

* commit 'd6c1394dd0046944e66d391ff0e099fb5ac57751':
Add seinfo parsing to PackageManagerService.
0f40dc923c67e8822f9157aec4f786f73848af07 25-Mar-2013 Robert Craig <rpcraig@tycho.ncsc.mil> Add seinfo parsing to PackageManagerService.

This patch set allows the PMS to parse the
mac_permissions.xml file which contains the
seinfo values. Each package that is installed
on the device will be assigned an seinfo value
based on policy. This seinfo value will help label
the app process and data directory. Modifications
include adjustments to ApplicationInfo.java
to store the seinfo tag per package as well as
adjustments to installd to communicate the seinfo
tag to libselinux.

Change-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
pplicationInfo.java
d3f8d0333cf4d9d2e47b5b082a6f70460adcf5ff 25-Mar-2013 Robert Craig <rpcraig@tycho.ncsc.mil> Add seinfo parsing to PackageManagerService.

This patch set allows the PMS to parse the
mac_permissions.xml file which contains the
seinfo values. Each package that is installed
on the device will be assigned an seinfo value
based on policy. This seinfo value will help label
the app process and data directory. Modifications
include adjustments to ApplicationInfo.java
to store the seinfo tag per package as well as
adjustments to installd to communicate the seinfo
tag to libselinux.

Change-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
pplicationInfo.java
ac6331be6ff6d757c44aad6497f3ea0c63804d5f 23-Mar-2013 Dianne Hackborn <hackbod@google.com> am 8277f248: am b685faa2: Merge "Implement #8323587, #8323342, #8323590: new features." into jb-mr2-dev

* commit '8277f24865e52915b4825517860629c0385f79ed':
Implement #8323587, #8323342, #8323590: new features.
119bbc378d3c836f1196e14b847e564205a29728 23-Mar-2013 Dianne Hackborn <hackbod@google.com> Implement #8323587, #8323342, #8323590: new features.

8323587: Add feature for supporting app widgets
8323342: Add feature for replacing the home screen
8323590: Add feature for supporting input methods

The app widget service looks for the app widget feature
and refuses to work if it doesn't exist. I didn't do
this for the input method service because some devices
will probably want to still make use of that mechanism
without supporting third party input methods.

Change-Id: Ie3b089105e104f4d767cdb03cdbe4fdb1c17382e
ackageManager.java
e32011e8c06b994d840e6d568b5ffa8915320909 21-Mar-2013 Amith Yamasani <yamasani@google.com> resolved conflicts for merge of 99755cd3 to master

Change-Id: I752c387c013c3deaad836df9b0c2294e7149a32a
df2e92a535e19c00edd37318d974dab992ccc2c1 02-Mar-2013 Amith Yamasani <yamasani@google.com> Application restrictions API

Adds the ability for apps to export some restrictions. The restrictions
are presented in Settings based on the restriction type. The user's
selections are stored by UserManagerService and provided to the
target user's application as a list of RestrictionEntry objects which
contain the key, value(s).

Also introduce a manifest entry for system apps to request that the
app be automatically installed in all users, so that they cannot be
deselected by the owner user.

Shared account filtering for non-whitelisted apps.

Change-Id: I15b741e3c0f3448883cb364c130783f1f6ea7ce6
ackageInfo.java
ackageParser.java
dc37c5f2e32d167059382ec4bba68d4f12922516 13-Mar-2013 Dianne Hackborn <hackbod@google.com> am 0c42b580: am 53149acf: Merge "Implement limited shared libraries in apks." into jb-mr2-dev

* commit '0c42b58041dc0ede9865335fa48637fb6b677cd3':
Implement limited shared libraries in apks.
c895be7bc68b6f5b37fbb9881f464dd5ea0eb017 12-Mar-2013 Dianne Hackborn <hackbod@google.com> Implement limited shared libraries in apks.

You can now declare shared libraries in apks that are
on the system image. This is like the existing mechanism
of using raw jar files as shared libraries, but since they
are contained in an apk the library can actually be updated
from the Play Store. And this even (mostly) works.

There are some deliberate limitations on this feature. A
new shared library *must* be declared by an apk on the system
image. Installing an update to a system image apk does not
allow you to add new shared libraries; they must be defined
by everything on the base system image. This allows us to
get rid of a lot of ugly edge cases (shared libraries that were
there disappearing after an update is uninstalled for example)
and give some brakes on apps that happen to be pre-installed
on devices from being able to throw in new shared libraries
after the fact.

In working on this, I ran into a recently introduced bug where
uninstalling updated to system apps would fail. This was done
to allow for the new restricted users that don't have all
system apps, but conflicts with the existing semantics for
uninstalling system apps. To fix this I added a new uninstall
flag that lets you switch on the new mode if desired.

Also to implement the desired logic for limitations on declaring
new shared libraries in app updates, I needed to slightly tweak
the initial boot to keep the Package object for hidden system
packages associated with their PackageSetting, so we can look at
it to determine which shared libraries are allowed. I think
this is probably more right than it was before -- we already
need to parse the package anyway, so we have it, and when you
install an update to a system app we are in this same state
until you reboot anyway.

And having this fixed also allowed me to fix another bug where
we wouldn't grant a new permission to an updated app if its
system image version is updated to request the permission but
its version is still older than whatever is currently installed
as an update. So that's good.

Also add new sample code showing the implementation of an apk
shared library and a client app using it.

Change-Id: I8ccca8f3c3bffd036c5968e22bd7f8a73e69be22
ackageManager.java
ackageParser.java
345fc4cc92a08c2aa51938a05f36af8f8c5b8845 11-Mar-2013 Jeff Sharkey <jsharkey@android.com> am 1b48ecf8: am f2afddb5: Merge "Handle corrupt RegisteredServicesCache XML." into jb-mr2-dev

* commit '1b48ecf89a13a104820d5ccf52ba7f5dd622d3a6':
Handle corrupt RegisteredServicesCache XML.
293ad6c6749044d97ea2a5f3fbd5c6ad58124584 11-Mar-2013 Jeff Sharkey <jsharkey@android.com> Handle corrupt RegisteredServicesCache XML.

Avoid getting stuck in infinite loop.

Bug: 8360183
Change-Id: I81728dcfbc35b456c9166cf5c5175d0a376df56f
egisteredServicesCache.java
99438af8924b6881caabcccffe76d68dddf13290 07-Mar-2013 Jeff Sharkey <jsharkey@android.com> am 73a3754c: am 4861966c: Merge "ArrayUtils.indexOf(), containsAll() with tests." into jb-mr2-dev

* commit '73a3754c6766b7220878983317b3d56ce7fc6e58':
ArrayUtils.indexOf(), containsAll() with tests.
94c91dca55de9ffdbe072fcc5dd6dbf1efe5e4c1 07-Mar-2013 Jeff Sharkey <jsharkey@android.com> ArrayUtils.indexOf(), containsAll() with tests.

Change-Id: I040164d4e45126e4a6c1df54bd114f47951da560
ignature.java
adb8e146a5eec041d6c8543e17182efe5bec276c 06-Mar-2013 Amith Yamasani <yamasani@google.com> am 3eb3774f: am 67df64b3: Shared accounts and sharing of apps

* commit '3eb3774f8e54a6f43dcf4f27e1b7a62676791ff6':
Shared accounts and sharing of apps
67df64b3a48a8157d08a98fa90135d0ac0ee621c 14-Dec-2012 Amith Yamasani <yamasani@google.com> Shared accounts and sharing of apps

API and preliminary implementation for sharing primary user accounts with a secondary user.
AbstractAccountAuthenticator has new methods to retrieve and apply a bundle of credentials
to clone an account from the primary to a restricted secondary user. The AccountManagerService
initiates the account clone when it starts up the user and detects that the user has
a shared account registered that hasn't been converted to a real account.

AccountManager also has new hidden APIs to add/remove/get shared accounts. There might be
further improvements to this API to make shared accounts hidden/visible to select apps.

AccountManagerService has a new table to store the shared account information.

Added ability in PackageManager to install and uninstall packages for a secondary user. This
is required when the primary user selects a few apps to share with a restricted user.

Remove shared accounts from secondary users when primary user removes the account.

Change-Id: I9378ed0d8c1cc66baf150a4bec0ede56f6f8b06b
PackageManager.aidl
serInfo.java
f1bcca82158c39da3c3696f9af954be2c0be1809 08-Jan-2013 Geremy Condra <gcondra@google.com> Added the KeySetManager.

Bug: 7554291
Change-Id: Ic693a544f1e2cab20f6540b3fc4ff673e35bd2c6
eySet.java
ackageParser.java
e4cf73437a18c1444055f88a1fcc0d146ec23ac5 17-Dec-2012 Amith Yamasani <yamasani@google.com> Starting point for User Restrictions API

Restrictions saved as key/value pairs, mostly booleans right now
but might be expanded to other types later.

Save and restore restrictions in the user manager service.
Enforce some of the restrictions at the framework level. Some
are enforced (also) at the app level, such as in Settings.

Change-Id: Id11ffe129cb6a177e094edf79635727388c26f40
ackageManager.java
8a2ed1d7c0c4f6476e39cc37d9ebd29c7562ce01 30-Jan-2013 Dianne Hackborn <hackbod@google.com> Improve configuration of default preferred apps.

The file that defines default preferred apps is now more
robust. It is no longer a raw dump of the package
manager settings, but instead a more general list of a
target activity and filter. When reading it, the remaining
information (match value, set of potential matches) is
determined dynamically.

Change-Id: I0edc6e0d2ed3dd2a6e2238992f18f7fc1f51d8d4
PackageManager.aidl
fd7adedebf88427162a3ce27fcc9cfd3893c869d 23-Jan-2013 Dianne Hackborn <hackbod@google.com> Add new disabled state for "optional" built-in apps.

The disabled state allows you to make an app disabled
except for whatever parts of the system still want to
provide access to them and automatically enable them
if the user want to use it.

Currently the input method manager service is the only
part of the system that supports this, so you can put
an IME in this state and it will generally look disabled
but still be available in the IME list and once selected
switched to the enabled state.

Change-Id: I77f01c70610d82ce9070d4aabbadec8ae2cff2a3
ackageManager.java
ackageParser.java
d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaac 18-Jan-2013 Dianne Hackborn <hackbod@google.com> Rework ParceledListSlice to be much easier to use.

Take advantage of this to return better information about
packages filtered by permissions -- include the permissions
they have in the requested array.

Also fix issue #8026793 (Contact picture shows default pic
while searching for a contact in qsb) by using the base
package name of the Context when reporting the app name
of an operation. Otherwise you could make a resource-only
context for another application and do calls through that
and get reported as the wrong app.

Change-Id: I5e0488bf773acea5a3d22f245641828e1a106fb8
PackageManager.aidl
arceledListSlice.java
e799175b6ba3aadd972f4b861758d675d1f93987 17-Jan-2013 Dianne Hackborn <hackbod@google.com> AppOps: fix nested op tracking, new API to get apps using
permissions.

Change-Id: I20c7bd58febc01d6911a90440867eaacd133c464
PackageManager.aidl
ackageManager.java
a06de0f29b58df9246779cc4bfd8f06f7205ddb6 12-Dec-2012 Dianne Hackborn <hackbod@google.com> New "app ops" service.

Initial implementation, tracking use of the vibrator, GPS,
and location reports.

Also includes an update to battery stats to also keep track of
vibrator usage (since I had to be in the vibrator code anyway
to instrument it).

The service itself is only half-done. Currently no API to
retrieve the data (which once there will allow us to show you
which apps are currently causing the GPS to run and who has
recently accessed your location), it doesn't persist its data
like it should, and no way to tell it to reject app requests
for various operations.

But hey, it's a start!

Change-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15
ackageManager.java
73c2aee40a0e0ab2e8bd2bbbc560aa31c38eaac2 16-Mar-2012 Christopher Tate <ctate@google.com> Make immersive mode public & imply update locking

Activity.setImmersive(boolean) / android:immersive="bool" are now public.
In addition, if the foreground activity is immersive then an update lock
will be held on its behalf. This lets applications such as movie players
suppress the display of intrusive notifications, OTA-availability dialogs,
and the like while they are displaying content that ought not to be
rudely interrupted.

The update lock aspect of this mode is *advisory*, not binding -- the
update mechanism is not actually constrained; it simply uses this information
in deciding whether/when to prompt the user. It's more a guideline than
a rule.

Bug 7681380

Change-Id: I3c412a84cbf3933e3bf0168f2c71c54a86e4b7e5
ctivityInfo.java
13579ed3305bf89b41a9fa88e1347f0e0769d279 29-Nov-2012 Dianne Hackborn <hackbod@google.com> Cleaner initial boot.

This does some cleanup of the initial boot, especially when
booting in "no core apps" mode for encryption/decryption.

Change-Id: Ifb3949f580e52f54559e603c4b0b104f6bac2f6c
PackageManager.aidl
40e9f2922cae76ffcbc521481e5be8e80e8744ef 28-Nov-2012 Dianne Hackborn <hackbod@google.com> Quiet down a lot of logging.

Also fix a little problem where the USER_STARTED broadcasts
were not being sent as ordered broadcasts(!).

Change-Id: I3aa3e0a9b3900967cdd2d115ee103371b0a50c41
egisteredServicesCache.java
8b2c3a14603d163d7564e6f60286995079687690 12-Nov-2012 Jeff Sharkey <jsharkey@android.com> Useful annotations for code documentation.

Bug: 6537978
Change-Id: I806c3c09e3255f8789455f13bf37c1dde2a93f1f
egisteredServicesCache.java
69b0c974b5abb38a4443410cf09f7d5f28cf2c7f 17-Oct-2012 Christopher Tate <ctate@google.com> Merge "Fix ApplicationInfo copy ctor" into jb-mr1-dev
bcb0255770caa6b053da100de13beb840da71b21 17-Oct-2012 Christopher Tate <ctate@google.com> Fix ApplicationInfo copy ctor

Need to copy ALL the fields!

Bug 7360899

Change-Id: Ie6ed2d6f41c2efaf793ebf111adc8fa5e8b57d7c
pplicationInfo.java
a706e2fd0059b1bb86c487722dbc9fc0fda9c980 16-Oct-2012 Jeff Sharkey <jsharkey@android.com> Lock SyncQueue when user starting, copy RSC list.

Document SyncQueue locking policy and protect in onUserStarting()
and clearAllBackoffs(). Return copy of ServiceInfo list from
RegisteredServicesCache instead of exposing locking externally.

Bug: 7357776, 7352537
Change-Id: I6a32ca98a355b639d4207a88bde572179beae359
egisteredServicesCache.java
6ab72d74b86e5f4ec3c3909366fd46c225a66bd7 09-Oct-2012 Jeff Sharkey <jsharkey@android.com> Make RegisteredServicesCache multi-user aware.

RegisteredServicesCache is used to track account authenticators and
sync adapters, which can vary based on user. This change requires
that callers now provide a userId when making cache requests. It
continues persisting into a single file for now, which is keyed based
on UID.

It now watches for package broadcasts from all users, and scans
packages on-demand. It changes cache callers to provide a relevant
userId, and evicts cache entries when users are stopped.

Changes SyncManager to only work with accounts from running users,
only kicking off pending syncs once a user is started.

Bug: 7276595, 7316150
Change-Id: I79466a84aa69aa37e4bd9691c5d6221d3662ff29
egisteredServicesCache.java
egisteredServicesCacheListener.java
9c2a38ed10592a54d9bb753ef882632f7a8cd446 08-Oct-2012 Amith Yamasani <yamasani@google.com> Merge "Fix resource reading for secondary users" into jb-mr1-dev
64442c11555d828a41af0b8a58ab933357889061 07-Oct-2012 Amith Yamasani <yamasani@google.com> Fix resource reading for secondary users

Bug: 7086881

Load resources for the correct user.

Also clean up package monitoring and locking.
Added dump method to SearchManagerService.

Sneaking in a change to make crash dialogs visible to current user.

Change-Id: Id56dd15428d66084de995e28be242db27c15fda3
ackageItemInfo.java
5962b12bedc4a1d0354816c1cd6b06ba04f6d807 05-Oct-2012 Craig Mautner <cmautner@google.com> Adds showWhenLocked attribute to Activities.

The new attribute allows an Activity such as the alarm to appear
on all users screens.

Bug: 7213805 fixed.
Change-Id: If7866b13d88c04af07debc69e0e875d0adc6050a
ctivityInfo.java
ackageParser.java
4a9f071f3d3fdd20615167cda6f22da912bc60c7 03-Oct-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7272775: Auto Start Apps Not Starting

Bad defaults were causing stopped state to be set at each
boot.

Change-Id: I49b04e9c62f6ac391054201b508fddb6c7985615
ackageUserState.java
3ff8e1a80058e5557d13693d3223e1aa011c0038 29-Sep-2012 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #7211769 and #7244492, thrash around on #7226656." into jb-mr1-dev
d4ac8d7b3de27a9f0e4c6af2496ca71d794e42d1 28-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7211769 and #7244492, thrash around on #7226656.

Issue #7211769: Crash dialog from background user has non-working "report"

The report button now launches the issue reporter for the correct user.
Also for crashes on background users, either disable the report button,
or simply don't show the dialog depending on the build config.

Issue #7244492: Bugreport button in Quick Settings doesn't actually do anything

Now they do.

Issue #7226656: second user seeing primary user's apps

I haven't had any success at reproducing this. I have tried to tighten up
the path where we create the user to ensure nothing could cause the
user's applications to be accessed before the user it fully created and thus
make them installed... but I can't convince myself that is the actual problem.

Also tightened up the user switch code to use forground broadcasts for all
of the updates about the switch (since this is really a foreground operation),
added a facility to have BOOT_COMPELTED broadcasts not get launched for
secondary users and use that on a few key system receivers, fixed some debug
output.

Change-Id: Iadf8f8e4878a86def2e495e9d0dc40c4fb347021
ctivityInfo.java
ackageParser.java
ackageUserState.java
serInfo.java
37d83a3caf138e35fa1a355787d20c351f6b37a6 27-Sep-2012 Ben Gruver <bgruv@google.com> Pass the originating uid to the package verifier

Bug: 6923241
Change-Id: I85a3e0d53b469543cb0551d3a440d2663b5d0697
erificationParams.java
98edc951712823dbf5db2b7e9c203a0e98fc616b 25-Sep-2012 Amith Yamasani <yamasani@google.com> Load resources for the correct user

For apps that are only installed on secondary users, the SystemUI is
unable to see them by default. Added some methods to explicitly pass the
userId of the user the resources are requested for by the StatusBarIcon

Bug: 7214384

Also fix binding to remote views

Bug: 7192802

Change-Id: I5d6c5f624aa37fb231f3467f9764c8d99077a91d
ackageManager.java
752cd922f7091dfd5401faf70dc248934a9dbb6d 24-Sep-2012 Jeff Sharkey <jsharkey@android.com> Always bind to DefaultContainerService as OWNER.

When PackageManagerService deals with external storage, always bind
to DefaultContainerService as USER_OWNER. This avoids binding to a
stopped user, which would fail.

Bug: 7203111
Change-Id: I8e303c7558e8b5cbe4fea0acc9a472b598df0caa
ackageCleanItem.java
b939e35274334d1f5e71a526efe8d235eb6d7387 23-Sep-2012 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #7209355, #7214271." into jb-mr1-dev
8da429e80d1778d7bcfbfbd64355c70fb466b3ce 23-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7209355, #7214271.

Issue #7209355: Intent on the secondary user results in an intent picker
in the Primary user.
Issue #7214271: Crash in system UI

Also fix a bug where I recently broke the removeTask() operation in the
activity manager where it would remove the wrong task.

Change-Id: I448c73a0e83a78d9d8d96b4629658c169888d275
esolveInfo.java
a91c9f9f7a3c5d09333bdf27ef06012bb4e7d710 23-Sep-2012 Eino-Ville Talvala <etalvala@google.com> Merge "Unhide and document feature android.hardware.camera.any." into jb-mr1-dev
c9108b1856c7b6d98ddc04fbe330df21f2da890d 22-Sep-2012 Eino-Ville Talvala <etalvala@google.com> Merge "Add hardware feature android.hardware.camera.any." into jb-mr1-dev
58d37b55bd228032355360ea3303e46a804e0516 18-Sep-2012 Svetoslav Ganov <svetoslavganov@google.com> Multi-user support for the accessibility layer.

1. This change converts the accessibility manager service to
maintain a state per user. When the user changes the services
for the user that is going away are disconnected, the local
accessibility managers in the processes for this user are
disabled, the state is swapped with the new user's one, and
the new user state is refreshed.

This change updates all calls into the system to use their
user specific versions when applicable. For example, regisetring
content observers, package monitors, calls into other system
services, etc.

There are some components that are shared across users such
as UI created by the system process and the SystemUI package.
Such components are managed as a global state shared across
all users and are updated accordingly on a user switch. Since
the SystemUI is running in a normal app process this change
adds hidden APIs on the local window manager to allow the
SystemUI to notify the accessibility layer that it will run
accross users.

Calls to AccessibiltyManager's isEnabled(), isTouchExplorationEnabled()
and sendAccessibilityEvent return false or a are a nop for a
background user sice he should not send accessibility events,
and should not perform touch exploration.

Update the internal accessibility tests due to changes in the
AccessibilityManager.

This change also fixes several issues that were encountered
such as calling out the accessibility manager service with a
lock held.

Removed some incorrect debugging code from the TouchExplorer
that was leading to a system crash.

bug:6967373

Change-Id: I2cf32ffdee1d827a8197ae4ce717dc0ff798b259
ackageManager.java
920ace0bbc2d4133dbec991d2636c99a57d6245e 21-Sep-2012 Amith Yamasani <yamasani@google.com> Query users excluding any being removed

Keep track of user creation and last logged-in time.
adb shell dumpsys users
User switcher shouldn't show users about to be removed.
No need to check for singleton for activities.

Bug: 7194894
Change-Id: Ic9a59ea5bd544920479e191d1a1e8a77f8b6ddcf
serInfo.java
72b4db15b6f30a5bc1c906aece93873b223f7dc2 19-Sep-2012 Eino-Ville Talvala <etalvala@google.com> Unhide and document feature android.hardware.camera.any.

Bug: 6847310
Change-Id: I67a973dccfdc735aac457fce625003a386ff2fbe
ackageManager.java
752af83e5b28a4225510406a0ec868585caf1ccc 18-Sep-2012 Eino-Ville Talvala <etalvala@google.com> Add hardware feature android.hardware.camera.any.

This feature means that a device has at least one camera, facing in
some direction, so it matches devices that:
- Have just a back-facing camera
- Have just a front-facing camera
- Have both

In the future, it could also be used for devices that have a camera
that's neither front- or back-facing, such as a webcam or other
flexibly-pointed device.

Hidden for now.

Bug: 6847310
Change-Id: I51ea3b4db2020b0f056d77e10629a6b5f2daebe1
ackageManager.java
8832c18d8b63367929c2d394c9c508f56003d400 18-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix API review bugs.

7173152 API REVIEW: android.content.pm.PackageUserState
7172969 API REVIEW: android.app.PendingIntent
7172730 API REVIEW: android.content.Context
7172726 API REVIEW: android.manifest.permission

Change-Id: Iad470256d3b5ca5596487f6a699ec1871457c3b5
ackageManager.java
ackageUserState.java
2ca2c8787130506d350d997c18bbc274faf88e37 17-Sep-2012 Dianne Hackborn <hackbod@google.com> More adjustments to permissions.

- New "cost money" flag can be put on a permission to
have this emphasized in the UI.
- Some further re-organization of permissions to better
match UX spec.

Change-Id: I450ac739eff6b90e7c7fc39589d68db82b61f897
ackageParser.java
ermissionInfo.java
d65afc65ea5b2bf83889dd88a9c94f895da8aece 16-Sep-2012 Dianne Hackborn <hackbod@google.com> Merge "More multi-user stuff." into jb-mr1-dev
5dc5a00e7ebadc085ded7e29feacd17e53698486 16-Sep-2012 Dianne Hackborn <hackbod@google.com> More multi-user stuff.

- New public APIs to find out when a user goes to the foreground,
background, and is first initializing.
- New activity manager callback to be involved in the user switch
process, allowing other services to let it know when it is safe
to stop freezing the screen.
- Wallpaper service now implements this to handle its user switch,
telling the activity manager when it is done. (Currently this is
only handling the old wallpaper going away, we need a little more
work to correctly wait for the new wallpaper to get added.)
- Lock screen now implements the callback to do its user switch. It
also now locks itself when this happens, instead of relying on
some other entity making sure it is locked.
- Pre-boot broadcasts now go to all users.
- WallpaperManager now has an API to find out if a named wallpaper is
in use by any users.

Change-Id: I27877aef1d82126c0a1428c3d1861619ee5f8653
serInfo.java
13d428e8306d1bb1a3017045bc5d2f76edec32df 13-Sep-2012 rich cannings <richc@google.com> Send more information to verifiers

Send package name, version code and the uid of the application requesting the
install to package verifiers.

Bug: 7164155
Change-Id: I2464dc5d4551f60b4f38f7982495a8920c83e1cd
ackageManager.java
erificationParams.java
7454d3b73cfd0d7ad58b0285102b09aad1e0150f 13-Sep-2012 Dianne Hackborn <hackbod@google.com> New permissions UI, again.

Change-Id: I0bbecd88ff1f212b30d1ef32d5bcaa49cdf1e9ce
ackageParser.java
ermissionGroupInfo.java
b049e212ab7fe8967893c202efcb30fecfdb82fb 08-Sep-2012 Jeff Sharkey <jsharkey@android.com> Include user identifier in external storage paths.

When building external storage paths, always include user in path
to enable cross-user paths and aid debugging.

Each Zygote process continues to only have access to the appropriate
user-specific emulated storage through bind mounts. A second set of
mounts continue supporting legacy /sdcard-style paths. For example,
a process running as owner has these mount points:

/storage/emulated_legacy
/storage/emulated_legacy/Android/obb
/storage/emulated/0
/storage/emulated/obb

Since Environment is created before Zygote forks, we need to update
its internal paths after each process launches.

Bug: 7131382
Change-Id: I6f8c6971f2a8edfb415c14cb4ed05ff97e587a21
serInfo.java
151ec4c9f8ca34625733730a4551a23eb97cda23 08-Sep-2012 Amith Yamasani <yamasani@google.com> More multi-user methods in PM

pm can list installed packages by user now.

Bug: 6926465

Change-Id: I822311bfd6e7e2d6fb315fc484739fbf953c9bb6
PackageManager.aidl
ackageManager.java
5e03e2ca7d25b899b129baad2dd5eca6bf99d88a 06-Sep-2012 Dianne Hackborn <hackbod@google.com> More multi-user stuff:

- New (hidden) isUserRunning() API.
- Maintain LRU list of visited users.
- New FLAG_IS_DATA_ONLY for ApplicationInfo.
- Clean up pending intent records when force-stopping a user (or package).
(Also fixes bug #6880627: PendingIntent.getService() returns stale
intent of force stopped app)
- Fix force-stopping when installing an app to do the force-stop across
all users for that app.
- When selecting which processes to kill during a force stop, do this
based on the actual packages loaded in the process, not just process
name matching.
- You can now use --user option in am when starting activities, services,
and instrumentation.
- The am --user option accepts "current" and "all" as arguments.
- The pm uninstall command now uninstalls for all users, so it matches
the semantics of the install command.
- PhoneWindowManager now explicitly says to start home in the current
user.
- Activity manager call to retrieve the MIME type from a content provider
now takes a user argument, so it will direct this to the proper user.
- The package manager uninstall paths are now implemented around
PackageSetting, not PackageParser.Package. This allows them to work
even if the application's apk has been removed (in which case it only
exists as a PackageSetting, not the PackageParser.Package parsed from
the apk).

Change-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40
pplicationInfo.java
nstrumentationInfo.java
035ce2ca92742894f7f906c93d7d217c647aa19a 05-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> Merge "Add support for "-rtl" in resources" into jb-mr1-dev
a2875f481bc40fb5c7e5ae2d475dfb6d557294c0 31-Aug-2012 rich cannings <richc@google.com> Merge "Notify verifiers that verification is complete" into jb-mr1-dev
f203aeef993b0f4ce65c9630d06bbd50a504e89f 30-Aug-2012 Amith Yamasani <yamasani@google.com> Enforce permissions for calls with specified userId

Fix a couple of places where incorrect userIds were being passed in.

Change-Id: I398c676e0488ff7e584be96e96c8b32652134238
ackageManager.java
d1b5cfc94ae940f42be352e7ed98c21c973471b2 29-Aug-2012 rich cannings <richc@google.com> Notify verifiers that verification is complete

Send the Intent.ACTION_PACKAGE_VERIFIED to all verifiers when
verification is complete (either one verifier verified the package or a
timeout occurred). Details of what occurred is in a new extra,
PackageManager.EXTRA_VERIFICATION_RESULT.

Bug: 7048930
Change-Id: I4f9855a29b0eb6d77f469891402c69e2e8922945
ackageManager.java
7e67151b912622f8a279ab1523a9bcf26ebaff3d 27-Aug-2012 rich cannings <richc@google.com> Add permission checks for Verification API calls

Ensure that only applications with
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT can call application
verification APIs, like PackageManager.verifyPendingInstall and
PackageManager.extendVerificationTimeout

Bug: 7049083
Change-Id: I5fc28b37e864d67cd319a1ed9d03a90dd15ad052
ackageManager.java
4428e17c5e05c0dad76da8f1c28ccba62a66cd91 25-Aug-2012 Dianne Hackborn <hackbod@google.com> Some clean up of app install and user management.

UserManagerService is now closely tied to PackageManagerService,
sharing the same locks. There is no longer direct access of
Installer by UserManagerService, instead the package manager is
back to solely owning it.

Creating a new user now correctly only installs system apps for
that user.

Fixed some misc bugs, where we were getting nulls when
querying content providers and instrumentation in uninstalled
users, incorrect locking, etc.

Change-Id: Ife69b6e373d0cf7c5cfc03fc588e36b43ad5d8b0
egisteredServicesCache.java
7767eac3232ba2fb9828766813cdb481d6a97584 24-Aug-2012 Dianne Hackborn <hackbod@google.com> Keep track of whether an app is installed for each user.

This add a new per-user state for an app, indicating whether
it is installed for that user.

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

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

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

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

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

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

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

Change-Id: I00e66452b149defc08c5e0183fa673f532465ed5
pplicationInfo.java
PackageManager.aidl
anifestDigest.java
ackageCleanItem.aidl
ackageCleanItem.java
ackageInfoLite.java
ackageManager.java
ackageParser.java
ackageUserState.java
d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0c 22-Aug-2012 rich cannings <richc@google.com> Allow verifiers to extend timeout

Create a new verifier API to extend the timeout for a giving package,
including the resulting action (allow or deny) upon the timeout occuring.

Bug: 6901038
Change-Id: I351f7944327f863aff1d7dd1227be74652fa1511
PackageManager.aidl
ackageManager.java
5f7979993979466c79ab4f38d83c6f2aca361662 16-Jun-2012 Fabrice Di Meglio <fdimeglio@google.com> Add support for "-rtl" in resources

- fix bug #7035019 Need to have "-rtl" support for Resource

Change-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c
ctivityInfo.java
0c3804950236fe170ebf6cc7a5f1e3e305b8f315 21-Aug-2012 Dianne Hackborn <hackbod@google.com> Improve multi-user app management.

Introduce API to get per-user storage information, keep track
of services associated with users, and various small cleanup.

Change-Id: I5d4e784e7ff3cccfed627d66a090d2f464202634
PackageManager.aidl
ackageManager.java
ackageStats.java
706e8ba26bf0de19ad5f736516dae40c4c88c2d7 20-Aug-2012 rich cannings <richc@google.com> Pass URLs to package verifiers

This change passes the originating URL and accompanied referrer to
package verifiers, when available.

Bug: 6544677
Change-Id: I9ebc71bc13f549bd88267e444816151a99bda000
PackageManager.aidl
ackageManager.java
erificationParams.aidl
erificationParams.java
a3f133afe885f9e005dfc0584cb7b3b90f75f665 10-Aug-2012 Amith Yamasani <yamasani@google.com> Save preferred activity info with user id.

So each user can have their own set of intent resolution preferences.

ResolverActivity now launches the activity on the correct user, and
persists the preference for the correct user.

Bug: 6961905
Change-Id: I6d3a8a9af89bc649277d4fc8d0f367ee123f8392
PackageManager.aidl
ackageManager.java
2a00329c6d55c6cd9166e01963d7410e95d80d21 15-Aug-2012 Amith Yamasani <yamasani@google.com> UserHandle to UserSerialNo mapping

Use AtomicFile for usermanager files.

Added a MANAGE_USERS permission that apps (signature permission) can use
to create/query/modify/remove users.

Change-Id: I5cf232232d0539e7508df8ec9b216e29c2351cd9
serInfo.java
f02b60aa4f367516f40cf3d60fffae0c6fe3e1b8 16-Aug-2012 Dianne Hackborn <hackbod@google.com> Rename UserId to UserHandle.

This is the start of turning this into a formal public API.

Change-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0
ackageParser.java
258848d2ae04f447ff1c18023fa76b139fcc0862 11-Aug-2012 Amith Yamasani <yamasani@google.com> User Manager service to manage users and query user details

Moved a bunch of methods from PackageManager to UserManager.

Fix launching of activities from recents to correct user.

Guest creation APIs

Change-Id: I0733405e6eb2829675665e225c759d6baa2b708f
PackageManager.aidl
ackageManager.java
serInfo.java
5a28605155e51cdbd58737a8b7c47b337c5539bb 09-Aug-2012 Nick Kralevich <nnk@google.com> Merge "PackageParser: remove temporary code." into jb-mr1-dev
a30a4806aca7f36fb416f485b332060b03a16c0b 09-Aug-2012 Nick Kralevich <nnk@google.com> PackageParser: remove temporary code.

This code isn't needed and wasn't doing what I thought
it was doing.

Bug: 3306452
Change-Id: Ifeab672e379fd331a6f0ef1504eebb29aa6b4466
ackageParser.java
a56d9cecee8a34e0554770ac6253dd3a76b9199c 08-Aug-2012 Rich Cannings <richc@google.com> Merge "Revert "Pass URLs to package verifiers"" into jb-mr1-dev
e1d7c711df3e3a2d2f195457882aa4ddb5626167 08-Aug-2012 Rich Cannings <richc@google.com> Revert "Pass URLs to package verifiers"

This reverts commit 24713907fe4632d263aea82f7a35c8fb08918a09

Change-Id: Ie04ba73475b813635c4a74915c45e83250801b6b
PackageManager.aidl
ackageManager.java
9d16c219f1ca0836a832e25a61fcaf9c1d0dd67b 08-Aug-2012 Nick Kralevich <nnk@google.com> Merge "Content Providers: change default for android:exported" into jb-mr1-dev
7d19e0242faac8017033dabb872cdf1542fa184c 08-Aug-2012 Dianne Hackborn <hackbod@google.com> More mult-user API work.

- You can now use android:singleUser with receivers and providers.
- New API to send ordered broadcasts as a user.
- New Process.myUserHandle() API.

For now I am trying out "user handle" as the name for the numbers
representing users.

Change-Id: I754c713ab172494bb4251bc7a37a17324a2e235e
ctivityInfo.java
ackageParser.java
roviderInfo.java
erviceInfo.java
f097b16cfddce2dbb097b929458fe9b0a402963e 28-Jul-2012 Nick Kralevich <nnk@google.com> Content Providers: change default for android:exported

Change the default value of android:exported to true
for applications which target a newer API version.
This will help stop inadvertent content provider
exposure to untrusted apps.

Bug: 3306452

Change-Id: I8cb34e823aef9551319951ce92217345c54cee63
ackageParser.java
329465c6b2407ee086a171cac1a3581f83dbb048 03-Aug-2012 Dianne Hackborn <hackbod@google.com> Merge "Add APIs for interacting across users." into jb-mr1-dev
b4163a6e12ee7100c758c6d3d062ade1f2843fce 03-Aug-2012 Dianne Hackborn <hackbod@google.com> Add APIs for interacting across users.

- Expose the existing Context.sendBroadcast() as
Context.sendBroadcastAsUser().
- Add new android:singleUser attribute for services.
- Add new INTERACT_ACROSS_USERS_FULL permission for full
system-level access to cross-user interface (allows
sendBroadcastAsUser() to send to any receiver).
- Add new INTERACT_ACROSS_USERS_FULL permission for
more restricted cross-user interaction: this is required
for android:singleUser, and allows you to use
sendBroadcastAsUser() but only to send to your own
receivers.

Change-Id: I0de88f6718e9505f4de72e3f45d29c0f503b76e9
ackageParser.java
erviceInfo.java
24713907fe4632d263aea82f7a35c8fb08918a09 26-Jul-2012 rich cannings <richc@google.com> Pass URLs to package verifiers

This change passes the originating URL and accompanied referrer to
package verifiers, when available.

Bug: 6544677
Change-Id: If9ff6663ad7f3426b7aea2aceb1413b689788138
PackageManager.aidl
ackageManager.java
908aecc3a63c5520d5b11da14a9383f885b7d126 01-Aug-2012 Dianne Hackborn <hackbod@google.com> Start moving away from DisplayMetrics.DENSITY_DEVICE.

This puts in most of the infrastructure needed to allow us to
switch between different densities at run time. The main remaining
uses of the global are to initialize the Bitmap object (not sure
what to do about that since it doesn't have anything passed in
the constructor to get this information from), and being able to
load drawables if we need a different density than what was preloaded
by zygote.

Change-Id: Ifdbfd6b7a5c59e6aa22e63b95b78d96af3d96848
ctivityInfo.java
40e5df95ff9468cec0624ca7fb14e51c13e4b047 01-Aug-2012 Dianne Hackborn <hackbod@google.com> Merge "Make AtomicFile a public API. It's about time!" into jb-mr1-dev
39606a007a5b1309dd000234f2b8cf156c49fd0f 01-Aug-2012 Dianne Hackborn <hackbod@google.com> Make AtomicFile a public API. It's about time!

Change-Id: Ib34e294747405b7ab709cb0bbb2d9a0cc80ce86a
egisteredServicesCache.java
e23ae144cc1b6487a7c0e7a33d3016431c81850c 31-Jul-2012 Kenny Root <kroot@google.com> am fa74f7e0: am bba948dc: Merge "Delay AccountManagerService initialization" into jb-dev

* commit 'fa74f7e04fcad1258a1b85515547dba0466086d8':
Delay AccountManagerService initialization
26ff6626fc4ee0ae46f01ad309b366921da589fe 30-Jul-2012 Kenny Root <kroot@google.com> Delay AccountManagerService initialization

Since applications can have Account providers, they need to be delayed
until after PackageManagerService says everything is mounted.
Otherwise the accounts associated with that provider will be removed
immediately when startup happens.

Bug: 6820670
Change-Id: Iba81765260421649f706624d0605a40ebc1347b1
egisteredServicesCache.java
ddd88726a247e4100cb62b3dc9d0887ca2ae2ec4 26-Jul-2012 Jeff Smith <whydoubt@yahoo.com> am 71930dd7: am a45746ef: Fix several cases of broken droiddoc syntax external issue 35214

* commit '71930dd77e4dc6f6be5c648019d2ab0da5f0584c':
Fix several cases of broken droiddoc syntax external issue 35214
a45746efadd11bb7dfab026fb3c81a25fae74ca4 19-Jul-2012 Jeff Smith <whydoubt@yahoo.com> Fix several cases of broken droiddoc syntax
external issue 35214

patch contributed by Jeff Smith <whydoubt@yahoo.com>

Change-Id: I70dcee88a140699bf3e1ab369bed6dcd2fdd3d83
ackageManager.java
554259fe02afba852c9999e827b3c086e92637bd 13-Jun-2012 Jeff Sharkey <jsharkey@android.com> am 9eabf916: am f6f7f1d2: Low disk space string change, surface state.

* commit '9eabf916dc5d53bc6c765d39cca0847993e73dcf':
Low disk space string change, surface state.
b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97a 19-Apr-2012 Amith Yamasani <yamasani@google.com> Add an icon to the user information.

Store the icon in the user folder under /data/system,
similar to how the wallpaper is stored.

Change-Id: Id8ccb55b9e2ba7b4c557505a7f69f04eca1518cf
PackageManager.aidl
ackageManager.java
serInfo.java
f6f7f1d2dc6e8fad5d6ff9a56af9929488873b4f 13-Jun-2012 Jeff Sharkey <jsharkey@android.com> Low disk space string change, surface state.

Surface current low disk state through IPackageManager for use in
Settings app.

Bug: 6576409
Change-Id: I9ae9ce99a2faa3015a237036c03567d1ae11628f
PackageManager.aidl
b1add0b8f251e237297ff7bad6a1107ef7d760f2 12-Jun-2012 Dianne Hackborn <hackbod@google.com> am 6892f1ec: am 0f6471ac: Merge "Fix issue #6641368: can\'t launch gallery" into jb-dev

* commit '6892f1ec9670432f1cab71813592077bea991a8b':
Fix issue #6641368: can't launch gallery
2bd8d0403be62df679f0f94ab4d84c9ae9a2e918 11-Jun-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6641368: can't launch gallery

This is a revert of 1db36528b12395b9ed9bf8a1005a6d4ace737627,
but with comments added so I don't make this mistake again. :)

Change-Id: I053216279e3721f08f32f561bb989736ef619f82
ackageParser.java
c7e2d4a57bca3c9b2fe005041314c9cbc6f843b2 08-Jun-2012 Dianne Hackborn <hackbod@google.com> am 33e39aef: am 0876ab0a: Merge "Fix issue #6295373: "Package com.google.android.apps.authenticator2 has..." into jb-dev

* commit '33e39aefdf9266dc4858f7a6171f46f43ffa3ec3':
Fix issue #6295373: "Package com.google.android.apps.authenticator2 has...
0876ab0ac17518c479e9dffe025884870a586d9c 08-Jun-2012 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #6295373: "Package com.google.android.apps.authenticator2 has..." into jb-dev
b313a9990f378a7dd136de2718ae25e442b85ecb 08-Jun-2012 Kenny Root <kroot@google.com> am f5490997: am af95137a: Merge "Whoops, this version number wasn\'t updated when JB was introduced!" into jb-dev

* commit 'f549099705d0e55410072db89926f1cb95a3e7b5':
Whoops, this version number wasn't updated when JB was introduced!
1db36528b12395b9ed9bf8a1005a6d4ace737627 08-Jun-2012 Dianne Hackborn <hackbod@google.com> Whoops, this version number wasn't updated when JB was introduced!

Change-Id: I9c9cd658cc1cba99b84059c8873c22b21b9f3c19
ackageParser.java
d0c5f515c05d05c9d24971695337daf9d6ce409c 08-Jun-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6295373: "Package com.google.android.apps.authenticator2 has...

...mismatched uid: X on disk, Y in settings" errors on Froyo and Gingerbread

Deal more gracefully with the uid changing in three ways:

1. If the uid on disk has become root, then have installd change it to
the application's uid. This is to correct a potential case where
installd was interrupted while linking or unlinking the libs dir,
during which it temporarily changes the owner of the dir to root
so that a malicious app can not get in its way. So if the uid on
disk has become root, we assume we can safely just change it back
to the correct uid.

2. When scaning packages at boot, use the same "delete and rebuild data
directory" code for third party applications as we have for system
applications. This allows us to at least end up in a state where the
app will run, even if its data is lost.

3. But we really don't want to get in to case 2, so if an application
update is being installed and we find that the uid we now have for
the app is different than the one on disk, fail the update. This will
protect against for example a developer changing the sharedUserId of
their app and getting into this bad state.

Bug: 6295373
Change-Id: Ic802fdd818ac62449ff3c61d1fff1aa4d4942f39
ackageManager.java
cbc5e0aae45374ec92574b1cab9b31e494ce10e7 02-Jun-2012 Dianne Hackborn <hackbod@google.com> am 3522225d: am ea01e4a2: Merge "Survey says: NIET!" into jb-dev

* commit '3522225dba19e77defaf56f0e70c0382c2cbb0a2':
Survey says: NIET!
4034bc431df8903072bca513a81ecdcf858c718b 01-Jun-2012 Dianne Hackborn <hackbod@google.com> Survey says: NIET!

Bug: 6593206
Change-Id: I5390609a5615d6aff1793a9bc361012a0cea330b
ackageParser.java
ermissionGroupInfo.java
327bc6bb5037dbd0eb05bdb4b0897196bd154366 31-May-2012 Kenny Root <kroot@google.com> am 65519b8b: am 03e93e51: Merge "Move package-wide flags out of parseApplication" into jb-dev

* commit '65519b8bb94321889eb3e34c76428f6dd9e0bd84':
Move package-wide flags out of parseApplication
7cb9be26c1f16de738178e89e4cf9ec8a35e7d41 31-May-2012 Kenny Root <kroot@google.com> Move package-wide flags out of parseApplication

Being on SD card and being forward-locked are package-wide flags that
shouldn't depend on an APK having an <application> stanza.

Bug: 6563724
Change-Id: If5f2159cd8e3fa136f959b656d82b05ea6bdfae5
ackageParser.java
bad4c4bf71c4d5c3077ff8f5020b09a736a86d9b 21-May-2012 Dianne Hackborn <hackbod@google.com> am ccf4e2f7: am abe39277: Merge "Fix issue #6515427: Add android.hardware.television and fix..." into jb-dev

* commit 'ccf4e2f71b65ace6d55c1e8513dd60b1123805da':
Fix issue #6515427: Add android.hardware.television and fix...
0cf2c8a53350a800055e76c1c9bf0a6d44480768 18-May-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6515427: Add android.hardware.television and fix...

...logic for notouch in Configuration

Added new TELEVISION feature.

We now force the configuration to "television" if the TELEVISION
feature is set, and "notouch" if the TOUCHSCREEN feature is not set.

Also cleaned up documentation, deprecated some configurations that
are not used.

Change-Id: If1c7a284b580a8a66bda2a75f0c7fa841b3dc9b7
ackageManager.java
d640d0641ac87035c608e85d3ab7e499a8b27d2f 14-May-2012 Jeff Sharkey <jsharkey@android.com> am f2fe4cb1: am cd586258: Merge "Enforce READ_EXTERNAL through Settings.Secure." into jb-dev

* commit 'f2fe4cb11b2b93acf1a983e856efe26b6bb79683':
Enforce READ_EXTERNAL through Settings.Secure.
cd5862586ab555b53ffd0a62488843838d1aa94d 12-May-2012 Jeff Sharkey <jsharkey@android.com> Merge "Enforce READ_EXTERNAL through Settings.Secure." into jb-dev
f53857716a0db805c51c0cae93550d90e32e4749 11-May-2012 Jeff Sharkey <jsharkey@android.com> Enforce READ_EXTERNAL through Settings.Secure.

Always defers to user-defined setting, when present.

Bug: 6389556
Change-Id: I079d2a41b772facfdac74eefc4c8072fc9284f97
ackageManager.java
e4fd3d50c7a39313120a005e659640bc10d94ef4 11-May-2012 Kenny Root <kroot@google.com> am 42a419b4: am 718af32a: Merge "Use long instead of int for file offsets" into jb-dev

* commit '42a419b4c0e7d16145e336ceec709dcefbdcf894':
Use long instead of int for file offsets
103d53005e7a3c2735f4ac76fa9b795a7e7e39d7 10-May-2012 Kenny Root <kroot@google.com> Use long instead of int for file offsets

Use long instead of int so we don't run into a 2GB file limit.

Fix possible overflows in offset and length.

Change-Id: Idb3a34f5600f9c2372b9c89256f21757049fa43b
ontainerEncryptionParams.java
imitedLengthInputStream.java
c72b502d897fc1314ccbb8799f8ca66a3d131e17 09-May-2012 Kenny Root <kroot@google.com> am 83ea8609: am 29bb27ef: Merge "Add encryption parameters to package installation" into jb-dev

* commit '83ea86091bf94571912694c7caf8be1c21727f91':
Add encryption parameters to package installation
ceb1b0bfaea56251796b08c07b963de7403d84eb 24-Apr-2012 Anonymous Coward <nobody@android.com> Add encryption parameters to package installation

Change-Id: Ic9f8ab9f8110f08bb3c00725cfce5b8ee7b766f3
ontainerEncryptionParams.aidl
ontainerEncryptionParams.java
PackageManager.aidl
imitedLengthInputStream.java
acAuthenticatedInputStream.java
ackageManager.java
c77218e6b0f69d8480ec2bf9899806fc10b93936 07-May-2012 Dianne Hackborn <hackbod@google.com> am 25fc66b8: am 7bfa1457: Merge "Finish up issue #6249094: Display permissions based on relevance to private data" into jb-dev

* commit '25fc66b898a35796af65ec7e3eb9b1584588e063':
Finish up issue #6249094: Display permissions based on relevance to private data
99222d212f9ff5081d4ce6eef09dbe8eff85b83a 07-May-2012 Dianne Hackborn <hackbod@google.com> Finish up issue #6249094: Display permissions based on relevance to private data

Added bitmaps for permission group icons. We had to pick either
icons for a dark or light background, and it had to be light for
settings, so the installer theme has gone back to dark.

Tweaked the permission groups to match the icons.

Redid the group priorities to make them correct (they were written
with higher priorities being less important).

Fixed bug where priority was not being used for system apps.

Change-Id: Ia3d3f0c1614a11b4cfd11682ce9e6c9f87d75c06
ackageParser.java
66388dcb09018933ccd1d38eae563f0890ba4f06 04-May-2012 Fabrice Di Meglio <fdimeglio@google.com> Hide RTL related APIs - DO NOT MERGE

- fix bug #6441155 API review: @hide RTL layout APIs

Change-Id: I13c5ea5f579cecffed9d517f06180ab0576cd26a
pplicationInfo.java
fd5015be41080970c9a992a8ef17a1deefb57478 01-May-2012 Dianne Hackborn <hackbod@google.com> Add new APIs for permission group flags and priorities.

Change-Id: I2d476c6aa9dbd05407ec49be45986f42d2acf9e7
ackageParser.java
ermissionGroupInfo.java
d776f617f5ad8052245e173602a7b80703f5fb39 24-Apr-2012 Jeff Sharkey <jsharkey@android.com> Disable READ_EXTERNAL enforcement until API level cut.

Bug: 6389556
Change-Id: I78238b9de24c1b8ebb4fdc35d8aafd2e85a4adfe
ackageManager.java
a4a54e2a5f383e766bfecaec776e0b00002badd1 17-Apr-2012 Amith Yamasani <yamasani@google.com> Make sure persistent processes are not replicated for secondary users.

An intent is launched in a singleton process if the process is persistent
and the resolved activity/service/etc is not requested to run in a different
process.

Change-Id: I1463e73a76bc8bde4185f9cf4395edb47515841d
ackageParser.java
5d32e772b3a19c1ac84e665f2885755427d590c8 13-Apr-2012 Jeff Sharkey <jsharkey@android.com> Enforce READ_EXTERNAL on non-user builds.

Enable default enforcement of READ_EXTERNAL_STORAGE on non-user
builds. Users can still explicitly enable enforcement in Settings.

Bug: 6131916
Change-Id: I7dc66b624ad252ed2a2ad3647f3ea85dda7f8e82
PackageManager.aidl
ackageManager.java
1c27576aff247ff1d7789e0a571958726f161593 12-Apr-2012 Jeff Sharkey <jsharkey@android.com> Include enforcement state in dumpsys.

Bug: 6323087
Change-Id: I6d779798538c114ea9816d3bdbbff5552c285df6
ackageManager.java
79af6063d536eb7edbc73be0fa2b8eb734758db7 10-Apr-2012 Dianne Hackborn <hackbod@google.com> Merge "Hide the optional permission stuff, not making it in to JB."
e824120016248bcfe3962883fe9f3b0481dd1c3d 06-Apr-2012 Dianne Hackborn <hackbod@google.com> Hide the optional permission stuff, not making it in to JB.

Also lock down the rest of the development tools permissions to
be development permissions that must be granted through an
explicit shell command.

Change-Id: I1ba216fffe1aab4bb9f83fcef108efc504f892f4
ackageInfo.java
ackageParser.java
5e4705a82786103982b2c9980b0dcd0bb54208d3 06-Apr-2012 Dianne Hackborn <hackbod@google.com> Fix dumb bug.

Change-Id: I5e0dfc0f03677888c22d938013299a8ec4597c69
ackageParser.java
31b0e0e86ad061cd8005e80817bcad017e2d56dd 06-Apr-2012 Dianne Hackborn <hackbod@google.com> Implement call log permission compatibility.

If a pre-JellyBean application requests read/write contacts, it
will implicitly be given read/write call log.

Change-Id: I029db4b09fda737bb8fba4e1611355ebdbbfd34f
ackageParser.java
dd8fab2629131b09367df747afd9a61e42dd1992 23-Mar-2012 Adam Powell <adamp@google.com> TaskStackBuilder and Activity navigation features for framework

Promote navigation helpers from the support library to the core
platform.

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

Automatic Up navigation for Activities

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

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

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

Change-Id: If163e27e59587f7af36975a09c986cb117ec3bc6
ctivityInfo.java
ackageParser.java
59dfce8bdaf011337530a0dbec7f7280871f9bc9 03-Apr-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6140391 Make RTL awareness as an opt-in into the AndroidManifest

- introduce "supportsRtl" as a new application attribute in the AndroidManifest
- "supportsRtl" default value is FALSE (no RTL support)
- adapt the View layoutDirection and textDirection logic to take care of "supportsRtl" value

Change-Id: I5e4f9f576e14f35dedc6b0c29a7142c397f598e0
pplicationInfo.java
ackageParser.java
135936072b24b090fb63940aea41b408d855a4f3 23-Mar-2012 Amith Yamasani <yamasani@google.com> User management and switching

Broadcast intents that get sent out when users are added/removed/switched.

More work on generating user-specific information in package manager queries.
APIs to update user name and query a user by id.
Removed Package.mSetStopped and mSetEnabled, since they're not user specific.

User removal:
- Cleanup ActivityManager, PackageManager, WallpaperManager, AppWidgetService
and AccountManager.
- Shutdown processes belonging to the user.

Don't show vibrate option in long-press power if there's no vibrator.

Lock the screen when switching users, to force unlocking.

Change-Id: Ib23a721cb75285eef5fd6ba8c7272462764038fa
PackageManager.aidl
ackageManager.java
ackageParser.java
483f3b06ea84440a082e21b68ec2c2e54046f5a6 14-Mar-2012 Amith Yamasani <yamasani@google.com> Package restrictions per user

Packages can be enabled/disabled per user.
This requires maintaining stopped/launched states and
enabled / disabled components and packages per user.

Refactored pm.Settings and PackageSettingsBase to keep
track of states per user.

Migrated the stopped-packages.xml to users/<u>/package-restrictions.xml

Changed intent resolution to handle individual user restrictions.
Bunch of IPackageManager calls now have a userId argument.
Make AppWidgetService handle removals of packages.

Added some tests for pm.Settings and PackageManager.

Change-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861
PackageManager.aidl
ackageParser.java
edc84ee8392afa0102f098168329db5bb43a6d4b 20-Mar-2012 Jeff Sharkey <jsharkey@android.com> Selective enforcement of READ_EXTERNAL_STORAGE.

Store enforcement state of specific permissions, allowing them to be
selectively enforced. Currently supports READ_EXTERNAL_STORAGE, which
by default isn't enforced, but enforcement can be enabled at runtime.

Bug: 6131916
Change-Id: I4bcc215a2eb5e6507d6257b577311cbd13c77acf
PackageManager.aidl
ackageManager.java
7924512aa12c6af37d90e8ccfcdf04eb78a294a3 12-Mar-2012 Dianne Hackborn <hackbod@google.com> Add new READ_EXTERNAL_STORAGE permission.

Also adds some initial compatibility code for dealing with it.

Change-Id: I104bff11798349e4aaa6da9b7be787b257daa1bb
ackageParser.java
f76a50ce8fdc6aea22cabc77b2977a1a15a79630 09-Mar-2012 Ken Wakasa <kwakasa@google.com> Fix obvious typos under frameworks/base/core

Change-Id: Ia5fc3db1bb51824e7523885553be926bcc42d736
ackageManager.java
6569625beef705ec489662b80d372c4423f9c7f7 06-Mar-2012 Dianne Hackborn <hackbod@google.com> Fix issues #6103378 and #5959515.

Change-Id: I762d86dd7119c9ac02f4b8803c4a250c6b7637c7
6103378: APR: IOOBE at android.content.pm.PackageParser.generatePackageInfo(
PackageParser.java:355)
5959515: PackageManager doesn't validate className in setComponentEnabledSetting
ackageParser.java
e639da7baa23121e35aa06d6e182558e0e755696 22-Feb-2012 Dianne Hackborn <hackbod@google.com> New development permissions.

These are permissions that an application can request, but won't
normally be granted. To have the permission granted, the user
must explicitly do so through a new "adb shell pm grant" command.

I put these permissions in the "development tools" permission
group. Looking at the stuff there, I think all of the permissions
we already had in that group should be turned to development
permissions; I don't think any of them are protecting public APIs,
and they are really not things normal applications should use.

The support this, the protectionLevel of a permission has been
modified to consist of a base protection type with additional
flags. The signatureOrSystem permission has thus been converted
to a signature base type with a new "system" flag; you can use
"system" and/or "dangerous" flags with signature permissions as
desired.

The permissions UI has been updated to understand these new types
of permissions and know when to display them. Along with doing
that, it also now shows you which permissions are new when updating
an existing application.

This also starts laying the ground-work for "optional" permissions
(which development permissions are a certain specialized form of).
Completing that work requires some more features in the package
manager to understand generic optional permissions (having a
facility to not apply them when installing), along with the
appropriate UI for the app and user to manage those permissions.

Change-Id: I6571785c6bb5f6b291862b7a9be584885f88f3a5
PackageManager.aidl
ackageInfo.java
ackageManager.java
ackageParser.java
ermissionInfo.java
37ce3a8af6faab675319d0803b288ab1dddc76be 06-Feb-2012 Amith Yamasani <yamasani@google.com> Multi-user - wallpaper service

- Allow each user to have their own wallpaper (live or static).
- Migrate old wallpaper on upgrade.
- Update SystemBackupAgent to backup/restore from primary user's
new wallpaper directory.

Reduce dependency on Binder.getOrigCallingUser() by passing the
userId for bindService.

Change-Id: I19c8c3296d3d2efa7f28f951d4b84407489e2166
ackageParser.java
a0c283eac33dd2da72235751bbfa4f2d9898d5ea 09-Feb-2012 Dianne Hackborn <hackbod@google.com> Add new feature for running services in "isolated" sandbox processes.

This reserves a range of uids (for each user) in which these processes
run. These uids are not associated with an application, so they
effectively run with no permissions. When a Service requests to
run in such a process through android:isolatedProcess="true", each
time it is brought up a new isolated process is started with its
own unique uid.

What we have so far gives us the basic infrastructure; more work
remains to further lock down what these uids have access to.

Change-Id: Ibfd27c75619cba61f528f46ede9113f98dc5f45b
ackageParser.java
erviceInfo.java
742a67127366c376fdf188ff99ba30b27d3bf90c 04-May-2011 Amith Yamasani <yamasani@google.com> Multi-user - 1st major checkin

Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
PackageManager.aidl
ackageManager.java
ackageParser.java
88b15749d223960b5d97ac998e33b1af4034ca85 03-Nov-2011 Kenny Root <kroot@google.com> am e24ac4b2: Merge "Update GET_UNINSTALLED_PACKAGES flag documentation" into ics-mr1

* commit 'e24ac4b219a582f1a99465551b1fd76345553b22':
Update GET_UNINSTALLED_PACKAGES flag documentation
685f490eff35e33e435e455e9b784c9d70083e49 03-Nov-2011 Kenny Root <kroot@google.com> Update GET_UNINSTALLED_PACKAGES flag documentation

Change-Id: I483b84f07836e6ad96c75e7dd3a86633cb29db22
ackageManager.java
ca756bfd97d668c8e865c6247ef923b0aad9b065 26-Oct-2011 Jeff Hamilton <jham@android.com> Clarify the docs around the activityInfo field.

Change-Id: Id9a5ac610d564165073cb60e5b631b1cba3e8187
esolveInfo.java
0836c7cb98dd3ff1ef0379dcb97be8b315fed7eb 21-Oct-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5228934: IME shows up on boot, or when digits screen is tapped

Activity aliases weren't propagating the softInputMode from the original
activity.

Change-Id: I47534e6c9a0f94bb6eb3fd2186ba9ffc8d583d08
ackageParser.java
6ccd41265db1a6bfb3c54d64aba2df67d373af4f 13-Oct-2011 Kenny Root <kroot@google.com> Add support for signature in getPackageArchiveInfo

GET_SIGNATURES was indicated as supported, but it never actually did
anything.

This is needed for the package verifier development sample.

Change-Id: I09ca6790cd8bf9435aa208c0711359b4d76fb278
ackageManager.java
58f42a59bda3bc912d0d2f81dc65a9d31d140eaa 10-Oct-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5405788: Device continuously opening and closing...

...the "Complete action using" dialog

When an application goes idle, it sends back to the activity manager
the configuration it last used, to make sure the two don't get out
of sync. Fix a bunch of edge cases here in dealing with that, and
be sure to also send the current configuration when launching an
activity so the client is always up-to-date when launching.

Also a small fix to not show the upgrading dialog during first boot.

Change-Id: I14ed366a87cd689d1c78787369e052422290ac6f
PackageManager.aidl
d0e8fb431ac9c1fcc2f5b0eba884d29fc57a4cf1 28-Sep-2011 Mathew Inwood <mathewi@google.com> Merge "Document thrown IllegalArgumentException."
1b9f8d92a934188eb200647025bffaf90469ee55 26-Sep-2011 Mathew Inwood <mathewi@google.com> Document thrown IllegalArgumentException.

Change-Id: I502f91e3c1130c14ad8f67934bf52a7206de302f
ackageManager.java
05ca4c90644921df9193d92b2abdc81ef77e4a62 15-Sep-2011 Kenny Root <kroot@google.com> Allow non-required package verifiers

* Verifiers can be specified in the AndroidManifest.xml

* Those verifiers can respond to the new Intent action

* PackageManager API for those verifiers: verifyPendingInstall

Change-Id: I4892bce2e6984871e6e93c60a1ca0dae145f5df5
ackageInfoLite.java
ackageManager.java
ackageParser.java
ignature.java
erifierInfo.aidl
erifierInfo.java
e797ed6a74593630219faf7f0ba5dc8235586bce 23-Sep-2011 Scott Main <smain@google.com> docs: a few additions and revisions to action bar docs

Change-Id: I12c24e5d4ed49d8f9822050d330f617bd614b7b9
ctivityInfo.java
3a9b5fbb97e65019abec97f172b4cbf2100d1225 20-Sep-2011 Kenny Root <kroot@google.com> Unhide new PackageManager APIs for API 14

Change-Id: I83110285ccee39a4cd872a1c2af8357f541833d4
PackageManager.aidl
ackageManager.java
c11bc8d22405458cd942e38e71ce1a837ed38c9e 14-Sep-2011 Kenny Root <kroot@google.com> Be more forgiving in parsing verifier IDs

RFC 4648's Base32 is made to be forgiving for users doing manual entry
of the digits. For this reason we want to be able to parse lowercase
letters as uppercase and number 0 (zero) as letter O along with number
1 (one) as letter I.

Cherry-pick into ics-factoryrom

Change-Id: I149d8e947ff8b36305c1e61d8a1d80ff0b317cda
erifierDeviceIdentity.java
0aaa0d931716e9f57a1d84d795fab2df75092756 13-Sep-2011 Kenny Root <kroot@google.com> Add verifier device identity

This adds a special device identifier that is usable only for device
validation. The user will be presented with this number encoded in
easily-transcribable Base32 in the Developer options of Settings.

Change-Id: I4843f55ee90d689a51d0269b22454ca04c1be7ec
ctivityInfo.aidl
pplicationInfo.aidl
onfigurationInfo.java
eatureInfo.aidl
PackageDataObserver.aidl
PackageManager.aidl
PackageStatsObserver.aidl
nstrumentationInfo.aidl
anifestDigest.aidl
ackageInfo.aidl
ackageInfoLite.aidl
ackageManager.java
ackageStats.aidl
ackageStats.java
arceledListSlice.aidl
ermissionGroupInfo.aidl
ermissionInfo.aidl
roviderInfo.aidl
esolveInfo.aidl
erviceInfo.aidl
ignature.aidl
erifierDeviceIdentity.aidl
erifierDeviceIdentity.java
d2509fd83597595914ef0627685e917380863eb6 12-Sep-2011 Dianne Hackborn <hackbod@google.com> Add boot mode where only "core apps" are started.

A core app is one that has coreApp="true" in its manifest tag.

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

Currently this boot mode is always turned off.

Change-Id: Ieaa4a8031c2c391a12996aa8d8b1d65fc2b09d6b
ackageParser.java
45b8b464992bbfa9bd2a587f05c1e1723aedcecd 07-Sep-2011 Irfan Sheriff <isheriff@google.com> Add feature definition for Wi-Fi Direct

Bug: 5267396
Change-Id: I4f61b0afd1466420ab951f6d74ec444036772b21
ackageManager.java
661cd52e0e1d527132eb1cae604d3e64da7ec0cb 22-Aug-2011 Dianne Hackborn <hackbod@google.com> Add progress dialog for booting after an upgrade.

This introduces a new facility for code during the boot process
to display messages to the user through a progress dialog. This
is only for use when performing longer-than-usual post-upgrade
operations such as running dexopt on applications or upgrading
databases.

Change-Id: I0e78439ccec3850fb67872c22f235bf12a158dae
PackageManager.aidl
d99b293d5f11b784d7406f5398bc654920b42482 18-Aug-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5180553: permission RECEIVE_BOOT_COMPLETED is not checked

Change-Id: I069673f2fbdf05e409c5e9ed99ccd1e15b4fe3ed
esolveInfo.java
46d2545db48e6b8565ef7beedf6486ef5d7f4507 16-Aug-2011 Kenny Root <kroot@google.com> Merge "Infrastructure to support package verifier"
bcc2d40a11432736e94c1dd3c64abd1aac476c20 16-Aug-2011 Kenny Root <kroot@google.com> Merge "Throw exception on odd length Signatures"
5ab2157bf1f105b02d3e2913cd3a33f9765b74ca 27-Jul-2011 Kenny Root <kroot@google.com> Infrastructure to support package verifier

Allow a package verifier to approve or disapprove of a package being
installed.

Change-Id: Ibfea0f2b1aaa4ab1589a4e59f96144702b9bf94b
PackageManager.aidl
ackageManager.java
bcc954d772e8cd5ef640060cbc0be50e7e4778f2 09-Aug-2011 Kenny Root <kroot@google.com> Manifest digest stored during package scanning

This allows things that scanned an APK to pass a hash of the manifest to
others that would then be able to compare it.

Change-Id: I465f5edf3acab2a952c3d321c8df2247ffe012ea
anifestDigest.aidl
anifestDigest.java
ackageParser.java
d2d2925ff7ae9456c1c6c9147b1b9fd9a99ea607 08-Aug-2011 Kenny Root <kroot@google.com> Eliminate warnings from PackageParser

Change-Id: I1e07029261df59907115fd1f54da3e9b3fbfa240
ackageParser.java
1137341885d8dc451dddc2e01319fb0fab00bbc3 29-Jul-2011 Kenny Root <kroot@google.com> Throw exception on odd length Signatures

The old version of this code would silently truncate odd-length
Signatures. However, this masks some bugs. Add a throw of
IllegalArgumentException so users can easily see where they're getting
bad input for Signatures.

Also, go through the existing code and catch this exception or
pre-check the input strings so system_server doesn't crash later.

Bug: 5092338
Change-Id: I8c672c5eaeb738a92c4581ce0df09baf719980ef
ignature.java
1ebd74acf9977daa42133507e970dab88e08f0ef 04-Aug-2011 Kenny Root <kroot@google.com> Better error codes for missing files

Make sure that files that don't exist aren't returning bogus 'out of
space' error codes.

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

Add copyright header to NativeLibraryHelper

Bug: 3375299
Change-Id: Iac46019160921daca65b21d38897e5165063316e
ackageParser.java
269248d112e35fe8e9f0d5d11c96dcb2ac1118b0 02-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5098288 - Rethink the suite of new themes

Cut down the list of new themes for ICS. Holo apps now have
Theme.Holo, Theme.Holo.Light, and Theme.Holo.Light.DarkActionBar to
choose from.

Add manifest attribute android:uiOptions to express
splitActionBarWhenNarrow. Other options may move into this later as
well. (DialogWhenLarge?) This attribute is valid on both activity and
application tags; application settings will serve as the default for
activities that do not explicitly set uiOptions.

uiOptions are not currently reflected in the startup window for new
activities.

Change-Id: Iffdc2ce4cc69f79c9bd4e541b7923286e6936c1e
ctivityInfo.java
pplicationInfo.java
ackageParser.java
d21d444426911d93c507a929a8223ebf63258954 23-Jul-2011 Kenny Root <kroot@google.com> Stop using charAt for Signatures

Simply getting the byte array and operating on that instead of using
String.charAt() repeatedly speeds up Signature initializer calls during
bootup from 150ms to 9ms (1700% faster).

Change-Id: I85ef17ef63477927e0181d5f49a1d521b7b0d98b
ignature.java
79ec80db70d788f35aa13346e4684ecbd401bd84 24-Jun-2011 Christopher Tate <ctate@google.com> Make full backup API available to apps

New methods for full backup/restore have been added to BackupAgent
(still hidden): onFullBackup() and onRestoreFile(). The former is the
entry point for a full app backup to adb/socket/etc: the app then writes
all of its files, entire, to the output. During restore, the latter
new callback is invoked, once for each file being restored.

The full backup/restore interface does not use the previously-defined
BackupDataInput / BackupDataOutput classes, because those classes
provide an API designed for incremental key/value data structuring.
Instead, a new FullBackupDataOutput class has been introduced, through
which we restrict apps' abilities to write data during a full backup
operation to *only* writing entire on-disk files via a new BackupAgent
method called fullBackupFile().

"FullBackupAgent" exists now solely as a concrete shell class that
can be instantiated in the case of apps that do not have their own
BackupAgent implementations.

Along with the API change, responsibility for backing up the .apk
file and OBB container has been moved into the framework rather than
have the application side of the transaction do it.

Change-Id: I12849b06b1a6e4c44d080587c1e9828a52b70dae
pplicationInfo.java
ackageParser.java
292f8bc9d1b790ab975a87a842c7fabc908b97e0 28-Jun-2011 Dianne Hackborn <hackbod@google.com> Plumb information from the framework about asec container size.

Change-Id: Ie0ec3cb6d463aefa341a8cbea80be790451ba5e3
ackageStats.java
2d6833bab353e31ceb4230f3f3563fca2e0d9f6f 25-Jun-2011 Dianne Hackborn <hackbod@google.com> Turn on HW accel by default for apps that target ICS.

Change-Id: I010e11e03b2dfd0d1db8c47f74c25a28586fd79c
ackageParser.java
0ac3031c159a0904e73eb4439cdc724d8df4a6e6 17-Jun-2011 Dianne Hackborn <hackbod@google.com> Implement remaining infrastructure for user disabling apps.

Change-Id: If8135eb0e27ec36f8f159eb7b6397add7acd0299
pplicationInfo.java
ackageManager.java
ackageParser.java
711516d140390aeec9e3eefb8fdb2681c3454980 14-Jun-2011 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 77fc8b80 to master

Change-Id: I014f9a886d6f05607d2a5d101ad2052a6841ee8d
e289bff0ec2b1af4ba773e0c8d49d5fd46eb9921 14-Jun-2011 Dianne Hackborn <hackbod@google.com> Add new landscape and portrait orientation features.

Updates aapt to know about these. Also updates aapt badging to:

- No longer crash due to the change to how we match unspecified
configuration resources.
- Report the new "smallest screen" supported screen configs.
- Infer old screen size buckets based on new smallest width attrs.
- Report all of the different labels and icons in an app.

Change-Id: I7376042b817391bd070f549cebbc7f03be4635c8
ackageManager.java
e6b03d0979e0bd6dfeda7b45850182c3092bb3e7 10-Jun-2011 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 9dfd7d0a to master

Change-Id: I9fbee3209b7fe5c7b5b42b62309eb60dc49bf9e2
e22fe9331ad8a9f81470751fdeca7633f654cffa 09-Jun-2011 Dianne Hackborn <hackbod@google.com> Fix issue #4582417: Need to add new PackageManager...

...FEATURE_ constant for FAKE_MULTITOUCH in MR2

Change-Id: Ib6950d9dbdd58618aec593de7e0cf1c01b7d6ef9
ackageManager.java
b0628bfd5aac480a0d412ac96b8af1d97ac01c30 03-Jun-2011 Christopher Tate <ctate@google.com> Implement shared-storage full backup/restore

Every available shared-storage volume is backed up, tagged with its
ordinal in the set of mounted shared volumes. This is an approximation
of "internal + the external card". This lets us restore things to the
same volume [or "equivalent" volume, in the case of a cross-model
restore] as they originated on.

Also fixed a bug in the handling of files/dirs with spaces in
their names.

Change-Id: I380019da8d0bb5b3699bd7c11eeff621a88e78c3
ackageParser.java
ead40eaedb7993ca8c5153c349dd65f276d6862e 04-Jun-2011 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of cc20b4e3 to master

Change-Id: I990368443a16a0577f7a1f5623b348cca3f81ac4
2515db74fe2e75018f618591fabe23fda8362bf3 03-Jun-2011 Dianne Hackborn <hackbod@google.com> am 3a80c504: am 8b9a2b6c: am e6676351: Work around OpenFeint bug.

* commit '3a80c50485809fe72d6de83dacad494c5e84ed24':
Work around OpenFeint bug.
546d64f56d0f930070289e26021f97638601e388 02-Jun-2011 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 5c2e4d20 to master

Change-Id: Iadbee872468ceafb54c5877046c91f6052f3c953
2762ff3dc864018352362f6d103de471f9529ba6 02-Jun-2011 Dianne Hackborn <hackbod@google.com> Add new supports-screen API to set maximum allowed size.

Change-Id: I0a7cd4ba73a4c18558e6daee28963d5fd12c7978
pplicationInfo.java
ackageParser.java
e66763516a9c27c192adaba417616371a1c3c9bf 02-Jun-2011 Dianne Hackborn <hackbod@google.com> Work around OpenFeint bug.

Change-Id: Ib8320e50bb63fc56dc0118d5c8e9e328dbd3fcb1
ctivityInfo.java
ackageParser.java
94250ac69c6e07534e4781d3479dccb79d8c366c 27-May-2011 Dianne Hackborn <hackbod@google.com> Merge "Add new supports-screens attributes for declaring the compatible screens." into honeycomb-mr2
df6e980e3f63eb0f6f9eb437fa925d5009cd9c44 26-May-2011 Dianne Hackborn <hackbod@google.com> Add new supports-screens attributes for declaring the compatible screens.

Change-Id: I40d57e4354e48accc1027c9f90916ea73eb5190d
android:requiresSmallestWidthDp provides the smallest supported width.
android:compatibleWidthLimitDp provides the largest compatible width.
pplicationInfo.java
ackageParser.java
1bb6cf18c0039cb9d2a60713ea34d3709af58c5c 16-Apr-2011 Kenny Root <kroot@google.com> Break apart queries to getInstalled* API DO NOT MERGE

To avoid blowing past the Binder IPC limit, change the
PackageManagerService to have a DB-like interaction where the client
tells the service the last "row" that it read.

The fact that we use a HashMap instead of a TreeMap makes this
problematic. For now we're just making a new ArrayList for the keys and
then sorting them for each call. This can make the API slower for callers
of this, but it's probably greatly overshadowed by the cost of the data
transfer itself.

Bug: 4064282
Change-Id: Ia3a8cdaa94581ed9336f2e05694b8c8a5f757bce
PackageManager.aidl
arceledListSlice.aidl
arceledListSlice.java
161e67ff3ba26408eea09221734ad2e29a1eed11 20-May-2011 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 06a8ceac to master

Change-Id: Id51574c825affddfac14ad7214c5496d6a3d6e69
06a8ceacb0dc2713cb0bb2c93d2a750f2a58db68 20-May-2011 Dianne Hackborn <hackbod@google.com> am c851ea56: am 69cb8757: Add new "-swNNNdp" resource qualifier.

* commit 'c851ea5672f6e042c2e89b2a2ce4a2467e1fcd2a':
Add new "-swNNNdp" resource qualifier.
69cb87576ba163b61bb0e6477a3b7c57a9b11d40 20-May-2011 Dianne Hackborn <hackbod@google.com> Add new "-swNNNdp" resource qualifier.

Change-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce
ctivityInfo.java
ackageParser.java
a51b6fd6f8a53f040894ef07cf23695581595e6b 20-May-2011 Kenny Root <kroot@google.com> resolved conflicts for merge of b2d0ee16 to master

Change-Id: I4483a6d0ccecfea4a1e66bb6eba80d13e8b9a3a4
e6cd0c747e76723bc51a23925c239ae10f9d3b5c 19-May-2011 Kenny Root <kroot@google.com> resolved conflicts for merge of 2433c443 to honeycomb-plus-aosp

Change-Id: I3385f57e5761679e6700bcbe3c41deb3ecd43ba1
0305e354e12c9ff25bfd252cb282346632171b73 13-May-2011 Dianne Hackborn <hackbod@google.com> This API change is now part of MR2.

Change-Id: I242e66fb9c46d48244942298361f408062fb05c4
ackageParser.java
ebff8f92f13513ce37bd74759eb1db63f2220590 13-May-2011 Dianne Hackborn <hackbod@google.com> DO NOT MERGE. Integrate add new screen width/height in "dp" configs.

You can now specify resource configuration variants "wNNNdp"
and "hNNNdp". These are the minimum screen width/height in "dp"
units. This allows you to do things like have your app adjust
its layout based only on the about of horizontal space available.

This introduces a new configuration change flag for screen size.
Note that this configuration change happens each time the orientation
changes. Applications often say they handle the orientation change
to avoid being restarted at a screen rotation, and this will now
cause them to be restarted. To address this, we assume the app can
handle this new config change if its target SDK version is < ICS.

Change-Id: I4acb73d82677b74092c1da9e4046a4951921f9f4
ctivityInfo.java
ackageParser.java
4a627c71ff53a4fca1f961f4b1dcc0461df18a06 01-Apr-2011 Christopher Tate <ctate@google.com> Full local backup infrastructure

This is the basic infrastructure for pulling a full(*) backup of the
device's data over an adb(**) connection to the local device. The
basic process consists of these interacting pieces:

1. The framework's BackupManagerService, which coordinates the
collection of app data and routing to the destination.

2. A new framework-provided BackupAgent implementation called
FullBackupAgent, which is instantiated in the target applications'
processes in turn, and knows how to emit a datastream that contains
all of the app's saved data files.

3. A new shell-level program called "bu" that is used to bridge from
adb to the framework's Backup Manager.

4. adb itself, which now knows how to use 'bu' to kick off a backup
operation and pull the resulting data stream to the desktop host.

5. A system-provided application that verifies with the user that
an attempted backup/restore operation is in fact expected and to
be allowed.

The full agent implementation is not used during normal operation of
the delta-based app-customized remote backup process. Instead it's
used during user-confirmed *full* backup of applications and all their
data to a local destination, e.g. via the adb connection.

The output format is 'tar'. This makes it very easy for the end
user to examine the resulting dataset, e.g. for purpose of extracting
files for debug purposes; as well as making it easy to contemplate
adding things like a direct gzip stage to the data pipeline during
backup/restore. It also makes it convenient to construct and maintain
synthetic backup datasets for testing purposes.

Within the tar format, certain artificial conventions are used.
All files are stored within top-level directories according to
their semantic origin:

apps/pkgname/a/ : Application .apk file itself
apps/pkgname/obb/: The application's associated .obb containers
apps/pkgname/f/ : The subtree rooted at the getFilesDir() location
apps/pkgname/db/ : The subtree rooted at the getDatabasePath() parent
apps/pkgname/sp/ : The subtree rooted at the getSharedPrefsFile() parent
apps/pkgname/r/ : Files stored relative to the root of the app's file tree
apps/pkgname/c/ : Reserved for the app's getCacheDir() tree; not stored.

For each package, the first entry in the tar stream is a file called
"_manifest", nominally rooted at apps/pkgname. This file contains some
metadata about the package whose data is stored in the archive.

The contents of shared storage can optionally be included in the tar
stream. It is placed in the synthetic location:

shared/...

uid/gid are ignored; app uids are assigned at install time, and the
app's data is handled from within its own execution environment, so
will automatically have the app's correct uid.

Forward-locked .apk files are never backed up. System-partition
.apk files are not backed up unless they have been overridden by a
post-factory upgrade, in which case the current .apk *is* backed up --
i.e. the .apk that matches the on-disk data. The manifest preceding
each application's portion of the tar stream provides version numbers
and signature blocks for version checking, as well as an indication
of whether the restore logic should expect to install the .apk before
extracting the data.

System packages can designate their own full backup agents. This is
to manage things like the settings provider which (a) cannot be shut
down on the fly in order to do a clean snapshot of their file trees,
and (b) manage data that is not only irrelevant but actively hostile
to non-identical devices -- CDMA telephony settings would seriously
mess up a GSM device if emplaced there blind, for example.

When a full backup or restore is initiated from adb, the system will
present a confirmation UI that the user must explicitly respond to
within a short [~ 30 seconds] timeout. This is to avoid the
possibility of malicious desktop-side software secretly grabbing a copy
of all the user's data for nefarious purposes.

(*) The backup is not strictly a full mirror. In particular, the
settings database is not cloned; it is handled the same way that
it is in cloud backup/restore. This is because some settings
are actively destructive if cloned onto a different (or
especially a different-model) device: telephony settings and
AndroidID are good examples of this.

(**) On the framework side it doesn't care that it's adb; it just
sends the tar stream to a file descriptor. This can easily be
retargeted around whatever transport we might decide to use
in the future.

KNOWN ISSUES:

* the security UI is desperately ugly; no proper designs have yet
been done for it
* restore is not yet implemented
* shared storage backup is not yet implemented
* symlinks aren't yet handled, though some infrastructure for
dealing with them has been put in place.

Change-Id: Ia8347611e23b398af36ea22c36dff0a276b1ce91
pplicationInfo.java
ackageParser.java
25641ca1ac5b09727f86fe01389877332a00455d 19-Apr-2011 Amith Yamasani <yamasani@google.com> Merge "Plumbing in PackageManager and installd for multi-user support."
0e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3 16-Apr-2011 Kenny Root <kroot@google.com> Break apart queries to getInstalled* API

To avoid blowing past the Binder IPC limit, change the
PackageManagerService to have a DB-like interaction where the client
tells the service the last "row" that it read.

The fact that we use a HashMap instead of a TreeMap makes this
problematic. For now we're just making a new ArrayList for the keys and
then sorting them for each call. This can make the API slower for callers
of this, but it's probably greatly overshadowed by the cost of the data
transfer itself.

Bug: 4064282
Change-Id: Ic370fd148d4c3813ae4f2daffa1a7c28d63d5a09
PackageManager.aidl
arceledListSlice.aidl
arceledListSlice.java
0b285499db739ba50f2f839d633e763c70e67f96 15-Apr-2011 Amith Yamasani <yamasani@google.com> Plumbing in PackageManager and installd for multi-user support.

- Create /data/user directory and symlink /data/user/0 -> /data/data for
backward compatibility
- Create data directories for all packages for new user

- Remove data directories when removing a user

- Create data directories for all users when a package is created

- Clear / Remove data for multiple users

- Fixed a bug in verifying the location of a system app

- pm commands for createUser and removeUser (will be disabled later)

- symlink duplicate lib directories to the original lib directory

Change-Id: Id9fdfcf0e62406a8896aa811314dfc08d5f6ed95
PackageManager.aidl
ackageManager.java
ackageParser.java
serInfo.aidl
serInfo.java
0c5001d776d56bae02a5cc2663286a125d99bc5e 13-Apr-2011 Dianne Hackborn <hackbod@google.com> Add APIs to remove tasks.

You can remove sub-tasks inside of a task, or an entire task.

When removing an entire task, you can have its process killed
as well.

When the process is killed, any running services will get an
onTaskRemoved() callback for them to do cleanup before their
process is killed (and the service possibly restarted).

Or they can set a new android:stopWithTask attribute to just
have the service automatically (cleanly) stopped at this point.

Change-Id: I1891bc2da006fa53b99c52f9040f1145650e6808
ackageParser.java
erviceInfo.java
beb182a4945b9b762fac77edd1183897bcac5b32 11-Apr-2011 Amith Yamasani <yamasani@google.com> Merge "Package manager changes to store and update user information."
4b2e934928a2eb65927bd39197198c28c49efb94 31-Mar-2011 Amith Yamasani <yamasani@google.com> Package manager changes to store and update user information.

Some API stubs for managing users and storing their details.
List of users is stored in an xml file.
Each user's properties are stored in a separate xml file.

Some unit tests for modifying the XML files.

Change-Id: If2ce2420723111bd426f6762def3c2afc19a0ae5
ackageManager.java
serInfo.java
43a17654cf4bfe7f1ec22bd8b7b32daccdf27c09 07-Apr-2011 Joe Onorato <joeo@google.com> Remove the deprecated things from Config.java. These haven't been working since before 1.0.

Change-Id: Ic2e8fa68797ea9d486f4117f3d82c98233cdab1e
ackageParser.java
3fc982f41fda1f254bfbc35490d81cd82a0ed90a 31-Mar-2011 Dianne Hackborn <hackbod@google.com> Add new resource configurations for screen width/height in "dp".

You can now specify resource configuration variants "wNNNdp"
and "hNNNdp". These are the minimum screen width/height in "dp"
units. This allows you to do things like have your app adjust
its layout based only on the about of horizontal space available.

This introduces a new configuration change flag for screen size.
Note that this configuration change happens each time the orientation
changes. Applications often say they handle the orientation change
to avoid being restarted at a screen rotation, and this will now
cause them to be restarted. To address this, we assume the app can
handle this new config change if its target SDK version is < ICS.

Change-Id: I22f8afa136b4f274423978c570fa7c9855040496
ctivityInfo.java
ackageParser.java
18cd686fc828c9c75596de1494ecaa5467fcc195 23-Mar-2011 Scott Main <smain@google.com> am ef6b305b: docs: fix markup error

* commit 'ef6b305b93009b60ad7c6ddbd200d1b5c554963f':
docs: fix markup error
ef6b305b93009b60ad7c6ddbd200d1b5c554963f 23-Mar-2011 Scott Main <smain@google.com> docs: fix markup error

Change-Id: I59e379a7a36c4184862095442c53a6b9496d856e
ackageManager.java
3dee21eb0f253a7e78572872b8dfc7b5d990a063 02-Mar-2011 Kenny Root <kroot@google.com> Merge "Switch to returnCode for IPackageDeleteObserver"
40bbf9295d5245d3917629ce15f7b37670aef1ac 01-Mar-2011 Mike Lockwood <lockwood@android.com> DO NOT MERGE: Backport USB accessory support to gingerbread

Signed-off-by: Mike Lockwood <lockwood@android.com>
ackageManager.java
c39bb4aaa7be1b9b0cc9fb0b1f03d54f7609ffeb 28-Feb-2011 Kenny Root <kroot@google.com> Switch to returnCode for IPackageDeleteObserver

Before the IPackageDeleteObserver only knew whether the deletion
succeeded or failed, but not the reason why.

Bug: 2520191
Change-Id: I1f0d7c04f06c539660b6e17e7e133defb0f61b5b
PackageDeleteObserver.aidl
ackageManager.java
f4ca247158ffb83139d675ac0e1d25239c310be2 27-Feb-2011 Mike Lockwood <lockwood@android.com> Add platform features for USB host and USB accessory support.

Also removed config_hasUsbHostSupport framework resource, which is now obsolete.

Change-Id: I6f18cc1c4f68085de8b8363e1b5edff79aff404f
Signed-off-by: Mike Lockwood <lockwood@android.com>
ackageManager.java
e7f972122db87dc54e41ed1a6e417534d43bca3a 24-Feb-2011 Dianne Hackborn <hackbod@google.com> Implement issue #3426299: Introduce application "stopped" state

The package manager now keeps track of whether an application is
stopped. There are new intent flags to control whether intent
filters in a stopped application will match the intent. This is
currently used in one place, sending broadcasts, so that stopped
apps can not be launched due to background processes.

The package manager during first init makes sure no applications
are in the stopped state. When new applications are installed,
that begin in the stopped state. When the activity manager is
launching a component of an application, it ensures the application
is taken out of the stopped state.

The "force stop" button in manage applications will now put an
application back in to the stopped state; it can't go back out
of the stopped state until one of its components is launched by
the activity manager.

There will probably be a few more places where we need to filter
stopped applications out of intent matches, but doing this for
broadcast is a very big first step.

This also introduces a new broadcast that is sent to an application
after it is replaced with a new .apk. But only if the app is not
in the stopped state. This makes it a lot easier for developers to
implement code to get their application back in proper running shape
after an upgrade.

Finally another new broadcast is added that is sent to a package's
installer at the first time it is launched. This allows the installer
to tell the package about it being installed only when it is first
actually used.

Change-Id: I589c53ff0e0ece868fe734ace4439c0d202dca2d
pplicationInfo.java
PackageManager.aidl
ackageParser.java
13033ea52714d48d754c6bc8fccb18514c645a47 15-Feb-2011 Scott Main <smain@google.com> docs: fix misc broken links

Change-Id: Id7d0ee36398aca452ceb2c3d15982397f58a06c6
ackage.html
f4f05b8f24183b9e0d6959fe8b71fb88543edd9b 07-Jan-2011 Scott Main <smain@google.com> Update package descriptions with editorial revisions.
Notably, this removes exessive info about resources
from the content package, because it's not a good location
and the info is avilable in the dev guide, but also
added some of the info to the Resources class description.

Change-Id: Ie78af26c9cec66314deb98e53078f48e16c08e70
ackage.html
a537687c3863912b1199c13c1aa010d74c243fcc 23-Jan-2011 Dan Morrill <morrildl@google.com> Adding faketouch feature.

Change-Id: Idff0b059c2f82fa4237d6238710e87dc55ae76a8
ackageManager.java
327fbd2c8fa294b919475feb4c74a74ee1981e02 17-Jan-2011 Dianne Hackborn <hackbod@google.com> Fix a bunch of API review bugs.

3362464 API REVIEW: android.content potpourri
3362445 API REVIEW: Fragment transaction stuff
3362428 API REVIEW: Fragment stuff
3362418 API REVIEW: Loader stuff
3362414 API REVIEW: android.content.pm.ActivityInfo

Change-Id: I6475421a4735759b458acb67df4380cc6234f147
ctivityInfo.java
a1cbb94dbc9a82d4eb3a47242fe161af21803858 17-Jan-2011 Kenny Root <kroot@google.com> Revert "Add the {get,set}PackageObbPaths calls to API"

This reverts commit 5d40fe9c6846ba765072e50ed1254293cb9195e4.

Change-Id: Ie41010c92fb860b19a12bcf63f6fe95ffa68da81
PackageManager.aidl
ackageManager.java
34d2b41e48281d1df2c844e004740f008e699093 17-Jan-2011 Kenny Root <kroot@google.com> Revert "Add the {get,set}PackageObbPaths calls to API"

This reverts commit 6c4d904851772313930f800ac7c323cf90c709bb.

Going with a different tactic that doesn't dump stuff on
PackageManagerService.

Bug: 3214719
Change-Id: I0bbeccf3c21d264deda4256eb53713d2c98284f4
PackageManager.aidl
ackageManager.java
bcd6c96e753d2efc76f918c403cecbfdbd4f037a 17-Jan-2011 Kenny Root <kroot@google.com> Add OBB size to PackageStats

Bug: 3356814
Change-Id: I4f871fb9fd0cb2f3177cc756631f95d928862571
ackageStats.java
fc28f412b54d811c61d4997ea94c79875f9ad015 17-Jan-2011 Kenny Root <kroot@google.com> Merge "Put externalSize measurements in PackageStats" into honeycomb
366949c2d934435ff9ef8082408ca36ff14a2241 15-Jan-2011 Kenny Root <kroot@google.com> Put externalSize measurements in PackageStats

When measuring a package's usage, put the external size in the
PackageStats as well. This will allow programs using a lot of space on
the external card to be held accountable.

Bug: 3308791
Change-Id: If2df07bdbf6ffb31577074fad8f4a87ca4e89086
ackageStats.java
75e616e8203a540c860888ccff73ffaa87498c5e 16-Jan-2011 Dianne Hackborn <hackbod@google.com> Change FLAG_FORWARD_LOCK back to its original value to not break things.

Change-Id: Ib9a38521cc5031a81bae5a830aaf458b8a5ee7a5
pplicationInfo.java
3b81bc18bb661c02ad8074c39dab16644c1e65d0 15-Jan-2011 Dianne Hackborn <hackbod@google.com> Add manifest API to request a large heap.

You can now do android:largeHeap="true" on an application.

Doesn't yet do anything, waiting for Dalvik API.

Also tweak package parsing so that the SDK API level is set in the
configuration, allowing manifest resource value selection based on
that.

Change-Id: I6e035f9702a97b055416743b88f83a22ba4a9584
pplicationInfo.java
ackageParser.java
5d40fe9c6846ba765072e50ed1254293cb9195e4 14-Jan-2011 Kenny Root <kroot@google.com> Add the {get,set}PackageObbPaths calls to API

Add getPackageObbPaths() and setPackageObbPaths() to the public API.

Bug: 3214719
Change-Id: I8627b5f674a795d5780eb5c08911419110670a41
PackageManager.aidl
ackageManager.java
a3cdaa5337fa573c4c61770195d6232c2e587090 13-Jan-2011 Jason parks <jparks@google.com> Revert "Remove the APIs for the old encryption scheme."

This reverts commit 1125d780a8b61703b8eb28c5c77dac5f3f0022dd.
pplicationInfo.java
ackageParser.java
ca6777b23bbe9283380efb2ba7e6d0a79d8669db 13-Jan-2011 Jason parks <jparks@google.com> Merge "Remove the APIs for the old encryption scheme." into honeycomb
e8c04db71e347396e9537ead7113ba9f46706e44 13-Jan-2011 Kenny Root <kroot@google.com> Merge "Add the {get,set}PackageObbPaths calls to API" into gingerbread
1125d780a8b61703b8eb28c5c77dac5f3f0022dd 12-Jan-2011 Jason parks <jparks@google.com> Remove the APIs for the old encryption scheme.

Change-Id: I55116a5b29b10dfd50015805ec019b485257f68b
pplicationInfo.java
ackageParser.java
502e9a47c64d819a7aa45251bcf7cb5dd77a310b 10-Jan-2011 Kenny Root <kroot@google.com> Allow updated system apps to retain priority

Previously any updated system apps would not be able to have a greater
than 0 priority on an activity intent filter. Moving the priority check
later in the package scanning allows it to apply to updated system
packages as well.

Cherry-pick from gingerbread branch

Bug: 2572398
Change-Id: I95d8b6360bf7a3f39cd7a1ff09e1ee57e11583d8
ackageParser.java
1c6e764275934b0ddf65aeb86179c75a50ba15d4 10-Jan-2011 Kenny Root <kroot@google.com> Allow updated system apps to retain priority

Previously any updated system apps would not be able to have a greater
than 0 priority on an activity intent filter. Moving the priority check
later in the package scanning allows it to apply to updated system
packages as well.

Bug: 2572398
Change-Id: I9fdf7906809518b28b49ffec31afec1442d85d3c
ackageParser.java
a85a91573af97a76ab08ffd5f8558b73283e1faa 08-Jan-2011 Joe Onorato <joeo@google.com> add ComponentInfo.isEnabled()

Change-Id: I5ce59f62dc0ce3ce446bdbe397d1515e43031d76
omponentInfo.java
6c4d904851772313930f800ac7c323cf90c709bb 19-Nov-2010 Kenny Root <kroot@google.com> Add the {get,set}PackageObbPaths calls to API

Add getPackageObbPaths() and setPackageObbPaths() to the public API.

Bug: 3214719
Change-Id: Icb9f2f92f8c59bb3d31317f609854e81abbd1449
PackageManager.aidl
ackageManager.java
1f22d2a31abc5fa8a2d97f1f506bb2c25c87a96b 08-Jan-2011 Dianne Hackborn <hackbod@google.com> DO NOT MERGE Fix issue #3333958: Package Manager can sometimes mistakenly think...

...an app is disabled!

Ouch.

Change-Id: I45dc2beef4e413fd447d905632901fadd924cb6e
ackageParser.java
433863b1085248a8fdc9bcd0ac8501cc6a7b8ace 08-Jan-2011 Dianne Hackborn <hackbod@google.com> Fix issue #3333958: Package Manager can sometimes mistakenly think...

...an app is disabled!

Ouch.

Change-Id: I5788c5f8edfe2a0d6f4f0f3359e1742f8ed8d98e
ackageParser.java
b35cd54b88292bd6cf0387406ad9071f5475c6a7 05-Jan-2011 Dianne Hackborn <hackbod@google.com> No longer needed.

Change-Id: Ia2e8264147bb02e29599227d0588e40b1e626358
ackageParser.java
194157638ae59418b9d9cb4d73f7e285f59bc579 15-Dec-2010 Dianne Hackborn <hackbod@google.com> Fix launching of activities that I broke.

Change-Id: I39f4189bad6bdecdc7f9362410f36453fd816121
ackageManager.java
ccc714131359eb1022d8c6702b7d82ab9e93f27c 13-Dec-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 78e9f4cb to master

Change-Id: I1135361e6d66f524c3f349e2bf1f31bd4191c634
e4a5951925f16f18dae91ed65567e96528f17fee 07-Dec-2010 Dianne Hackborn <hackbod@google.com> Fix issue #3154576: battery stats checkin should include UID -> packages+ map

Includes some other small fixes to battery collection and a few
other things.

Output of package info looks like this:

5,0,i,uid,1000,com.android.settings
5,0,i,uid,1000,com.android.providers.subscribedfeeds
5,0,i,uid,1000,com.android.providers.settings
5,0,i,uid,1000,com.android.server.vpn
5,0,i,uid,1000,android
5,0,i,uid,1000,com.android.systemui
5,0,i,uid,1000,com.google.android.backup
5,0,i,uid,1001,com.android.phone
5,0,i,uid,1001,com.android.providers.telephony
5,0,i,uid,1022,com.android.nfc
5,0,i,uid,10021,com.google.android.location
5,0,i,uid,10021,com.google.android.syncadapters.calendar
5,0,i,uid,10021,com.google.android.gsf
5,0,i,uid,10021,com.google.android.syncadapters.contacts
5,0,i,uid,10026,com.android.providers.downloads.ui
5,0,i,uid,10026,com.android.providers.media
5,0,i,uid,10026,com.android.providers.drm
5,0,i,uid,10026,com.android.providers.downloads
5,0,i,uid,10032,com.android.launcher
5,0,i,uid,10039,com.google.android.gm
5,0,i,uid,10041,com.google.android.gallery3d
5,0,i,uid,10049,com.android.providers.calendar

Change-Id: I9e38f254eef146339113ad270f5c6e8b60fb7a1d
ackageParser.java
30d7189067524000c738c188c4ff91f84f474d25 11-Dec-2010 Dianne Hackborn <hackbod@google.com> Fix issue #3274841: Orientation change problem with a paused activity

Plus a bunch of debug output improvements.

And some new Intent helpers for dealing with restarting an app.

Change-Id: I50ec56bca6a86c562156b13fe8a6fdf68038a12e
ackageManager.java
56285a60e83138bb4b4f2d3bdec91b2f3ca11aa2 02-Dec-2010 Fred Quintana <fredq@google.com> add caching to the AccountManagerService

- cache the accounts, userdata and authtokens
- make the AccountManagerServiceTest work again
- add a log statement for every binder call

http://b/issue?id=3188457

Change-Id: I96b94b9b690cf391fe4341e2a72893a6d823777b
egisteredServicesCache.java
880119bf43d738ca632b5d3861eb52d655c1c0fc 19-Nov-2010 Dianne Hackborn <hackbod@google.com> Implement issue #2367442: Please add API for manipulating installer
package names

Change-Id: I0563e896a47ae1a6e77aebc2d624fb1bde52ffbc
PackageManager.aidl
ackageManager.java
3fa51e3430e3bf902ae4f2d72dfb956103b6bd2d 11-Nov-2010 Alon Albert <aalbert@google.com> Improve logging

Change-Id: Ia855b1a45a3abbc1a87233462f19b330b72d30b9
egisteredServicesCache.java
a0b46c9c441f017a2008ca8ee2c864987465996b 22-Oct-2010 Dianne Hackborn <hackbod@google.com> Implement issue #3116702: New manifest tags for supported screen sizes

Merged from GB.

Change-Id: I94730b54bcacd083f77708e84c35f4932a7b9d2e
ackageParser.java
a6d9c7c04c4b17d85ac70f4494777555655f3be1 22-Oct-2010 Dianne Hackborn <hackbod@google.com> Implement issue #3116702: New manifest tags for supported screen sizes DO NOT MERGE

Change-Id: Iabf64d86c89d387ffbfbc39f950d308a73fe17eb
ackageParser.java
46cb1d9602905061ff2a9ba3bc7654bfe94183db 21-Oct-2010 Dianne Hackborn <hackbod@google.com> am 674b856c: am fb2cd0aa: Merge "Fix java doc on FLAG_EXTERNAL." into gingerbread

Merge commit '674b856c15206a23d9d8a22fbd936a4f3055894d'

* commit '674b856c15206a23d9d8a22fbd936a4f3055894d':
Fix java doc on FLAG_EXTERNAL.
eddfc04a08cc4d5315930d94d4627caa7dad5596 21-Oct-2010 Dianne Hackborn <hackbod@google.com> Fix java doc on FLAG_EXTERNAL.

Change-Id: Ic533b3a6c3300a986dd8d0da04243d723cf393ef
pplicationInfo.java
615e2fa1755ea3b6b8196f783842cd394ad3beb2 10-Oct-2010 Dianne Hackborn <hackbod@google.com> am b77455ee: am 78d68836: Implement tracking of package install times.

Merge commit 'b77455ee290691b036ac79236a93e57ff294ef0c'

* commit 'b77455ee290691b036ac79236a93e57ff294ef0c':
Implement tracking of package install times.
78d688369a2240009d3bbe4126996a973b2e2fe2 07-Oct-2010 Dianne Hackborn <hackbod@google.com> Implement tracking of package install times.

Provides information about the time at which the package was
first installed and the time it was last updated.

Change-Id: Icb43f77b5b669a1ce685e8913046b8be386b6175
ackageInfo.java
ackageManager.java
ackageParser.java
8c4e779a4c968d4c7a4e4902484004e1659217aa 07-Oct-2010 Dianne Hackborn <hackbod@google.com> am e112b744: am 930d6c3c: Merge "Fix issue #3056500: Problem report for ASTRO" into gingerbread

Merge commit 'e112b744c08cd7dcffe142f3cd22c96870bad482'

* commit 'e112b744c08cd7dcffe142f3cd22c96870bad482':
Fix issue #3056500: Problem report for ASTRO
72b526a13c9b548a1e1a0239f670e36744cb0fdc 07-Oct-2010 Dianne Hackborn <hackbod@google.com> am cb9f1e4d: am 6f7e10ca: Merge "Make it easier to figure out whether an app can go on sd card." into gingerbread

Merge commit 'cb9f1e4d30ab4f9203e30abe807cbe33d07db4a0'

* commit 'cb9f1e4d30ab4f9203e30abe807cbe33d07db4a0':
Make it easier to figure out whether an app can go on sd card.
817c24752cf1d70bcd53a038a0d06abbb1ec6aad 05-Oct-2010 Dianne Hackborn <hackbod@google.com> Fix issue #3056500: Problem report for ASTRO

Change-Id: Ifa07dbc50930f5d6a20cdc0ee541c0566f3785ba
pplicationInfo.java
38014763a2ceec005682066da01849adf95839bd 05-Oct-2010 Dianne Hackborn <hackbod@google.com> am 89230e3b: am 458fc5f5: Merge "Fix issue #3041660: Camera image flips upside down when rotating device" into gingerbread

Merge commit '89230e3b7b9ec455373e3f60b62ff65589a9c57d'

* commit '89230e3b7b9ec455373e3f60b62ff65589a9c57d':
Fix issue #3041660: Camera image flips upside down when rotating device
54e570f78b45d6c47578a4a2513097b590b6d43f 05-Oct-2010 Dianne Hackborn <hackbod@google.com> Make it easier to figure out whether an app can go on sd card.

Change-Id: I9195a0881b2c435b138f39c2ab1505dc820caf10
pplicationInfo.java
ackageParser.java
e5439f228f603f60febe058f633d91d5af2fff76 03-Oct-2010 Dianne Hackborn <hackbod@google.com> Fix issue #3041660: Camera image flips upside down when rotating device

Apps now must explicitly opt in to having their rotation changed while
forcing landscape mode. Also add some new orientation constants for other
things apps may want to do.

Change-Id: If64d84b5ef54793ee717ebda9b4c76408efc9bfd
ctivityInfo.java
4768a16cbc9c25fac6bfb9f1f2f7ddfba67aac7b 02-Oct-2010 Dianne Hackborn <hackbod@google.com> am 9e1556de: am 14e7d693: Merge "Some documentation fixes." into gingerbread

Merge commit '9e1556de8382c3eb68d324a7ef559b2cde1b3d6c'

* commit '9e1556de8382c3eb68d324a7ef559b2cde1b3d6c':
Some documentation fixes.
4d023d214d12c8588b6a3441c2b4bd7c09900937 01-Oct-2010 Dianne Hackborn <hackbod@google.com> Some documentation fixes.

Change-Id: Iaae452fc1430af788ce440a043ca7fb53e667a61
ackageManager.java
dc71b9e4d67327065a992924a021cad4bc100fa2 01-Oct-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 6a3eddb4 to master

Change-Id: I1ca1d100274d4a733ef2bf58b0d5d7217b4f858e
cef65eeb0315c3118bf8860d6f723cb49ff6bc52 01-Oct-2010 Dianne Hackborn <hackbod@google.com> Rub in a little 'ol log-b-gone.

Mmmmmm... great fresh scent!

Change-Id: I050e70b31b5d4a9c6731f15a4b51a3620a33a78d
ackageParser.java
cc8f44bc819a76ac8d0127c57a303bd839240a62 28-Sep-2010 Kenny Root <kroot@google.com> am e7dd4e38: am 04a426f5: Merge "Use buffered I/O during certificate parsing" into gingerbread

Merge commit 'e7dd4e38c47f2f7760d1ce4f86d6321e17f98d1d'

* commit 'e7dd4e38c47f2f7760d1ce4f86d6321e17f98d1d':
Use buffered I/O during certificate parsing
04a426f5b50a628fb73bc29b003b0e5bece17c27 27-Sep-2010 Kenny Root <kroot@google.com> Merge "Use buffered I/O during certificate parsing" into gingerbread
2b0fa71c1a9e588fc31944baa5a21c362a0ab1ca 27-Sep-2010 Dan Morrill <morrildl@google.com> am c6581a10: am 4e9751f0: Merge "Adding a feature to indicate that the device possesses low-latency audio. The specific criteria for low-latency audio are defined in the CDD, but since that hasn\'t yet been settled for Gingerbread, this change doesn\'t go into details

Merge commit 'c6581a1046b062d0e06e50e9b09e6c12a8e54efc'

* commit 'c6581a1046b062d0e06e50e9b09e6c12a8e54efc':
Adding a feature to indicate that the device possesses low-latency audio.
d63f7dbf5d30320e8fd4dd8056d245f7b1e818ba 27-Sep-2010 Kenny Root <kroot@google.com> Use buffered I/O during certificate parsing

The PackageParser was using a raw InputStream instead of wrapping it in
a BufferedInputStream which could degrade performance.

Change-Id: I15c86c3ead363ddbadf4ae27e011feda90fcc579
ackageParser.java
898e1e8860dea8490ba9208fca7965adf9cb8298 27-Sep-2010 Dan Morrill <morrildl@google.com> Adding a feature to indicate that the device possesses low-latency audio.
The specific criteria for low-latency audio are defined in the CDD, but since
that hasn't yet been settled for Gingerbread, this change doesn't go into
details. We can do a docs change later once GB CDD is final.

Change-Id: Ic5ad9d04e8ecd78c81b6f09439affec6bf8cb9b2
ackageManager.java
234e42df5fac958ed9f15aae6005dd72e4bdf08a 25-Sep-2010 Dianne Hackborn <hackbod@google.com> DO NOT MERGE. Fix issue #3000764: API REVIEW: android.R.*

Not going out in GB.

Change-Id: I9d4f5938ec7d2a54c0f72b8eb5a177ee66f12146
ackageParser.java
5744bb4aa5dea525d1ae236cd16379134024eae1 02-Sep-2010 Dan Morrill <morrildl@google.com> Adding new feature definitions for new sensors (barometer and gyroscope.)

Change-Id: Ic3a35c7b277921eaa5b05e3285b6aed5ed75bea6
ackageManager.java
09f3360f51b216fb9c40f78e7a4eee41cd9cc187 13-Sep-2010 Chris Palmer <palmer@google.com> DO NOT MERGE Correct the PackageManager.checkSignatures documentation.

Make the documentation match the current behavior since change ID
Ibdeff170bd386d723f774136b18e0ad59d9cdabb.

Will add @deprecated tags back in in a separate CL. This is just to get
things in the same state as master, following the build breakage mishap.

Change-Id: I47c53700892473061093002c32ad8f095b5813d1

Do not merge to master; an equivalent CL has already been committed there.
ackageManager.java
f5aafff4851cc55523ac3beb164e994ec223985d 13-Sep-2010 Chris Palmer <palmer@google.com> Unbreak the build.

Just a quick fix. Will properly re-add @deprecated and update-api next, and
then get API approval.

Change-Id: Idf57a33dc97bc2619cf48509f74d9e0de935124b
ackageManager.java
ed35d0ee857353f42e58342023647d0b10ab9fd3 13-Sep-2010 Chris Palmer <palmer@google.com> Merge "Correct the PackageManager.checkSignatures documentation."
cec7eb1c079331ba38ed4472abe26a55d6427324 13-Sep-2010 Kenny Root <kroot@google.com> am 8b11f30c: am 1bece432: Make nativeLibraryDir visible in the API

Merge commit '8b11f30cb2cfe9922439e8a032311de114ce4da4'

* commit '8b11f30cb2cfe9922439e8a032311de114ce4da4':
Make nativeLibraryDir visible in the API
1bece4320c1d2308b4a5b5aeda47b065312b3053 13-Sep-2010 Kenny Root <kroot@google.com> Make nativeLibraryDir visible in the API

Change-Id: Ic88e76a85b0041e97b4c29c42dfa09db0356391c
pplicationInfo.java
42855149750fb848b0d743cf0e5f204a05be2f07 10-Sep-2010 Chris Palmer <palmer@google.com> Correct the PackageManager.checkSignatures documentation.

Make the documentation match the current behavior since change ID
Ibdeff170bd386d723f774136b18e0ad59d9cdabb.

Change-Id: I9d24800ba98f14cb278f029cdf37a086394d1747
ackageManager.java
7e955e7ccef41fba8bed9f6b9d4fd59afb9007ae 04-Sep-2010 Kenny Root <kroot@google.com> am a060b5f7: am 6dc003a7: Merge "Reduce footprint of Signature from ~7000 to ~1448" into gingerbread

Merge commit 'a060b5f73863f4b5f161674a9c5ac0a0d8d76072'

* commit 'a060b5f73863f4b5f161674a9c5ac0a0d8d76072':
Reduce footprint of Signature from ~7000 to ~1448
6dc003a73f7f01aa5dd5831e777e2aa44f65b032 04-Sep-2010 Kenny Root <kroot@google.com> Merge "Reduce footprint of Signature from ~7000 to ~1448" into gingerbread
de0ff63700c1836771d797e6c7340b18cb814484 04-Sep-2010 Kenny Root <kroot@google.com> Reduce footprint of Signature from ~7000 to ~1448

Signature had lazy initialization of the mString member when needed, but
it would stick around forever when initialized. Each package had one or
more Signatures that would be ~7000 bytes each. At a couple hundred
packages, that's over 1.3MB just for signatures.

Whenever packages.xml was written out, it would write the Signature for
each program as well which happens at boot thereby initializing the
mString member pretty much immediately.

Change-Id: Idb882ffeca2861b3e87437fc83f001710d6c0441
ignature.java
69717ccd13bb5568b912701ab39d603cfa7091cc 03-Sep-2010 Dianne Hackborn <hackbod@google.com> DO NOT MERGE. Some stuff that is Not Ready.

Change-Id: I8fdba32722d86b92c791dbf7c6c0166bcdb02852
pplicationInfo.java
6c82f673f6c01cdcf7ede82c67601fbd53d090f3 04-Sep-2010 Dianne Hackborn <hackbod@google.com> am fd3f44b3: am e1aa82a4: Merge "Adding a feature denoting support for 5 or more fully independent multitouch pointers." into gingerbread

Merge commit 'fd3f44b38882c74c10aff0e238ee4ad9fcd8b724'

* commit 'fd3f44b38882c74c10aff0e238ee4ad9fcd8b724':
Adding a feature denoting support for 5 or more fully
6993d3d136fed8600a3e337d710907b50d8d6e49 03-Sep-2010 Dan Morrill <morrildl@google.com> Adding a feature denoting support for 5 or more fully
independent multitouch pointers.

Change-Id: I9997ed9c481dbd507e9eff70d8beb9e1140cca3f
ackageManager.java
16750623421fb404181b12ae04baa2fe26c5b9dd 02-Sep-2010 Dan Morrill <morrildl@google.com> Adding features for new hardware, and creating a baseline list of required
hardware for the Tablet profile. This is very much subject to change.

Change-Id: Id0921b373cf610a7ec9ddd75dc020bf8b22a6911
ackageManager.java
f83d4f1779eb4801275a56023c343459a95009af 02-Sep-2010 Hung-ying Tyan <tyanh@google.com> resolved conflicts for merge of 3e4975a5 to master

Change-Id: Icd382fc43c8a1975801ab42eb184b633520149c7
3424c02e6b931a8bbd651ae75217bebd008b2605 27-Aug-2010 Hung-ying Tyan <tyanh@google.com> Add software features for SIP and VOIP

and block SipService creation and SIP API if the feature is not available.

Change-Id: Icf780af1ac20dda4d8180cea3e5b20e21a8350bc
ackageManager.java
90324669f21e0676e66bc4ed681be560bba5f188 02-Sep-2010 Dan Morrill <morrildl@google.com> am 61f1cbdd: am a800a2ef: Merge "Adding a feature definition corresponding to support for Near-Field Communications (NFC)." into gingerbread

Merge commit '61f1cbdd71942433ce1515b614ec3d9c259ea037'

* commit '61f1cbdd71942433ce1515b614ec3d9c259ea037':
Adding a feature definition corresponding to support for Near-Field
76437d379357a418b8236b041d1b3e03939264e6 01-Sep-2010 Dan Morrill <morrildl@google.com> Adding a feature definition corresponding to support for Near-Field
Communications (NFC).

Change-Id: I32b1b949524bfd978f53e23e02d38dfba4a2ea9c
ackageManager.java
2394c164a76f6d3f8ad9f1c1517f58f72adab9d7 01-Sep-2010 Dianne Hackborn <hackbod@google.com> am ec438e14: am 361199b5: Add PackageManager API to get information about a provider component.

Merge commit 'ec438e1448ebc578ee5a4c4beb1e26292cdedd6e'

* commit 'ec438e1448ebc578ee5a4c4beb1e26292cdedd6e':
Add PackageManager API to get information about a provider component.
361199b5e742c6635d4d7a03de6cf37b31cf442c 31-Aug-2010 Dianne Hackborn <hackbod@google.com> Add PackageManager API to get information about a provider component.

Kind-of useful when all you have is a ComponentName.

Change-Id: I9a99f12daabb29e97e882e09c43ca0df70c00651
PackageManager.aidl
ackageManager.java
d02bdaab495641ab50e2123fdfd99a819cc40540 26-Aug-2010 Daniel Sandler <dsandler@android.com> Remove experimental immersive mode support. DO NOT MERGE

Bug: 2949215

Change-Id: I7d998ef571ef7e149bb96261430e92150b80b77d
ctivityInfo.java
ackageParser.java
818c830c59fb8fb0fe7576f1e5a073ab599227c8 28-Aug-2010 Kenny Root <kroot@google.com> am 83285781: am 7046bd92: Merge "Allow native shared libraries in ASEC containers" into gingerbread

Merge commit '8328578152fbfd23952a6cda4b2e60853d78eb74'

* commit '8328578152fbfd23952a6cda4b2e60853d78eb74':
Allow native shared libraries in ASEC containers
85387d7ba36e56b291cbde87acb5a5b2200fe01c 26-Aug-2010 Kenny Root <kroot@google.com> Allow native shared libraries in ASEC containers

This change moves the native library handling earlier in the package
installation process so that it may be inserted into ASEC containers
before they are finalized in the DefaultContainerService.

Note that native libraries on SD card requires that vold mount ASEC
containers without the "noexec" flag on the mount point.

Change-Id: Ib34b1886bf6f94b99bb7b3781db6e9b5a58807ba
pplicationInfo.java
nstrumentationInfo.java
41bfa37cb2ca244432061bddb1c8bf802545ae6e 27-Aug-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 409b7120 to master

Change-Id: I1741e205b5ff5ae62a38ab3b096bcc3d96883538
02486b1327e3007c62d253dd89ba9db1852b87f8 26-Aug-2010 Dianne Hackborn <hackbod@google.com> Hide heavy-weight API.

And give it a better name, for when it is later un-hidden.

Change-Id: Iae0d3054d44f873b9f953bc41d175a47802a185e
pplicationInfo.java
ackageParser.java
103bff317be898498afa1a2f33b960f09592da74 24-Aug-2010 Dianne Hackborn <hackbod@google.com> am 5474b0f8: am 39792d22: Fix bugs with granting permissions through onNewIntent().

Merge commit '5474b0f8603ee66413c3e44600ca46f162f3089e'

* commit '5474b0f8603ee66413c3e44600ca46f162f3089e':
Fix bugs with granting permissions through onNewIntent().
3e6d50cc484f2eee0cff63789cc7796718eb6b68 24-Aug-2010 Dianne Hackborn <hackbod@google.com> Make Theme.Holo the default theme for new apps.

Also change Holo to have an action bar, instead of a title bar.

Change-Id: I45c2f06938509ae02cde99d1c06c228f86e8e3e8
ackageParser.java
39792d2262352ae775091876d5488d2412a2ff92 20-Aug-2010 Dianne Hackborn <hackbod@google.com> Fix bugs with granting permissions through onNewIntent().

It would grant the permission to the temporary ActivityRecord,
not the real one, so it never got cleaned up.

Also allow granting of permissions to services because... well,
it would be really really useful. And it introduces some
refactoring that we'll need to support cut/paste.

Change-Id: If521f509042e7baad7f5dc9bec84b6ba0d90ba09
pplicationInfo.java
ce845d73015acea0a337dd06721f5c649f565242 05-Aug-2010 Kenny Root <kroot@google.com> am c5183aca: am c68bcc32: Merge "Only allow one movePackage operation in-flight" into gingerbread

Merge commit 'c5183acae55e08f4bfcb58aa122a200863748a63'

* commit 'c5183acae55e08f4bfcb58aa122a200863748a63':
Only allow one movePackage operation in-flight
529b60a3b16ac3dff24f2403d760ab8ebc9670ff 04-Aug-2010 Romain Guy <romainguy@google.com> Add android:hardwareAccelerated to Activity.

Hardware acceleration can now be enabled/disabled locally on each activity
declared in the manifest. It can also be enabled/disabled directly on a
window through the WindowManager.LayoutParams.

Change-Id: I91dd0b26c4e7eb8cd7288e523ed6b7bda6d0990b
ctivityInfo.java
pplicationInfo.java
ackageParser.java
deb112674e9940a46c87fa4e3bae5d8d1ee84ef3 02-Aug-2010 Kenny Root <kroot@google.com> Only allow one movePackage operation in-flight

When a movePackage operation is requested, don't allow multiple requests
to pile up for one package. Once a move is completed, an observer will
receive the message and be allowed to call movePackage again.

Change-Id: Ie3842b6d96446febc0037bf9b8f1ca250735edc2
ackageManager.java
ackageParser.java
b0289f62af77a2811b4528fe284aad871e3c6b31 02-Aug-2010 Kenny Root <kroot@google.com> am 59d4a536: am 739cdab7: Merge "Do not deference before null check" into gingerbread

Merge commit '59d4a5369cd68d4b65809ded407611b62b013f9a'

* commit '59d4a5369cd68d4b65809ded407611b62b013f9a':
Do not deference before null check
930d3af75f9e9663222f4c4a1d75b326cf811e35 31-Jul-2010 Kenny Root <kroot@google.com> Do not deference before null check

The return of parsePackageLite wasn't checked until after it was
deferenced. Move the deference below the null check and remove redundant
set.

Bug: 2852726
Change-Id: I3eaaea5050948145eed44b64507dc846993d98eb
ackageParser.java
4cca89c0425a93dd842d85a56205c017a418e1c1 26-Jul-2010 Dianne Hackborn <hackbod@google.com> am 3a2ff74f: am 46730fc7: Fix handling of application disabled state.

Merge commit '3a2ff74fa4c3f014555ec64fccc16e1b9f6d0111'

* commit '3a2ff74fa4c3f014555ec64fccc16e1b9f6d0111':
Fix handling of application disabled state.
46730fc78388607fd562044cbaaa26ffc9f65337 25-Jul-2010 Dianne Hackborn <hackbod@google.com> Fix handling of application disabled state.

Change-Id: I617b76e89eeb75437b384b92f1205bb00b15bb70
ackageParser.java
511d9ec363c5bb460e4695de56edc1b7785dc7bf 09-Jul-2010 Kenny Root <kroot@google.com> am 0a21801f: am a5402dab: Merge "OBB API for PackageManager" into gingerbread

Merge commit '0a21801f5fae22cd5e1b3e9f1c1405c744e24c9b'

* commit '0a21801f5fae22cd5e1b3e9f1c1405c744e24c9b':
OBB API for PackageManager
93565c4b3265c16aee4a82d7556f811776c17db8 19-Jun-2010 Kenny Root <kroot@google.com> OBB API for PackageManager

Simple API for tracking .obb files associated with packages. Stores the
path in the PackageSettings. No verification of file content is done
now since the PackageManagerService can't read the SD card where these
files will likely live.

Change-Id: Ibeaf26ba0526b6d60f401137e58f46ee9faff39e
PackageManager.aidl
ackageManager.java
1df11fc8f17573f0f23229e5eb77c0f82942f7f7 28-Jun-2010 Chih-Chung Chang <chihchung@google.com> am cbbc035b: am de1057c4: Unhide new API for supporting multiple cameras.

Merge commit 'cbbc035b640790650d0e377a2d6291cc523a2a35'

* commit 'cbbc035b640790650d0e377a2d6291cc523a2a35':
Unhide new API for supporting multiple cameras.
de1057c4a6aa41c3b88bcc4fd49d70f973f1d9eb 14-Jun-2010 Chih-Chung Chang <chihchung@google.com> Unhide new API for supporting multiple cameras.

Change-Id: I916a536c80330444a15986ba380205a6deed2390
ackageManager.java
c4c6635d1a1dc5ac60abf39d239a9c2a6ce97845 23-Jun-2010 Daniel Sandler <dsandler@android.com> am 57b53265: am ef730e6e: Merge "Fix javadocs." into gingerbread

Merge commit '57b5326561b6edb22b09016985b41b7cdb2156c0'

* commit '57b5326561b6edb22b09016985b41b7cdb2156c0':
Fix javadocs.
6c55b8b143b4cc8335789bff58a2ac545bd58806 23-Jun-2010 Daniel Sandler <dsandler@android.com> am 71764c4c: am 613dde4a: Revised "immersive mode" API.

Merge commit '71764c4ce5b248a79542238b171a783e82e0fe37'

* commit '71764c4ce5b248a79542238b171a783e82e0fe37':
Revised "immersive mode" API.
8091ca5015b2a9f591ad7d3ee5ec832c16cf5548 22-Jun-2010 Daniel Sandler <dsandler@android.com> Fix javadocs.

Change-Id: Ic37c16625ddd0175cc048dd2b22bc75c6962d43d
ctivityInfo.java
613dde4aa651e11dac3db859723cc6faf8fc0a82 21-Jun-2010 Daniel Sandler <dsandler@android.com> Revised "immersive mode" API.

No longer a window bit, FLAG_IMMERSIVE is now set on
ActivityInfo.flags and in the Activity's manifest as
android:immersive="true" (ActivityInfo).

[An "immersive" activity is one that wishes to avoid being
paused by full-screen notifications (like an incoming call).
An activity that sets FLAG_IMMERSIVE/android:immersive is
sending a signal to the notification manager, status bar,
etc. that they should try to find some other way to get the
user's attention in high-priority situations.]

[Originally: change Ie290c2e.]

Change-Id: I967bb10b930b8f0772b10f81f2957a03fa3f1736
ctivityInfo.java
ackageParser.java
d0b15cecc63b03ca4e42549ed3a54ae2c7e31866 04-Jun-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of f3307ae8 to master

Change-Id: Ic59db363391f73343eba32894113914ceea5a963
860755faa6bdd3c2aeae49c05b87b5bc080ae60c 04-Jun-2010 Dianne Hackborn <hackbod@google.com> Add support for heavy-weight applications.

Only one can be running at a time, their process can not be killed,
and a notification is posted while it is running.

Change-Id: I843015723947e0c934ae63a1aeee139327c0bc01
pplicationInfo.java
ackageParser.java
812ccbeb3ce55c50463fda1d161b2eeed8b19cd2 01-Jun-2010 Romain Guy <romainguy@google.com> Add new hardwareAccelerated manifest attribute to enable HW drawing.

Change-Id: I2bb0252f3699cb720e7f5b6868419c9904e4fb35
pplicationInfo.java
ackageParser.java
22ec9ab3b881d71866279ba9363c644a9e4e7164 30-Apr-2010 Dianne Hackborn <hackbod@google.com> Fix build.

Change-Id: Iac00a1d02d04c346807ff2580362adfc838d1813
pplicationInfo.java
14cee9f688c32d63d8521188e7422811629bb7c2 24-Apr-2010 Dianne Hackborn <hackbod@google.com> New xlarge screen size.

Not complete, only for experimentation at this point.

This includes a reworking of how screen size configurations are matched,
so that if you are on a larger screen we can select configurations for
smaller screens if there aren't any exactly matching the current screen.

The screen size at which we switch to xlarge has been arbitrarily
chosen; the compatibility behavior has not yet been defined.

Change-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5
pplicationInfo.java
ackageParser.java
b6c459276f222e01777380c4c1e3a31680e561ec 27-Apr-2010 Dianne Hackborn <hackbod@google.com> am 44f2c6ba: am 2e4b98dc: Merge "Whoops a little more on issue #2631417: Expose FLAG_EXTERNAL_STORAGE" into froyo

Merge commit '44f2c6baa68e02f7837cd1ca285d5c4f0f871b18' into kraken

* commit '44f2c6baa68e02f7837cd1ca285d5c4f0f871b18':
Whoops a little more on issue #2631417: Expose FLAG_EXTERNAL_STORAGE
34483a0f6e1db9b0d96abc8b6dd056ec385f82b6 27-Apr-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 5a8f877c to kraken

Change-Id: I3e320cfe9fcafe4f49e1863eaeddac96bc3f72c6
94c567e1e344d49168603f5a0560215a4ce735e6 27-Apr-2010 Dianne Hackborn <hackbod@google.com> Whoops a little more on issue #2631417: Expose FLAG_EXTERNAL_STORAGE

There was a gap in the bit numbers.

Change-Id: I0feef7dc4abed5db7412659b5ad078caffe4f2d4
pplicationInfo.java
3202d380226043fa665df3c92252f791f8c52d55 27-Apr-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2631417: Expose FLAG_EXTERNAL_STORAGE

Also update 8.xml to match the current API.

Change-Id: I668fe56f6c156c2e8daa458baa7410fdb8ebef52
pplicationInfo.java
81cd2e90ccdda498234384c8207afe2213714e60 22-Apr-2010 Adam Powell <adamp@google.com> Logo attribute for manifest and PackageManager methods to fetch it

Change-Id: I2c5ac44a4e2af982a616b2012901d7395013b19f
omponentInfo.java
ackageItemInfo.java
ackageManager.java
ackageParser.java
3e543abbc18eec03ba7300b53cd65dc1c30fd40b 08-Apr-2010 Suchi Amalapurapu <asuchitra@google.com> am a599469f: am c2461be6: Merge "Fix 2579461 Move install location values to secure settings. Diable attribute for UI. Set default value to auto. Add command line interface to set install location via pm." into froyo

Merge commit 'a599469f9095532cac95a8e7600412f156b88f1c' into kraken

* commit 'a599469f9095532cac95a8e7600412f156b88f1c':
Fix 2579461
40e472521a544f26cb6956995788f7c36fff1404 08-Apr-2010 Suchi Amalapurapu <asuchitra@google.com> Fix 2579461
Move install location values to secure settings.
Diable attribute for UI. Set default value to auto.
Add command line interface to set install location via pm.

Change-Id: I80e97b3d24845adad7102f40dcbe238f00efa406
PackageManager.aidl
5a0797a91016e85bb50a7d5c0d7e031166429ddd 06-Apr-2010 Dianne Hackborn <hackbod@google.com> am c94dad83: am 6e52b5d7: 2568467 System crash when installing corrupt APK

Merge commit 'c94dad83be792928206363cb43524a68b6a62ffe' into kraken

* commit 'c94dad83be792928206363cb43524a68b6a62ffe':
2568467 System crash when installing corrupt APK
f0adaa1bd579a0749406f6f5c72d00a0a62eb0e6 06-Apr-2010 Dianne Hackborn <hackbod@google.com> am eab92d7b: am 01f6b75b: Merge "Fix issue #2564479: Favorite Recipes App Installation Fail" into froyo

Merge commit 'eab92d7bec5ff0d12ee68047bba4ade3afb718a7' into kraken

* commit 'eab92d7bec5ff0d12ee68047bba4ade3afb718a7':
Fix issue #2564479: Favorite Recipes App Installation Fail
6e52b5d76850ee60bbef2f3d8a2e47bd589e28e8 05-Apr-2010 Dianne Hackborn <hackbod@google.com> 2568467 System crash when installing corrupt APK

Also fix another crash I just saw in the package manager, when a
permission got left around from a previous install but as no
longer defined.

Change-Id: I33b87420f0c59e24b8b77fab8b0316461d99e048
ackageParser.java
01f6b75baa3b9144240fa8c9772859ab4ac948bd 06-Apr-2010 Dianne Hackborn <hackbod@google.com> Merge "Fix issue #2564479: Favorite Recipes App Installation Fail" into froyo
a03dfc079263bc6eb9bbb060273ea346930b4944 06-Apr-2010 Dan Morrill <morrildl@google.com> am ca5e7de8: am 21390f08: Merge "Adding a feature definition for touchscreens that was overlooked in the last round." into froyo

Merge commit 'ca5e7de82b18dcd5fb8f617b40b45c95edce8c3e' into kraken

* commit 'ca5e7de82b18dcd5fb8f617b40b45c95edce8c3e':
Adding a feature definition for touchscreens that was overlooked in the last
b0fe033ff8695418645ede29ce683949f68033c2 05-Apr-2010 Dan Morrill <morrildl@google.com> Adding a feature definition for touchscreens that was overlooked in the last
round.

Change-Id: I8f30676a7b468a9868503b05f366709d5534a44e
ackageManager.java
d1cff1b4a477bad7f6c968572ecdff26ca6e8cda 03-Apr-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2564479: Favorite Recipes App Installation Fail

Change-Id: Ide1045e3f6bef9ed2a2fee08bfeda8c58feb685f
ackageParser.java
767225d8206adf4db968f3fa86d9ebb107a12067 31-Mar-2010 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of d9ee01a9 to kraken

Change-Id: I645177513e6dfa4b3b02c0061b8026bde4acde8d
07330791116513710d879c45b2f095cd314cbfd0 31-Mar-2010 Jeff Brown <jeffbrown@google.com> Show SD unavailable icon for apps on SD when ejected.

This change include a minor refactoring of PackageItemInfo and related
classes to eliminate code duplication and to avoid redundant work
searching for an ApplicationInfo instance we already have.

Bug: b/2537578
Change-Id: Id0794c3f055ea58b943028f7a84abc7dec9d0aac
pplicationInfo.java
omponentInfo.java
ackageItemInfo.java
esolveInfo.java
b4915265a09361c375e792781ead5bfec6c797d9 30-Mar-2010 Dianne Hackborn <hackbod@google.com> am ab86fc91: am de2722af: Merge "Package manager optimizations." into froyo

Merge commit 'ab86fc91f5b54b8b730c0f594f04bbfb4c41697a' into kraken

* commit 'ab86fc91f5b54b8b730c0f594f04bbfb4c41697a':
Package manager optimizations.
d7c096845dee7616095eda0fe9e7aa08f0ba9c20 30-Mar-2010 Dianne Hackborn <hackbod@google.com> Package manager optimizations.

Addresses:
Issue #2550648: PackageManagerService setComponentEnabledSetting unconditionally
writes Settings xml
Issue #2549084: Make PackageManager.addPermission have async version

Also make the writing of settings when changing the preferred activities to use
the same async mechanism, and fiddle with thread priorities in the background
thread to go up to foreground priority when holding the lock to write settings
and a few other places. (At some point we should really clean this up to never
acquire the main lock while in the background.)

Change-Id: Ib2b7632543f6fb3f92a225518579f3b2d15e1413
PackageManager.aidl
ackageManager.java
1f4df90bfab8ca42eabe95f19eadff3432eee7fd 27-Mar-2010 Oscar Montemayor <oam@google.com> DO NOT MERGE
Removing unused features from source tree.
Please refer to Bug#2502219.

Change-Id: I879c29bfd5ffe933f64bb1082aaae7c956450a5a
pplicationInfo.java
ackageParser.java
691b806ff8b4a6428588e8495cb1a5819a0aee99 30-Mar-2010 Romain Guy <romainguy@google.com> Merge "Fix possible security issue. Bug #2553187" into froyo
ef3f5ddc2137ed99e41f00441b688fb56b855179 30-Mar-2010 Ben Cheng <bccheng@android.com> Replace "safeMode" with a more specific name "vmSafeMode" in the public API.

Bug: 2553512
Change-Id: Id0dad80ecdcb8c7430dcf1ac26132ccd9c0770f5
pplicationInfo.java
ackageParser.java
2aba11f6b9b7b202742a11797084a23d0f940c35 30-Mar-2010 Romain Guy <romainguy@google.com> Fix possible security issue.
Bug #2553187

Limit the max number of lines for each entry in the ResolveActivity to 2. Also
make sure to discard potential styling tags and newlines/space characters from
package name and activity labels.

Change-Id: Ibda3688267aa948b921164d3d3abc8c9236e61a2
ackageItemInfo.java
esolveInfo.java
e99bb5f10b90736d10cee9729b56cba156fc0921 19-Mar-2010 Suchi Amalapurapu <asuchitra@google.com> Add new method call back in MountService.
PackageManager invokes this call back when its done handling
the media status update.
Add new uid check for updateExternalMediaStatus
Change killPids method in ActivityManager.
Remove mountsd command in Pm.java We cannot arbitrarily enable/disable
packages in PackageManager now.

Change-Id: I28dcba4afd2b4486f68abdaa1628a31b66544c91
PackageManager.aidl
2e805b19cdb309ea6eeb6d2e8b0915681f831f5a 22-Mar-2010 Brad Fitzpatrick <bradfitz@android.com> Grammar fixes.

Change-Id: I77672d2260c26aee146bb6a853137c14e3db1f28
ackageManager.java
806da1d46c94c71728b94dec75dec6519c962b5c 19-Mar-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2512507: Shortcuts and Widgets lost on upgrading from Eclair to FRE70D

Apps on the system partition are now allowed to change their certs, as
long as they are not using a shared user id.

Change-Id: I02ff7ac874dc649b7f8cbb705ae8d7ed31e1d125
ackageParser.java
90d8ee650be988d8479f4f14ae8e541bb4cb034b 18-Mar-2010 Suchi Amalapurapu <asuchitra@google.com> Switch default install location to unspecified.
Add a new install location unspecified for backward compatibility.
There is not much difference between policies auto and unspecified.
But we dont have to make any code changes in PackageParser based
on our preference for install location.
Add tests

Change-Id: I563238133261d911d08fbc66344687b7dfc870b1
ackageInfo.java
ackageParser.java
14b6abda1309631d49d4bebbb0317a7e1dfc0a50 17-Mar-2010 Suchi Amalapurapu <asuchitra@google.com> Add new install flag to install on internal flash only
Change default install location policy for new flag.
New error code for media unavailable.

Change-Id: I5a5d0828b067692b2b94a15a2bcc7534f796c1a2
ackageManager.java
8a9ab24a5c9b595ac0268fcade4b5bbfe7c45c2d 12-Mar-2010 Suchi Amalapurapu <asuchitra@google.com> Do storage checks before initiating a move.
Add new remote method to check for insufficient error conditions.
Some fixes in MountService when updating media status on PackageManagerService
Fix size calculation condition in installd.

Add new error code if media is unavailable.
New tests for testing error codes.
Some additional debugging statements in MountService.

Change-Id: Ibfe90d5ed6c71d57f9c1c67806f38b5ae9ecdfbf
ackageManager.java
3de55bcd34afd5871816526294f9514d1adf3fe5 13-Mar-2010 Christopher Tate <ctate@google.com> API CHANGE: expose the backup-related ApplicationInfo flag masks

Fixes bug #2507582 by doing the following:

- Un-@hide the FLAG_ALLOW_BACKUP, FLAG_KILL_AFTER_RESTORE, and
FLAG_RESTORE_ANY_VERSION mask constants in ApplicationInfo. These
correspond, respectively, to the <application> manifest tag's
android:allowBackup, android:killAfterRestore, and
android:restoreAnyVersion attributes.

- Remove the android:restoreNeedsApplication attribute and the
corresponding FLAG_RESTORE_NEEDS_APPLICATION constant [which was still
marked @hide]. We now always use the application's own Application
class when performing a normal restore. In the future when we support
an externalized full-filesystem backup/restore operation, we will use
an OS-defined agent class with a base-class Application instance, but
this will not happen until a future release.

Also expands real documentation on the above ApplicationInfo constants;
that work is part of bug #2465360

Change-Id: I735d07a963ae80a01343637d83bef84e4c23fdcc
pplicationInfo.java
ackageParser.java
15a4d2ffd04dc6c70f2cd17dae12ac6bc14c69ab 12-Mar-2010 Kenny Root <kroot@google.com> Add correct copyright headers to multiple files

Format for the list of changes shows the origin commit reference followed
by the file name.

33931-p9 awt/org/apache/harmony/awt/gl/font/AndroidGlyphVector.java
33931-p9 awt/org/apache/harmony/awt/gl/image/PngDecoderJava.java
133776-p9 core/java/android/app/IntentService.java
127013-p9 core/java/android/appwidget/AppWidgetHost.java
27863-p9 core/java/android/bluetooth/BluetoothAudioGateway.java
60765-p9 core/java/android/content/SyncResult.java
43920-p9 core/java/android/content/pm/ActivityInfo.java
43920-p9 core/java/android/content/pm/ApplicationInfo.java
43920-p9 core/java/android/content/pm/InstrumentationInfo.java
43920-p9 core/java/android/content/pm/PackageInfo.java
44103-p9 core/java/android/content/pm/PackageItemInfo.java
68960-p9 core/java/android/content/pm/PackageStats.java
43920-p9 core/java/android/content/pm/ResolveInfo.java
43920-p9 core/java/android/content/pm/ServiceInfo.java
60641-p9 core/java/android/content/res/Configuration.java
60734-p9 core/java/android/content/res/TypedArray.java
137672-p9 core/java/android/inputmethodservice/ExtractButton.java
123112-p9 core/java/android/inputmethodservice/ExtractEditText.java
119291-p9 core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
112946-p9 core/java/android/inputmethodservice/IInputMethodWrapper.java
115078-p9 core/java/android/os/BatteryStats.java
124790-p9 core/java/android/text/style/UpdateAppearance.java
45083-p9 core/java/android/view/RawInputEvent.java
101491-p9 core/java/android/view/inputmethod/EditorInfo.java
114701-p9 core/java/android/view/inputmethod/ExtractedText.java
123112-p9 core/java/android/view/inputmethod/ExtractedTextRequest.java
119291-p9 core/java/com/android/internal/os/HandlerCaller.java
129279-p9 core/java/com/android/internal/os/PkgUsageStats.java
114701-p9 core/java/com/android/internal/view/IInputConnectionWrapper.java
114701-p9 core/java/com/android/internal/view/InputConnectionWrapper.java
84364-p9 opengl/java/android/opengl/EGLLogWrapper.java
11355-p9 opengl/tools/glgen/src/CFunc.java
11355-p9 opengl/tools/glgen/src/CType.java
11355-p9 opengl/tools/glgen/src/CodeEmitter.java
11355-p9 opengl/tools/glgen/src/GenerateGL.java
11355-p9 opengl/tools/glgen/src/JFunc.java
11355-p9 opengl/tools/glgen/src/JType.java
11355-p9 opengl/tools/glgen/src/JniCodeEmitter.java
11355-p9 opengl/tools/glgen/src/ParameterChecker.java
57236-p9 services/java/com/android/server/status/AnimatedImageView.java
66754-p9 services/java/com/android/server/status/CloseDragHandle.java
57188-p9 services/java/com/android/server/status/DateView.java
46928-p9 services/java/com/android/server/status/ExpandedView.java
70590-p9 services/java/com/android/server/status/FixedSizeDrawable.java
45968-p9 services/java/com/android/server/status/IconData.java
57470-p9 services/java/com/android/server/status/IconMerger.java
82719-p9 services/java/com/android/server/status/LatestItemView.java
45968-p9 services/java/com/android/server/status/NotificationData.java
66754-p9 services/java/com/android/server/status/NotificationLinearLayout.java
57458-p9 services/java/com/android/server/status/NotificationViewList.java
45968-p9 services/java/com/android/server/status/StatusBarException.java
45968-p9 services/java/com/android/server/status/StatusBarIcon.java
46130-p9 services/java/com/android/server/status/StatusBarNotification.java
45968-p9 services/java/com/android/server/status/StatusBarView.java
46199-p9 services/java/com/android/server/status/Ticker.java
62286-p9 services/java/com/android/server/status/TickerView.java
57188-p9 services/java/com/android/server/status/TrackingView.java
86041-p9 telephony/java/android/telephony/PhoneStateListener.java
87020-p9 telephony/java/com/android/internal/telephony/TelephonyIntents.java
136269-p9 telephony/java/com/android/internal/telephony/gsm/SpnOverride.java
34409-p9 tests/FrameworkTest/src/com/android/frameworktest/FrameworkTestApplication.java
55717-p9 tests/FrameworkTest/src/com/android/frameworktest/performance/InvalidateCycle.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollableResize.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollableResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java
127341-p9 tests/ImfTest/src/com/android/imftest/samples/ButtonActivity.java
129347-p9 tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/EditTextActivityDialog.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java
25959-p9 tests/framework-tests/src/android/test/FrameworkTests.java
46162-p9 tests/framework-tests/src/com/android/internal/http/multipart/MultipartTest.java
77101-p9 tools/layoutlib/bridge/tests/com/android/layoutlib/bridge/NinePatchTest.java
9788976b1465ce982b5ae7c741345edd0ecd9322 core/java/android/accounts/AuthenticatorDescription.java
53332883543868fb83e111a07306368b7772b340 core/java/android/app/UiModeManager.java
93e7e22ec91dbc641d10ca6d70423e1357a95bba core/java/android/app/FullBackupAgent.java
328c0e7986aa6bb7752ec6de3da9c999920bb55f core/java/android/content/CursorEntityIterator.java
307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncQueue.java
307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncOperation.java
eb034652c2037a47ebfd99779e8383bb8bb528af core/java/android/content/pm/LabeledIntent.java
49237345d83e62fdb9eb8d50b13ad086636a04fa core/java/android/content/pm/FeatureInfo.java
a2b6c3775ed6b8924232d6a01bae4a19740a15f8 core/java/android/content/pm/PackageInfoLite.java
3ecd5f437580e49d80beecd29489d5fb1f7a7db0 core/java/android/content/pm/RegisteredServicesCacheListener.java
5ebbb4a6b3e16f711735ae0615b9a9ea64faad38 core/java/android/content/pm/XmlSerializerAndParser.java
c4516a7b62de525e3d6d5e76851bdfaf12c11f05 core/java/android/database/sqlite/SQLiteTransactionListener.java
9bbc21a773cbdfbef2876a75c32bda5839647751 core/java/com/android/internal/backup/LocalTransport.java
21f1bd17b2dfe361acbb28453b3f3b1a110932fa core/java/com/android/internal/content/PackageMonitor.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseSurfaceHolder.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseIWindow.java
e540833fdff4d58e37c9ba859388e24e2945ed45 core/java/com/android/internal/os/SamplingProfilerIntegration.java
192ab903887bbb8e7c7b6da5c581573850e30f46 core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java
1619367ab823150fa8856d419abe02ceb75886f1 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
27f8002e591b5c579f75b2580183b5d1c4219cd4 opengl/tools/glgen/stubs/gles11/glGetString.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glShaderSource.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GenerateGLES.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/Jsr239CodeEmitter.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GLESCodeEmitter.java
69e21f5f6e0d04539cd92848ea009dd615d88c2c opengl/tests/gldual/src/com/android/gldual/TriangleRenderer.java
c028be4f3b8c7476b46859f66c3f33d528adf181 packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerMeasurement.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestActivity.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestRunner.java
df8a3f31d871db25e952972c2eb346a71186e9e3 tests/BrowserTestPlugin/src/com/android/testplugin/TestPlugin.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java

Copyright header moved to top in following file:

core/tests/coretests/src/android/widget/ListViewTest.java

Change-Id: I3c3198be5a0ba36e18679ed834170432bf0b8418
ctivityInfo.java
pplicationInfo.java
eatureInfo.java
nstrumentationInfo.java
abeledIntent.java
ackageInfo.java
ackageInfoLite.java
ackageItemInfo.java
ackageStats.java
egisteredServicesCacheListener.java
esolveInfo.java
erviceInfo.java
mlSerializerAndParser.java
2ee89ea2887252053c31541c54126a8b084c9bca 11-Mar-2010 Dianne Hackborn <hackbod@google.com> Applications should -not- be able to set preferred activities.

I can't believe I let this slip through. And in the SDK no less. :(

The APIs for setting preferred activities will now throw a security
exception when used. This may break some apps, we'll see how it
goes. If it is too bad we can just make these log and not throw
anything, but I would much prefer they throw an exception.

Change-Id: I3aed434750eef8b202aa9d5bd774a0121be521c6
ackageManager.java
6069beb2dfed6da837bf7faa3db3f6119edc017a 10-Mar-2010 Suchi Amalapurapu <asuchitra@google.com> Rename ApplicationInfo.FLAG_ON_SDCARD to ApplicationInfo.FLAG_EXTERNAL_STORAGE

Change-Id: Iadef9f9bb2851c38b6d79be1bafbf932abce4210

Change-Id: I2e412bace3d8005db5057a3497bd836d0038b90c
pplicationInfo.java
ackageParser.java
cf244ada58539ce857ec041d7288d0271204fbb6 10-Mar-2010 Dianne Hackborn <hackbod@google.com> Add ability for some manifest attributes to reference resources.

This loosens our restriction on many manifest attributes requiring
literal string values, to allow various ones to use values from
resources. This is only allowed if the resource value does not change
from configuration changes, and the restriction is still in place
for attributes that are core to security (requesting permissions) or
market operation (used libraries and features etc).

Change-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8
ackageParser.java
a2b6c3775ed6b8924232d6a01bae4a19740a15f8 06-Mar-2010 Suchi Amalapurapu <asuchitra@google.com> Add conditions to check for updated system applications. Restrict them
to internal flash only even before we copy.

Return error codes when install flag options mismatch.
Some conditions for existings apps
- install flags override existing location
- explicity manifest option install location overrides previous location
- if upgraded package's install location is unspecified or auto, fall
back to recommended install policy which considers user setting as well.

Check for sdcard status before finding available size on sdcard
Add light weight parsing for manifest attributes including package name and
install location only

Change-Id: I5143dda87c88c595f564b317326c926d0ec3ceb8
ackageInfo.java
ackageInfoLite.aidl
ackageInfoLite.java
ackageParser.java
50ab63f5831fed5cfa888fb67f0a27eb4c0a86c4 06-Mar-2010 Dan Morrill <morrildl@google.com> Adding definitions & APIs for features that are newly-optional in FroYo.
This also refactors the files containing the features so that they are more
modular. Note that this also changes data/etc/Android.mk so that
required_hardware.xml is NOT copied automatically for all devices
anymore. Accordingly, that file is removed.
ackageManager.java
20cb56e26e91df91bd64d4251222e0d421cdbe47 04-Mar-2010 Dianne Hackborn <hackbod@google.com> Fix some bugs.

Bug #2376231: Apps lose window focus (and back key causes ANR) if the
lock screen is dismissed while the phone is in landscape mode

This is another case where we weren't recomputing the focused window
after changing the visibility policy.

bug #2479958: Investigate source of "Resources don't contain package
for resource number 0x7f0a0000"

Um, okay, so it turns out there were bugs all over the place where
we would load an XML resource from a another application, but not
use the Resources for that application to retrieve its resources...!
I think the only reason any of this stuff was working at all was
because it typically only cared about retrieving the resource
identifiers of the items (it would look up the values later).

Bug #2401082: Passion ERE26 monkey crash - InputMethodManagerService

Add some null checks.
egisteredServicesCache.java
c1552397be706c243338389c628a44eee6011eae 04-Mar-2010 Dianne Hackborn <hackbod@google.com> Allow multiple original-package tags.

Also fix some issues with moving files from update commands.
ackageParser.java
ef05e076ced1a32c5c0aaee28403779834adb2ba 02-Mar-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2448075: aapt doesn't fix up activity-alias android:targetActivity links

And related:

- The aapt tool now sets a resource configurations sdk level to match any configs
that have been set (for example if you specify density your sdk level will be
at least 4).
- New option to modify the targetPackage attribute of instrumentation.
- Clean up of aapt options help.
- Fix of UI type values to leave 0 for "unspecified".
- Make the UI mode config APIs public.
ctivityInfo.java
1f9e1b4c37c135b75cf064cbb5675aa576e2942a 26-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Remove public variables in PackageManager
Dont invoke getInstallLocation for forward locked apps.
If INSTALL_ON_SDCARD is selected as default, forward locked
apps are not being installed because of conflicting flags.
ackageManager.java
aaec779513737a70007dea955f60e1b8bcbc2f1a 25-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Pick up default install location
ackageParser.java
2269d1572e5fcfb725ea55f5764d8c3280d69f6d 25-Feb-2010 Dianne Hackborn <hackbod@google.com> Re-arrange android-common so framework no longer links with it.

This is the framework part, moving classes around so the framework
no longer needs to link to android-common. Makes some APIs public,
others that didn't need to be public are private in the framework,
some small things are copied.
ackageParser.java
egisteredServicesCache.java
3dda518a4fd57cdded3afa50d8aa206501de7fc6 25-Feb-2010 Christopher Tate <ctate@google.com> Add 'restoreAnyVersion' attr for apps that want to restore "future" data

If a backup-participating app sets android:restoreAnyVersion="true" in its
manifest <application> tag, then its agent will be invoked for restore
even if the available dataset was created by a later version of the app
than is currently installed on the device. This will not typically be
a problem for third party applications, since for them the installation
and initial data restore are tightly coupled, but it can cause serious
problems for applications which are both preinstalled on the system
partition and overridden by later updates. The primary difficulty
that this new attribute addresses is this:

1. User buys a Nexus One, Market self-updates, and the user installs some apps.
At this point the backup data on the server may indicate that the version of
Market which originated its bookkeeping is newer than the stock N1 Market app.
2. User loses their phone, and buys a replacement N1. At setup time, Market
has not yet had a chance to self-update, so when the restore comes in, it's
tagged as being from "the future" and so the restore is refused. No apps get
reinstalled.

Bug: 2442127
Change-Id: I076a9553dc613e5c3189350e778315718ed1ed2b
pplicationInfo.java
ackageParser.java
cf6eaeaae9e6745dd6e07540812c79821d7043c2 24-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Some framework fixes for apps on sd
change hard coded path in installd
fix tests
Work around for renaming containers.
Do forced unmount when destroying containers.
Force a gc in default container service to release handle to parsed package
and thus avoid getting killed by vold
Some cosmetic changes to PackageManager api.
Unit tests for renaming container for MountService
Remove internal size limit on app to be installed.
PackageManager.aidl
1bb6906c7a903ee6427c8ff37bdc5896c386ff73 20-Feb-2010 Christopher Tate <ctate@google.com> Automatically restore app data at install time

When an application being installed defines a backupAgent in its manifest, we
now automatically perform a restore of the latest-known-good data for that app.
This is defined as "data backed up by this app from this handset, if available;
otherwise data for this app as it existed when the device was initially
provisioned." If neither option exists for the app, no restore action is
taken.

The CL involves major changes in the Backup and Package Managers...

* The Package Manager's act of installing an application has now been split
into two separate phases, with a data-restore phase optionally occurring
between these two PM actions. First, the details of the install are performed
as usual. Instead of immediately notifying install observers and issuing the
install-related broadcasts, the in-process install state is snapshotted and
the backup manager notified that a restore operation should be attempted. It
does this by calling a new API on IBackupManager, passing a token by which it
identifies its in-progress install state.

The backup manager then downloads [if possible] the data for the newly-installed
application and invokes the app's backupAgent to do the restore. After this
step, regardless of failure, it then calls back into the Package Manager to
indicate that the restore phase has been completed, supplying the token that
was passed in the original notification from the Package Manager.

The Package Manager then runs the final post-install actions: notifying install
observers and sending out all the appropriate broadcasts. It's only at this
point that the app becomes visible to the Launcher and the rest of the OS.

... and a few other bits and pieces...

* The ApplicationInfo.backupAgentName field has been exposed to the SDK. This
can be reverted if there's a reason to do so, but it wasn't clear that this
info needs to be hidden from 3rd party apps.

* Debug logging of restore set IDs and operation timeout tokens [used during
any asynchronous Backup Manager operation] are now consistently in hex for
readability.

* We now properly reset our binder identity before calling into the transport
during restore-set operations. This fixes a permissions failure when a
single-app restore was attempted.

* The 'BackupTest' test app is no longer lumped onto the system partition
by default.

Change-Id: If3addefb846791f327e2a221de97c8d5d20ee7b3
pplicationInfo.java
PackageManager.aidl
8946dd3355fc1dcbad872c0546e356474d4cc5de 19-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Move package from internal to external and vice versa.
PackageManager.aidl
PackageMoveObserver.aidl
ackageManager.java
bd3f527ea0fcca2be0f773e5d6832a80a884699f 19-Feb-2010 Mike LeBeau <mlebeau@android.com> Elaborate a little on the documentation for PackageManager's resolveActivity.

Not sure if this wording is perfectly appropriate, so comments welcome.
ackageManager.java
5b993ce7bc29e43a3215a50ce6ce5d6550d4e5e2 12-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Include install location preference when installing packages.
Changes include
Add new remote call in default container service to determine
install location.
Rename INSTALL_ON_SDCARD
Remove recommentAppInstall method
Add some additional flags used in remote stubs.
Move check for protected apps prior to copy.
Unit tests

DefaultContainerService first parses the file uri(if content uri is specified
it returns a default install internal only value) and returns
a recommended location. Based on which the temporary id is determined
either a file name or a container id and the file is copied there.
This is then later renamed during install.
Todo's light weight parsing of package when determining location since we
just need the install location attribute only when finding out
recomended location. This will also enable to move the check for
updated system apps(cannot be on sdcard) prior to copying.
ackageManager.java
470969346d7958f859d97d1a136b4ecc11e2a464 12-Feb-2010 Dianne Hackborn <hackbod@google.com> Add APIs for mapping between new and current package names.

This will allow Market and others to find out what the "real" name
of a package is, when it is currently running under the old name of
a previously installed version.
PackageManager.aidl
ackageManager.java
27b28b3f62bd3b54fa13acd5d035940b9be464f3 09-Feb-2010 Tobias Haamel <haamel@google.com> Introduce special UI modes for night and car usage.

The device mode is now called ui mode. Furthermore is the order of
precedence for the resources now in such a way that the ui mode needs
to be specified after the orientation and before the density.

The ui mode can be set, like it is done for the locale, as follows:

IActivityManager am = ActivityManagerNative.getDefault();
Configuration config = am.getConfiguration();
config.uiMode = Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY;
am.updateConfiguration(config);

To allow users to disable the car mode and set the night mode the IUiModeManager
interface is used.

The automatic night mode switching will be added in a separate change.
ctivityInfo.java
6dee18c5cfdd5d63f3a9c299d2b61f819c07e920 10-Feb-2010 Dianne Hackborn <hackbod@google.com> New implementation of <original-package> tag.

We now have the new package retain the name of the old package. This makes
sure that all existing references to it (shortcuts, widgets, etc) will still
work.

This does mean that your package can run under either the old or new name,
depending on whether the user got it with an update. Buyer beware!

I have tried testing all of the paths of updating, installing another
update in /data, uninstalling the update, updating system with an even
newer update, etc. I think they all work. No promises though.
ackageParser.java
23085b781e145ed684e7270af1d5ced6800b8eff 09-Feb-2010 Ben Cheng <bccheng@android.com> Support per-application switch to execute the VM in safe mode.

The new attribute can be set by adding android:safeMode="true"
in AndroidManifest.xml with the SDK.

Tested with pairing locally compiled SDK with Eclipse and verified that the JIT
(the only component currently included in the safe mode) is indeed disabled
with the new attribute.

Bug: 2267583
pplicationInfo.java
ackageParser.java
117818e4f171b1fd9daa05349c48f61388f04567 09-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Add new manifest option for install location
Change recommendAppInstallLocation api
add code to parse new attribute.
Define flags in PackageInfo
Add new settings attributes for enabling setting and value for install location
Some tests
The policy for install location: if explicitly set in manifest as internal only we try to install the app only on internal storage. if set to preferExternal, we try to install it on sdcard if possible. If not we fall back to internal.
If the user enables setting SET_INSTALL_LOCATION(which will always
be set to false in final release builds) and sets a prefered location, we try
to honour it.
ackageInfo.java
ackageManager.java
ackageParser.java
e83cefcef07f9ac025642c1ffec76b4c7ab39cf2 05-Feb-2010 Dianne Hackborn <hackbod@google.com> New external storage APIs.

This implements the spec for external storage organization, and
properly reflects how the media scanner organizes the files it finds.

Also includes package manager support for removing app private
files from external storage when the application is uninstalled.

For the new APIs and paths, the main place to look is Environment
and Context.
PackageManager.aidl
ackageManager.java
8e867eb454efadca1f45a48d879ee57c883dbb91 09-Feb-2010 Bjorn Bringert <bringert@android.com> Merge "Fix NPE in PackageParser"
ace5a3fbfbf1b41905410925f1ea007040a7a675 05-Feb-2010 Kenny Root <kroot@google.com> Hide resourceDirs from public API

Change-Id: I070558c0adca43c8650ac740d3cda4334d0f4a50
pplicationInfo.java
e04b1ad9cd3d9a159d4c7721a374f987be1062cd 09-Feb-2010 Bjorn Bringert <bringert@android.com> Fix NPE in PackageParser

Before, PackageParser threw NPE when reading <path-permission>
android:writePermission set.

Fixes http://b/issue?id=2430967

Change-Id: I4c69f0210ab362a649ff239c5f9e927d93c2f241
ackageParser.java
b56ae20b22fd7283df32072a431ab6d4965f3c1b 05-Feb-2010 Suchi Amalapurapu <asuchitra@google.com> Rename media resource broadcasts
Add checks for fwdlocked and updated system apps
add more tests
remove duplicate adds
ackageManager.java
egisteredServicesCache.java
b858dfda5012a1040927ed62c3bb856c3294d882 02-Feb-2010 Dianne Hackborn <hackbod@google.com> Implement system data migration support.

This adds three new features:

- <original-package android:name="com.foo" /> manifest tag.
This allows an .apk to specify another package it originally came from,
propagating all state and data from the old to new package.

- <adopt-permissions android:name="com.foo" /> manifest tag.
In some more complicated cases, a new .apk may be a combination
of multiple older .apks that each declared their own permissions.
This allows you to propagate the permissions from these other
.apks into the new one.

- A new system/etc/updatecmds directory.
You can place files here which describe data files to move from
one package to another. (See below for details.)

Also in this change: we now clean up the data directories of
.apks that disappear from the system image, and some improvements
to logging and reporting error messages.

A typical file in the updatecmds directory looks like this:

-------
com.google.android.gsf:com.google.android.providers.talk
databases/talk.db
com.google.android.gsf:com.google.android.googleapps
databases/gls.db
-------

This says that for com.google.android.sfs, there are two packages to
move files from:

From com.google.android.providers.talk, the file databases/talk.db.
From com.google.android.googleapps, the file databases/gls.db

As part of moving the file, its owner will be changed from the old
package to whoever is the owner of the new package's data directory.

If those two files had existed, after booting you would now have the
files:

/data/data/com.google.android.gsf/databases/talk.db
/data/data/com.google.android.gsf/databases/gls.db

Note that all three of these facilities assume that the older .apk
is completely removed from the newer system. The WILL NOT work
correctly if the older .apk still remains.
ackageParser.java
08675a3376819a82aa5ab344bc3e7b1635c30b05 28-Jan-2010 Suchi Amalapurapu <asuchitra@google.com> Apps on sdcard: Add new broadcasts

Add new broadcasts ACTION_MEDIA_RESOURCES_AVAILABLE and
ACTION_MEDIA_RESOURCES_UNAVAILABLE that get broadcast by
PackageManagerService when sdcard gets mounted/unmounted
by MountService so that packages on sdcard get recognized by
various system services as being installed/available or
removed/unavailable by the system.
The broadcasts are sent before the actual package cleanup which includes
mounting/unmounting the packages and we force a gc right after so
that any lingering file references to resources on sdcard get
released.
egisteredServicesCache.java
cdc428bdb73db7e0d3403b6515c65573b182e218 01-Feb-2010 Oscar Montemayor <oam@google.com> Apps on SD project.
Javadoc fixes for new method in PackageManager class.
ackageManager.java
539d3c475f44b1499499a8b70375a192545cf113 30-Jan-2010 Oscar Montemayor <oam@google.com> Apps on SD card project.
Refactored recommendAppInstallLocation(..) method in PackageManager by making it an instance method.
Since PackageManager has only abstarct instance methods, moved implementation to ApplicationContext.ApplicationPackageManager class, in line with the rest of the method
implementations. Tah way, chage is consistent with best coding practices.
Also MockPackageManager received the additional method.
ackageManager.java
1228d0a1dddb8c03474ee3823499936a8b1d850c 28-Jan-2010 Oscar Montemayor <oam@google.com> Apps on SD card project.
This class implements heuristics to determine best app install location, without looking at the package flags (pre-parsing stage).
ackageManager.java
8aa2e8939c61d788cbc192098465e79f584e173a 22-Jan-2010 Dianne Hackborn <hackbod@google.com> More device admin work: description, policy control.

There is now a description attribute associated with all components,
that can supply user-visible information about what the component does.
We use this to show such information about device admins, and wallpapers
are also updated to be able to show this in addition to the existing
description in their meta-data.

This also defines security control for admins, requiring that they
declare the policies they will touch, and enforcing that they do
so to be able to use various APIs.
omponentInfo.java
ackageParser.java
1edab2b551995a8df25f4b533405d6003b8b8b66 22-Jan-2010 David 'Digit' Turner <digit@google.com> Make PackageManager unpack gdbserver binaries at installation time.

Native-debuggable packages contain a lib/<abi>/gdbserver executable.
This patch ensures that the package manager will copy it to the
proper location (/data/data/<appname>/lib) at installation time.

Note that such packages are marked with a new ApplicationInfo flag
named FLAG_NATIVE_DEBUGGABLE, to be used later by the Activity
Manager.
pplicationInfo.java
d1ab01682b136b586aac94334f976f03c762b3c7 22-Jan-2010 Kenny Root <kroot@google.com> Add extra resources field for ApplicationInfo

Allow ApplicationInfo to track multiple files it wants to use as
resources by adding a string array to its public definition.

Change-Id: Ieffc4b1755270520b59c4e5a3c084e86aef02346
pplicationInfo.java
8d528c85d00cea5168ed6842f17c7f5afae338c4 15-Jan-2010 Suchi Amalapurapu <asuchitra@google.com> Fix build error
pplicationInfo.java
af8e9f4805643f90a9dc0ecfa119e0a860c12f8a 12-Jan-2010 Suchi Amalapurapu <asuchitra@google.com> app install on sdcard. provide skeleton implementation
to install an app on sdcard, just resources.
Add new install path for /asec in installd.
ignore . when checking for apk path since the sdcard packages id'ed
by package name.
Add new -s option to adb shell pm
Refactor fwd locked from scanMode to ApplicationInfo.
Add new flag for sd install
Add new parse flags for fwd locking and installing on sdcard
New mock api's in PackageManagerService to invoke MountService api's. These
will be refactored again and so have been wrapped internally.
Some error codes in PackageManager
Changes in PackageManagerService to use mPath and mScanPath during installation
and switch to using PackageParser.Package.applicationInfo attributes for
source and public resource directories.
Some known issues that will be addressed later
using system_uid for now. needs some tinkering with uid and packagesetting creation to use the actual app uid
error handling from vold not very robust. ignoring lot of things for now
sending a delayed destroy to delete packages. will revisit later
revisit temp file creation later. just copy for now
pplicationInfo.java
PackageManager.aidl
ackageManager.java
ackageParser.java
f0108cda21bec61418b24aa6217406072780b5d5 22-Dec-2009 Tom Taylor <tomtaylor@google.com> resolved conflicts for merge of ad2fa35d to master

Change-Id: Ia4362cd48ac0689b91003943a4cd9660da72ff90
d4a4729c0cac582a2dcec7c8cfb316b81885a0f0 21-Dec-2009 Tom Taylor <tomtaylor@google.com> Update imports to android-common

Several files were moved to android-common. Update all the references
to import those files from the new location.
ackageParser.java
egisteredServicesCache.java
009909b417ba0dd79aad5e9ec887e0562fbb148b 16-Dec-2009 Xavier Ducrohet <xav@android.com> am b43b35a0: am e6547423: Merge change I10073d50 into eclair

Merge commit 'b43b35a034ad667ba749270537155e7534906153'

* commit 'b43b35a034ad667ba749270537155e7534906153':
Add Annotation for optional features.
3274b9b7da6f3ee0ee0285deb955907adec52bad 15-Dec-2009 Xavier Ducrohet <xav@android.com> Add Annotation for optional features.

This is used by the SDK to display available features in the
editors.

Change-Id: I10073d503d1b3dcb92a5dc526cd054285b85fa3a
ackageManager.java
8a1b6decfbee41bd513540d86423258743cf8d00 03-Dec-2009 Dianne Hackborn <hackbod@google.com> am e2585127: am 9ed7dc10: am 5886050f: Merge change I0d8f7593 into eclair

Merge commit 'e2585127974ce972a013407e2af95d8776a99a8e'

* commit 'e2585127974ce972a013407e2af95d8776a99a8e':
Fix issue #2296457: PackageManager.addPackageToPreferred needs to a no-op
a7ca0e5e320bbb643f8bc9feb4717dbc5e78e0b9 01-Dec-2009 Dianne Hackborn <hackbod@google.com> Fix issue #2296457: PackageManager.addPackageToPreferred needs to a no-op

Change-Id: I0d8f75938226e1bb49cf7b1154445631b0bb0bc9
ackageManager.java
506de3b57667e76cf92086b30d007c21c2cebbfd 25-Nov-2009 Dianne Hackborn <hackbod@google.com> am 5417933a: am d1689ea8: am 8e1985d4: Merge change Ie552036f into eclair

Merge commit '5417933a456f23a0ca30bb73632feee5dd5f8e46'

* commit '5417933a456f23a0ca30bb73632feee5dd5f8e46':
Fix issue #2286419: maxSdkVersion causes existing apps to disappear.
935ef2c4f43eaa849f62055c383d8fd7dcf3eead 25-Nov-2009 Dianne Hackborn <hackbod@google.com> Fix issue #2286419: maxSdkVersion causes existing apps to disappear.

Change-Id: Ie552036f4ea673e0ce9981ff1cbd1fbe08678510
ackageParser.java
187f0749b8412553a0b8ff6abecc1d956653e03b 20-Nov-2009 Dianne Hackborn <hackbod@google.com> am 79374643: am b9ab7126: am 524812fb: Merge change I7d40ad9a into eclair

Merge commit '7937464319133d478d5e8b386e9d08668eddd8a9'

* commit '7937464319133d478d5e8b386e9d08668eddd8a9':
More on issue #2271640: Fix wallpaper etc docs
08ee42ce864dc2b3ca2ca92af7220a3681d06835 20-Nov-2009 Dianne Hackborn <hackbod@google.com> More on issue #2271640: Fix wallpaper etc docs

Publish the features developers may be interested in.

Change-Id: I7d40ad9a9f4b9770e2f8dd1b0a729b0d322c062e
ackageManager.java
78bceeb925dff57543d7d9cd27f560448fb2e854 12-Nov-2009 Dianne Hackborn <hackbod@google.com> am 8c3fc080: am 5bb200fd: am 2ade6421: Merge change I775e1ec0 into eclair

Merge commit '8c3fc0801bb32a99dd5ab97c93bb615999b2c977'

* commit '8c3fc0801bb32a99dd5ab97c93bb615999b2c977':
Debugging for issue #2250075: Desk dock clock app sometimes doesn't
12527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6 12-Nov-2009 Dianne Hackborn <hackbod@google.com> Debugging for issue #2250075: Desk dock clock app sometimes doesn't

This adds a history of the last 100 broadcasts that is printed in the
debug log, to be able to see what recently happened at the time the
bug report was taken. Also does some optimization of the printing of
the broadcast records to make it feasible to print this number of
entries. (We kind-of need to do this because there are some broadcasts
like SIG_STR and SYNC_STATE_CHANGED that are being broadcast a LOT.)

Change-Id: I775e1ec0f63369c8bca8c83cee27b95ddc5ec450
ctivityInfo.java
pplicationInfo.java
ackageItemInfo.java
bb3921c9dd351d9fb2ca197d2aaf6aa1845f2aea 12-Nov-2009 Fred Quintana <fredq@google.com> am 7efa6715: am e871be66: Merge change I735f4553 into eclair-mr2

Merge commit '7efa671569955aead877d10e7d6b1fa3129184a4'

* commit '7efa671569955aead877d10e7d6b1fa3129184a4':
Make the RegisteredSErvices Cache not allow the registered service for a
1874aa487cf5da31f5770d21f0973a417f99247c 11-Nov-2009 Oscar Montemayor <oam@google.com> Encrypted File Systems project. Implementation of opt-out flag in AndroidManifest XML file.
This flag is necessary for applications to specifythat their daa is never to be encrypted when the encrypted file system feature is
commplete and enabled.
Encrypted File Systems project.
Adding android:neverEncrypt flag to AndroidManifest.XML to allow packages to opt-out from EFS features.

Encrypted File Systems Project.
Fixing white spaces and end-line issues.

Encrypted File SYstems Project: opt-out flag.
Removed AndroidManifest.xml changes, as will make that change in a separate integration.
pplicationInfo.java
ackageParser.java
5ebbb4a6b3e16f711735ae0615b9a9ea64faad38 10-Nov-2009 Fred Quintana <fredq@google.com> Make the RegisteredSErvices Cache not allow the registered service for a
type to change without first uninstalling the previous service for that
type, unless the newly installed service is in the system image.

Notify the listener when a service is added or removed.

Make the AccountManagerService remove the accounts for an authenticator
when the registered authenticator changes from one uid to another.

Make the AbstractSyncableContentProvider force a sync when the database is first created.
egisteredServicesCache.java
egisteredServicesCacheListener.java
mlSerializerAndParser.java
d83006cbe86545a1e8882b1a4ed90005ebf3423e 29-Oct-2009 Suchi Amalapurapu <asuchitra@google.com> When upgrading packages with shared user ids make sure we are eliminating
the package about to be deleted or upgraded when updating permissions associated
with the shared user. Include a simple null check when retrieving the permission.

Fix PackageParser to avoid ArrayIndexOutOfBounds exceptions in several places
ackageParser.java
8d5ae98549f68a1214a72e6d79456503eb7d96f5 06-Oct-2009 Suchi Amalapurapu <asuchitra@google.com> Make sdk version and code names static finals in PackageParser.
Remove api to set these values.
Remove an unused method in AppSecurityPermissions
ackageParser.java
bd0a81ff1c0e92e80e05e2f12bb1805c7d081e94 04-Oct-2009 Dianne Hackborn <hackbod@google.com> Work on issue #2163789: Way too much logging

Dr.No from mcleron.

Change-Id: Iaca2268684f83fe8757e64db0b0e047a19755311
ackageParser.java
29e4a3c566f435c32f0b95e4ac8e8b33cac6faba 01-Oct-2009 Dianne Hackborn <hackbod@google.com> Update from API review.

Change-Id: I16b1c566f91167aac9615ac59dd297a154c828ea
egisteredServicesCacheListener.java
a33e3f79259b56b03c7912af35944f34ad190e3c 30-Sep-2009 Dianne Hackborn <hackbod@google.com> Fix issue #2154794: Force close when start facebook application.

I think when we were scanning the updated app in the system image,
from an older version on the data partition, we were not setting
the existing package to have the system flag, so not auto-granting
any new permissions.

This also includes some other cleanup in the package manager to
remove old files in various places, and tighten up logging.

Also similar logging cleanup elsewhere.

Change-Id: I6d113c7cf7e736ab9be512d6d7c94c806a24199a
ackageParser.java
7eca687c2ee8f633678a1cd3ebf0886c0e6bbcf9 29-Sep-2009 Dianne Hackborn <hackbod@google.com> Fix bug where we would return null with disabled components.

Change-Id: I1624a42803f1c4b02736f558a8eeeeba2890667e
ackageParser.java
039c68e75606e837cf021815a0210836724574ad 27-Sep-2009 Dianne Hackborn <hackbod@google.com> The touch screen is probably a feature.

Also extend the feature APIs a bit.

Change-Id: I99e932d7f4e61edb0e20f75c55e9831e4b59a14d
PackageManager.aidl
ackageManager.java
3b3e145d3c41fd68974e08f799b1fd1f8f060cf0 25-Sep-2009 Dianne Hackborn <hackbod@google.com> A variety of work on animations.

- The lock screen now fades in and out.
- Fixed a bug where we would accidentally freeze the screen when switching
to an activity with a different orientation than the current (but
the screen itself is in the current orientation). This would mess up
the animations on the car dock.
- New API to force a particular animation for an activity transition
(untested).
- New wallpaper animations.
- Resources now uses the next API version when in a development build,
to help applications being developed against such builds.

Change-Id: I2d9998f8400967ff09a04d693dc4ce55f0dbef5b
pplicationInfo.java
ffa424800d0338b8b894aef2ea1e3e3344cbda7a 24-Sep-2009 Dianne Hackborn <hackbod@google.com> Fix issue #2133206: dialogs/menus should auto-dismiss when screen turns off

Lot of infrastructure for more things to go away when "clear system dialogs"
happens, and now do this when we turn on the lock screen.

Change-Id: I567130296fe47ce82df065ed58ef21b37416ceaf
ctivityInfo.java
ackageParser.java
3ecd5f437580e49d80beecd29489d5fb1f7a7db0 17-Sep-2009 Fred Quintana <fredq@google.com> - Make the AccountManagerService delete accounts that
have no Authenticator, both when the package is removed
and when the phone is booted.
- add the ability to register with the RegisteredServicesCache
to be notified when the set of Authenticators changes.
egisteredServicesCache.java
egisteredServicesCacheListener.java
93e462b79d6896da10e15e74c5aec6beb098dddf 16-Sep-2009 Dianne Hackborn <hackbod@google.com> Implement issue #1780928: Need support hiding nav keys.

This implements support for devices whose hardware can hide
their navigation keys. It works much like the existing keyboardHidden
configuration, and for compatibility uses the same configuration
change bit.

Also add FLAG_TURN_ON_SCREEN for windows, which has the system
cause the screen to be turned on when the window is displayed.
Great fun when used with FLAG_SHOW_WHEN_LOCKED!

Change-Id: I0b867f19af85cfd8786a14cea194b34f7bdd9b7a
ctivityInfo.java
eb034652c2037a47ebfd99779e8383bb8bb528af 07-Sep-2009 Dianne Hackborn <hackbod@google.com> Implement all of the infrastructure for configuring wallpapers.

Actually being able to configure a wallpaper relies on additional
work in the launcher and wallpapers that will be in another change.
Also note that this breaks all existing wallpapers, since they now
need to include a meta-data item about themselves. This also
will be fixed in another change.

Change-Id: I97d2c2bd07237abc32f92b9147c32530a2f73c71
abeledIntent.java
esolveInfo.java
erviceInfo.java
c42c0dd1c4e2f7a4abaac1b2c9a6344448f9db7a 03-Sep-2009 Jeff Hamilton <jham@android.com> Fix the registration of the package changes broadcast receiver.

Change-Id: Ib0b49153a0ec1af7c5a92753860df0f46064a7df
egisteredServicesCache.java
5e1ab335e6e8fbfa19c64d53880a22f472010953 02-Sep-2009 Christopher Tate <ctate@android.com> Expand apps' control over the settings restore process

Applications can now specify two more aspects of the restore process: whether
they need to run with their own custom Application subclass rather than being
launched in the usual restricted mode during restore, and whether it's okay for
the backup manager to kill the app process once restore has completed. The new
manifest attributes for these are, respectively, android:restoreNeedsApplication
and android:killAfterRestore.

If unspecified in the manifest, restoreNeedsApplication is false, and
killAfterRestore is true.

In order to support kill-after-restore cleanly, this change also adds a new
system-process-only interface to the Activity Manager, which will schedule a
"commit suicide" event on the target app's main thread looper.

The framework backup agents have been given the appropriate new backup
attributes as well.
pplicationInfo.java
ackageParser.java
49237345d83e62fdb9eb8d50b13ad086636a04fa 28-Aug-2009 Dianne Hackborn <hackbod@google.com> Add platform infrastructure for features.

This introduces a new mechanism to define features associated with
a platform, query the current device for the available features,
and enforce that apps requiring features that aren't available can't
be installed.

Also now allows uses-library to specify that a library is optional,
so the lack of such a library will not prevent the app from being
installed (but if it does exist it will be correctly linked into
the app).

Change-Id: I5b369b46cfa0b3d37c9e08fd14ef1098a978e67b
onfigurationInfo.java
eatureInfo.aidl
eatureInfo.java
PackageManager.aidl
ackageInfo.java
ackageManager.java
ackageParser.java
c748541ca0caffbe33c1d4690773d89c06bb3253 27-Aug-2009 Suchi Amalapurapu <asuchitra@google.com> Add a null check in PackageParser
ackageParser.java
4a51c20ce607c74914f90fd897f04080121ac13b 22-Aug-2009 Dianne Hackborn <hackbod@google.com> I am getting tired of the java doc warnings, so fix them.

Change-Id: I2205eebae419eaf4a0992c9f5b7cd807eb843fe1
PackageManager.aidl
roviderInfo.java
25660ec2c8175559d86d50bc2bfdef29589d0813 13-Aug-2009 Joe Onorato <joeo@android.com> Unbreak the sdk build.

I didn't break it, so if this doesn't fix it, somebody else should give
it a shot.
ackageManager.java
766cbfe44be3c5013a6a22bd6cd8ad1055a37256 13-Aug-2009 Dianne Hackborn <hackbod@google.com> Add new API to compare certs of two UIDs.
PackageManager.aidl
ackageManager.java
02f5228c3c224dc8804cbedd40899fa0c42bfd4a 29-Jul-2009 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of f0d83fd9 to master
7f2054392e9957d3ba8579ef08c29cfb27df564e 28-Jul-2009 Dianne Hackborn <hackbod@google.com> Updates from API review.

* AccessibilityService -- document onBind() to not be implemented.
* GestureLibrary.getLearner() -- needs to be hidden.
* IntentSender -- remove protected constructors, document that it is retrieved from a PendingIntent.
* Hide permissions: SHUTDOWN, STOP_APP_SWITCHES.
* Context -- hide BACKUP_SERVICE.
* ContextWrapper -- hide getSharedPrefs bla h blah
* Intent.parseUri() -- fix docs.
* ApplicationInfo.FLAG_TEST_ONLY?!?
* Hide MockContext.getSharedPrefs blah blah
pplicationInfo.java
d4a1d2e14297a3387fdb5761090961e714370492 17-Jul-2009 Fred Quintana <fredq@google.com> add account manager permission checking
egisteredServicesCache.java
c00c04d7d8758a5ade185d465624e47dcf1bd7c0 22-Jul-2009 Dianne Hackborn <hackbod@google.com> am 11b822d2: Simplify density compatibility to a boolean.

Merge commit '11b822d2a91ea17c34c0cb1c11e80a9a30d72864'

* commit '11b822d2a91ea17c34c0cb1c11e80a9a30d72864':
Simplify density compatibility to a boolean.
11b822d2a91ea17c34c0cb1c11e80a9a30d72864 22-Jul-2009 Dianne Hackborn <hackbod@google.com> Simplify density compatibility to a boolean.

Instead of a list, we now just have a single boolean indicating whether an
application is density aware, and this set set to true by default as of
Donut.
pplicationInfo.java
ackageManager.java
ackageParser.java
a8339dfec9d1b2c6d6fd2f8268f8075d184f64c0 22-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> am 9fc20b0e: Merge change 8126 into donut

Merge commit '9fc20b0e381b5fe00b7049ef357c839cd05a33bf'

* commit '9fc20b0e381b5fe00b7049ef357c839cd05a33bf':
First pass at reworking screen density/size APIs.
c4db95c077f826585d20be2f3db4043c53d30cf5 22-Jul-2009 Dianne Hackborn <hackbod@google.com> First pass at reworking screen density/size APIs.

This changes the names of the directories in aapt, to what you see
in the list of DpiTest resources. Also adds a new "long" configuration
for wide screens, which the platform sets appropriate, and introduces
a new kind of resizeability for not large but significantly larger
than normal screens which may have compatibility issues.
pplicationInfo.java
ackageParser.java
fe923cf2d6b5dec2b49370d70689152e0966c40d 21-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> am 2c25fac2: Merge change 8036 into donut

Merge commit '2c25fac23e5daafd62238f4c3dd031e3f4cd76f1'

* commit '2c25fac23e5daafd62238f4c3dd031e3f4cd76f1':
* Disable compatibility mode for all cases.
69fff4a72d4dfc9208db79d773ef3ca23350287e 21-Jul-2009 Mitsuru Oshima <oshima@google.com> * Disable compatibility mode for all cases.
pplicationInfo.java
ackageParser.java
a065b01904d5017232c9b51ccb174412ff57e138 20-Jul-2009 Mitsuru Oshima <oshima@google.com> am 841f13c8: * Reverted the change in PackageParser that I checked by accident * More surface view fix. - correct event translation on surface view. - use compatible window * removed FLAG_NO_COMPATIBILITY_SCALE. It was my misunderstanding of how SurfaceView works,

Merge commit '841f13c8e9ff3f7695b6c18a8abcec3c947983ff'

* commit '841f13c8e9ff3f7695b6c18a8abcec3c947983ff':
* Reverted the change in PackageParser that I checked by accident
841f13c8e9ff3f7695b6c18a8abcec3c947983ff 18-Jul-2009 Mitsuru Oshima <oshima@google.com> * Reverted the change in PackageParser that I checked by accident
* More surface view fix.
- correct event translation on surface view.
- use compatible window
* removed FLAG_NO_COMPATIBILITY_SCALE. It was my misunderstanding of how SurfaceView works, and this was not necessary.
* Added compatibility related info to package dumpsys
ackageParser.java
a62e3e4d0f4d18f4b8d31876e035d3ae57f88f40 13-Jul-2009 Mitsuru Oshima <oshima@google.com> am ba3ba579: * Use cached resources for widgets

Merge commit 'ba3ba57921dedaaef669719c0359c0caf60e008b'

* commit 'ba3ba57921dedaaef669719c0359c0caf60e008b':
* Use cached resources for widgets
ba3ba57921dedaaef669719c0359c0caf60e008b 09-Jul-2009 Mitsuru Oshima <oshima@google.com> * Use cached resources for widgets
ackageParser.java
54a26bc85f4fe972e929e42b986c65a710a229b3 11-Jul-2009 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 889c2d37 to master
854060af30f928c0a65591e9c8314ae17056e6b8 10-Jul-2009 Dianne Hackborn <hackbod@google.com> Fix bug #1873249i: Apps can DoS/brick device

This is the problem where various things are listening for broadcasts
(such as battery status, PIN/PUK/Network) that an application can send
to cause harm to the system.

Solving this is tricky because many of these broadcasts are sticky,
and I have never figured out how to do permissions with sticky
broadcasts in a sane way. So instead, I am going to punt on the
general problem and just brute force it:

There is new a way for system components to declare specific
broadcast actions to be protected, which means that only the system
and the phone can send them. This is good enough for now. None
of it is exposed in the public API so we can make something a little
less stupid in the future if we ever need to.
PackageManager.aidl
ackageParser.java
e3f054411b9f025848f68389c4e2c325e76b3826 09-Jul-2009 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 2af632f8 to master
2af632f87d487deaa5b2eb71341cfc4f0c0d1173 08-Jul-2009 Dianne Hackborn <hackbod@google.com> Add new <path-permission tag for use by global search.

This adds a new <path-permission> tag you can use inside of a <provide>
to define additional path-based permissions that broaden the global
read and write permissions. The initial use for this will be global
search, so that a content provider that is protected by permissions
can make a part of itself available to global search under another
permission. This addresses the issue with global search not being able
to request permissions it would need of providers it doesn't know
about at build time.
ackageParser.java
athPermission.java
roviderInfo.java
c3f60ddaeadb69c1e85198e609e575f55ecc28ac 09-Jul-2009 Mitsuru Oshima <oshima@google.com> am 1ecf5d28: Re-implementation of large screen support using window manager. * added background filler surface to fill the outer rim. Using the same layer as dim surface because they never co-exists (in the same window) * clean up the obsolete code in Compatibilt

Merge commit '1ecf5d28817f0a051e77488380dcd5bc622ea169'

* commit '1ecf5d28817f0a051e77488380dcd5bc622ea169':
Re-implementation of large screen support using window manager.
1ecf5d28817f0a051e77488380dcd5bc622ea169 07-Jul-2009 Mitsuru Oshima <oshima@google.com> Re-implementation of large screen support using window manager.
* added background filler surface to fill the outer rim. Using the same layer as dim surface because
they never co-exists (in the same window)
* clean up the obsolete code in CompatibiltyMode/ViewRoot for support large screen support.
pplicationInfo.java
ackageParser.java
f6ff591decdea6299aab1a5b6f95917800571de4 30-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 72eb0aca: Merge change 5483 into donut

Merge commit '72eb0acad5cffc57ce5006f6deab29ee259e461e'

* commit '72eb0acad5cffc57ce5006f6deab29ee259e461e':
Expand support for different screen sizes.
723738cfaec3dd7b0fe152c872c41bebf94074c4 26-Jun-2009 Dianne Hackborn <hackbod@google.com> Expand support for different screen sizes.

Applications can now declare that they support small, normal, or
large screens. Resource selection can also be done based on these
sizes. By default, pre-Donut apps are false for small and large,
and Donut or later apps are assumed to support all sizes. In either
case they can use <supports-screens> in their manifest to declare
what they actually support.
ctivityInfo.java
pplicationInfo.java
ackageParser.java
c73e9ad55a28f6bec3260e919573e0597fdd23ab 19-Jun-2009 Suchi Amalapurapu <asuchitra@google.com> am bc806f65: Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage.

Merge commit 'bc806f65edc33f6eda0f475ac84e5e037a013a90'

* commit 'bc806f65edc33f6eda0f475ac84e5e037a013a90':
Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage.
bc806f65edc33f6eda0f475ac84e5e037a013a90 18-Jun-2009 Suchi Amalapurapu <asuchitra@google.com> Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage.
PackageManager.aidl
ackageManager.java
8dbbe3b52f815c49be986814743a521f802b4785 19-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 63e7155c: Merge change 4696 into donut

Merge commit '63e7155c7d1d0c3f0027400aa09e9a45f648a80d'

* commit '63e7155c7d1d0c3f0027400aa09e9a45f648a80d':
Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.
5c1e00b14d2ef10ec76abf3e951fa8003a67f558 19-Jun-2009 Dianne Hackborn <hackbod@google.com> Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.

- Fix a bug where targetSdkVersion could not be set if minSdkVersion. Stupid, stupid.
Also make sure to fail if minSdkVersion is for a code name. Really stupid.

- Change the API for resize compatibility mode to be a bit in the flags field, instead
of a separate boolean.

- Implement delayed dexopting, to avoid the looong full dexopt during boot. This is
only enabled for "eng" builds. When in this mode, the activity manager will make
sure that a dexopt has been done before loading an .apk into a process, and will
try to avoid displaying ANRs if they are due to the dexopt causing some operation
to take longer than it normally would (though I make no guarantees about this
totally working).

- Add API to Context to get the ApplicationInfo for its package, for easy access to
things like targetSdkVersion.
pplicationInfo.java
PackageManager.aidl
ackageManager.java
ackageParser.java
abb01dba70fa52b3576fa9f6a175f3840b959fde 18-Jun-2009 Dianne Hackborn <hackbod@google.com> am c14b9ccd: Extend Intent/Uri conversion for use by Browser

Merge commit 'c14b9ccdf13163cae5ce5d21bcf377010b37594b'

* commit 'c14b9ccdf13163cae5ce5d21bcf377010b37594b':
Extend Intent/Uri conversion for use by Browser
c14b9ccdf13163cae5ce5d21bcf377010b37594b 18-Jun-2009 Dianne Hackborn <hackbod@google.com> Extend Intent/Uri conversion for use by Browser

This introduces a new Uri form of Intent with an "intent:" scheme, and a
corresponding update to the parser to handle these, so that the browser
can use this generic facility for starting activities based on the links
that are clicked and allow for web pages to link to arbitrary intents.

There is also a new "package" field on Intent which allows you to limit
the components it finds to a given package. This replaces the new method
that was added to PackageManger for doing this when resolving activities,
and implements it for all Intent queries against the package manager.
PackageManager.aidl
ackageManager.java
e1fae30e20b1515eeb036a7c103e1e70de130bdd 18-Jun-2009 Suchi Amalapurapu <asuchitra@google.com> Merge commit '0781df94' into manualmerge

Conflicts:
Android.mk
api/current.xml
1ccac75e1f1b97eccb916a8de04fc1012b30f6e5 12-Jun-2009 Suchi Amalapurapu <asuchitra@google.com> Remove circular dependency in PackageManager. api freeStorage uses PendingIntent from android.app
Create a new public IntentSender class that can be used by PackageManager instead.
This new class uses IIntentSender internally and can only be created by PendingIntent for now.
Provide a new getIntentSender api in PendingIntent to create an instance of this class.
Move IIntentSender and IIntentReceiver from android.app to android.content
Change imports of IIntentSender and IIntentReceiver to reflect the new package name
The PackageManager api has been named as freeStorageWithIntent and will be renamed as freeStorage
once the older api(which has been deprecated) will be removed shortly.
PackageManager.aidl
ackageManager.java
9788976b1465ce982b5ae7c741345edd0ecd9322 15-Jun-2009 Fred Quintana <fredq@google.com> add icon and label to the authenticator description
egisteredServicesCache.java
bd6b11dd582d7c7dde64e355f967f5ed77a9870d 11-Jun-2009 Mitsuru Oshima <oshima@google.com> am e5fb3288: resolution support fix/improvement * adding compatibility menu * backup gravity * set expanable=true if the screen size is hvga * density. * added "supports any density" mode. I\'ll add sdk check later. * disallow to catch orientation c

Merge commit 'e5fb328825995aa33b5b7ecf8b5bee2b17f81715'

* commit 'e5fb328825995aa33b5b7ecf8b5bee2b17f81715':
resolution support fix/improvement
e5fb328825995aa33b5b7ecf8b5bee2b17f81715 10-Jun-2009 Mitsuru Oshima <oshima@google.com> resolution support fix/improvement
* adding compatibility menu
* backup gravity
* set expanable=true if the screen size is hvga * density.
* added "supports any density" mode. I'll add sdk check later.
* disallow to catch orientation change event if the app is not expandable. This
was causing layout problem under non-expandable mode. I discussed this with Mike C
and we agreed to do this approach for now. We'll revisit if this causes problem to
a lot of applications.
pplicationInfo.java
76ff31b201da1e4b0b9cfe21bf5a877cc9d645fe 06-Jun-2009 Suchi Amalapurapu <asuchitra@google.com> am d299b819: Add a new attribute to android manifest for defining the GLES version number. This attribute is parsed by the PackageParser into ConfigurationInfo. The major and minor version numbers are defined as the higher and lower order bits.

Merge commit 'd299b8194dde8c4875e5f032918ab35ebad8b1f1'

* commit 'd299b8194dde8c4875e5f032918ab35ebad8b1f1':
Add a new attribute to android manifest for defining the GLES version number.
d299b8194dde8c4875e5f032918ab35ebad8b1f1 05-Jun-2009 Suchi Amalapurapu <asuchitra@google.com> Add a new attribute to android manifest for defining the GLES version number.
This attribute is parsed by the PackageParser into ConfigurationInfo. The major
and minor version numbers are defined as the higher and lower order bits.
onfigurationInfo.java
ackageParser.java
342d59d3197caa1cd1de7a600c6e0ba4a59883f4 04-Jun-2009 Mitsuru Oshima <oshima@google.com> am 9189cabb: * Moved supports-density tag under manifest * Refactored Compatibility code * Added CompatibilityInfo class * Removed getApplicationScale from Context * Added Resources#getCompatibilityInfo so that RootView can get the compatibility info w/o going through Context * Expandable support * Added expandable tag under manifest * Old application w/o expandable is given the default screen size ([320, 480] x density). * The non-expandable window is centered.

Merge commit '9189cabb0b6c6c28232fe6f412b7ba7a37352a6a'

* commit '9189cabb0b6c6c28232fe6f412b7ba7a37352a6a':
* Moved supports-density tag under manifest
9189cabb0b6c6c28232fe6f412b7ba7a37352a6a 03-Jun-2009 Mitsuru Oshima <oshima@google.com> * Moved supports-density tag under manifest
* Refactored Compatibility code
* Added CompatibilityInfo class
* Removed getApplicationScale from Context
* Added Resources#getCompatibilityInfo so that RootView can get the compatibility info w/o going through Context
* Expandable support
* Added expandable tag under manifest
* Old application w/o expandable is given the default screen size ([320, 480] x density).
* The non-expandable window is centered.
pplicationInfo.java
ackageManager.java
ackageParser.java
ae8c5b868fa518306b50e08da9e5258ad075fa61 03-Jun-2009 Satish Sampath <satish@android.com> am 8dbe612d: Adding internal method replacePreferredActivity.

Merge commit '8dbe612dc60526d635e57257b58627b33a099678'

* commit '8dbe612dc60526d635e57257b58627b33a099678':
Adding internal method replacePreferredActivity.
8dbe612dc60526d635e57257b58627b33a099678 03-Jun-2009 Satish Sampath <satish@android.com> Adding internal method replacePreferredActivity.

This was required because we need a way to set the preferred activity for a
particular intent filter based on user selection (in our case the
ACTION_WEB_SEARCH intent filter for selecting the preferred search engine from
the list of available search engines providers). The current
addPreferredActivity call was not sufficient since it leaves the existing
preferred activities in the list and does not remove them, which this call
does.
PackageManager.aidl
ackageManager.java
7c49790cde0acb494b6e8980662842c95dd8859a 01-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 162c9d0e: Merge change 2805 into donut

Merge commit '162c9d0e90eaa71adc8c7d1456d1a9a95e638c47'

* commit '162c9d0e90eaa71adc8c7d1456d1a9a95e638c47':
base: Rename WRITE_SDCARD -> WRITE_EXTERNAL_STORAGE
5a3a77dabd744d5be79d7745c2a977c108a9ad98 01-Jun-2009 San Mehat <san@google.com> base: Rename WRITE_SDCARD -> WRITE_EXTERNAL_STORAGE

Signed-off-by: San Mehat <san@google.com>
ackageParser.java
ad6042aa2342d0a869f84772774b47ae87346ccf 01-Jun-2009 Christopher Tate <ctate@google.com> am 181fafaf: Retool the backup process to use a new \'BackupAgent\' class

Merge commit '181fafaf48208978b8ba2022683ffa78aaeddde1'

* commit '181fafaf48208978b8ba2022683ffa78aaeddde1':
Retool the backup process to use a new 'BackupAgent' class
181fafaf48208978b8ba2022683ffa78aaeddde1 14-May-2009 Christopher Tate <ctate@google.com> Retool the backup process to use a new 'BackupAgent' class

Backups will be handled by launching the application in a special
mode under which no activities or services will be started, only
the BackupAgent subclass named in the app's android:backupAgent
manifest property. This takes the place of the BackupService class
used earlier during development.

In the cases of *full* backup or restore, an application that does
not supply its own BackupAgent will be launched in a restricted
manner; in particular, it will be using the default Application
class rather than any manifest-declared one. This ensures that the
app is not running any code that may try to manipulate its data
while the backup system reads/writes its data set.
pplicationInfo.java
ackageParser.java
8e19b7c0e4c578703a1df0f8346b22b9e7c8a0f7 29-May-2009 Android (Google) Code Review <android-gerrit@google.com> am a3d28bd5: Merge change 520 into donut

Merge commit 'a3d28bd5c278f750c70f2b87fce23df221cd4a01'

* commit 'a3d28bd5c278f750c70f2b87fce23df221cd4a01':
Enforce permissions for PhoneStateListener events.
45515659438964ec47f4feac247f0e9dce587c86 24-Apr-2009 Jaikumar Ganesh <jaikumar@google.com> Enforce permissions for PhoneStateListener events.

PhoneStateListener events like LISTEN_CALL_STATE_CHANGED,
have privacy information like phone numbers and hence,
need to be protected with a permission. The permission
READ_PHONE_STATE is used for this purpose. Use the permission
trick to ensure backward compatability.
ackageParser.java
385bb79ebb436e5672915eac2fc1a4fcdedf88b6 23-May-2009 Dianne Hackborn <hackbod@google.com> am b181118b: Define TARGET_CPU_ABI for finding native code in .apks

Merge commit 'b181118b6e58c0014da4e9d52bf38548adc73a8a'

* commit 'b181118b6e58c0014da4e9d52bf38548adc73a8a':
Define TARGET_CPU_ABI for finding native code in .apks
b181118b6e58c0014da4e9d52bf38548adc73a8a 22-May-2009 Dianne Hackborn <hackbod@google.com> Define TARGET_CPU_ABI for finding native code in .apks
ackageManager.java
62da8461ed5317fe78ae5e3793662694e7fc99a3 14-May-2009 Dianne Hackborn <hackbod@google.com> Implement compatibility support for WRITE_SDCARD permission.

Now old applications will automatically be granted it. Also renamed it from
SDCARD_WRITE to WRITE_SDCARD to be consistent with our other permissions,
and re-arranged how we do targetSdkVersion to actually be usuable for this
kind of stuff.

Note that right now this results in basically all apps being given the
WRITE_SDCARD permission, because their targetSdkVersion is not set. I will
be dealing with that in a future change.
pplicationInfo.java
ackageParser.java
a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3d 14-May-2009 Dianne Hackborn <hackbod@google.com> Implement compatibility support for WRITE_SDCARD permission.

Now old applications will automatically be granted it. Also renamed it from
SDCARD_WRITE to WRITE_SDCARD to be consistent with our other permissions,
and re-arranged how we do targetSdkVersion to actually be usuable for this
kind of stuff.

Note that right now this results in basically all apps being given the
WRITE_SDCARD permission, because their targetSdkVersion is not set. I will
be dealing with that in a future change.
pplicationInfo.java
ackageParser.java
dd6face5a66ed6c9ac24b2754ec046b82881182c 15-May-2009 Mihai Preda <preda@google.com> am eae850ce: Allow intent resolution to be constrained by package name.

Merge commit 'eae850cefe7e149f396c9e8ca1f34ec02b20a3f0'

* commit 'eae850cefe7e149f396c9e8ca1f34ec02b20a3f0':
Allow intent resolution to be constrained by package name.
eae850cefe7e149f396c9e8ca1f34ec02b20a3f0 13-May-2009 Mihai Preda <preda@google.com> Allow intent resolution to be constrained by package name.
PackageManager.aidl
ackageManager.java
a086a973ddc2e1986116a54c284b3e2c71bff297 13-May-2009 Dianne Hackborn <hackbod@google.com> am e7fe35b: Whoops fix installing. I am dumb.

Merge commit 'e7fe35b88aa77766d322b8a683995a2bdae6210d'

* commit 'e7fe35b88aa77766d322b8a683995a2bdae6210d':
Whoops fix installing. I am dumb.
e7fe35b88aa77766d322b8a683995a2bdae6210d 13-May-2009 Dianne Hackborn <hackbod@google.com> Whoops fix installing. I am dumb.
ackageParser.java
d2b4929ba00939c1aa5037927f27427637cc2f68 13-May-2009 Dianne Hackborn <hackbod@google.com> am ade3eca: Implement issue #1783881 (manifest option for adb-install-on

Merge commit 'ade3ecad94d1f4431576f53bae26c35efbf7a2c9'

* commit 'ade3ecad94d1f4431576f53bae26c35efbf7a2c9':
Implement issue #1783881 (manifest option for adb-install-only apps)
ade3ecad94d1f4431576f53bae26c35efbf7a2c9 12-May-2009 Dianne Hackborn <hackbod@google.com> Implement issue #1783881 (manifest option for adb-install-only apps)

You can now use android:testOnly="true" to not allow your .apk to be installed
as a normal app. The only way to do so is with the pm command and giving the
-t option, which sets a new INSTALL_ALLOW_TEST flag when installing.

I also used this to clean up the install API... actually, mostly to hide
it, since it is not accessible to apps so shouldn't be in the SDK. We
will be doing some more work on it, so this will prevent adding yet
another backwards-compatibility-for-no-reason version.
pplicationInfo.java
PackageInstallObserver.aidl
ackageManager.java
ackageParser.java
c64322c35212e919906ffd66118c7d5d3ad36636 28-Apr-2009 Jacek Surazski <jaceks@google.com> PackageManager keeps track of who installed what.

Stores the package name of the installer app in packages.xml
PackageManager.aidl
ackageManager.java
65e13171e12cb9e9fc2f608d0c8a92cd3c098648 28-Apr-2009 Jacek Surazski <jaceks@google.com> PackageManager keeps track of who installed what.

Stores the package name of the installer app in packages.xml
PackageManager.aidl
ackageManager.java
d01547761a8ec4bd1bcc4799a537b6fdcd9d24bc 11-May-2009 Dianne Hackborn <hackbod@google.com> am 1655be4: Fix issue #1837610 and #1753079

Merge commit '1655be46d2b7d45f071a6a1411ac8bd41c749c21'

* commit '1655be46d2b7d45f071a6a1411ac8bd41c749c21':
Fix issue #1837610 and #1753079
1655be46d2b7d45f071a6a1411ac8bd41c749c21 08-May-2009 Dianne Hackborn <hackbod@google.com> Fix issue #1837610 and #1753079

Issue 1837610 Adding a Widget before Running the Associated App Causes a Force Close

We were not retrieving the shared libraries of an application when deliving a
broadcast to an explicit component.

Issue 1753079 loading class path of instrumented app into instrumentation may load wrong path when instrumented app shares process with other apps:

We were using the ApplicationInfo that was used to originally create the process, not the one that the
instrumentation is against.
ackageManager.java
849e89c94d206d9723fd5635ed6e7a69814849e3 09-May-2009 Dianne Hackborn <hackbod@google.com> am 851a541: Implement targetSdkVersion and maxSdkVersion, plus version c

Merge commit '851a54143c15a1c33361efae2db3f7f45059b472'

* commit '851a54143c15a1c33361efae2db3f7f45059b472':
Implement targetSdkVersion and maxSdkVersion, plus version code names.
851a54143c15a1c33361efae2db3f7f45059b472 08-May-2009 Dianne Hackborn <hackbod@google.com> Implement targetSdkVersion and maxSdkVersion, plus version code names.

This adds new attributes for specifying a targetSdkVersion and maxSdkVersion.
There is a new ApplicationInfo flag that is set if the application has set
its targetSdkVersion to the current platform or later. Also you can now
use a string for minSdkVersion and targetSdkVerion, to indicate you are
building against a development tree instead of an official platform.
pplicationInfo.java
ackageManager.java
ackageParser.java
718d8a2d7ff3e864a73879eb646f46c14ab74d07 30-Apr-2009 Fred Quintana <fredq@google.com> decouple SyncAdapter from ContentProvider
PackageManager.aidl
roviderInfo.java
egisteredServicesCache.java
257eef353dfc9519b63e3fe2616505c5534b460a 27-Apr-2009 Mitsuru Oshima <> Merge branch 'readonly-p4-donut' into donut
8d112675879a2b83197d3b4ae4fb623abd1a1ec3 27-Apr-2009 Mitsuru Oshima <> AI 147845: Compatibility mode support. Part 1
Adding supports-density tag to manifest file/ApplicationInfo.
BUG=1752478

Automated import of CL 147845
pplicationInfo.java
ackageManager.java
ackageParser.java
1d442e0d990b581357f33f5463c7c5cb49b551e8 21-Apr-2009 Dianne Hackborn <hackbod@google.com> More optimization of dumpsys output.

There are three major classes of changes here:

- Avoid writing lines where their values are often empty, false, or some other typical thing.
- Use partial writes to the PrintWriter to avoid creating temporary strings.
- Use StringBuilder where we need to generate real String objects (and where possible cache the result).
ackageParser.java
105925376f8d0f6b318c9938c7b83ef7fef094da 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
ackageManager.java
b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54 09-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137197
ackageParser.java
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ctivityInfo.aidl
ctivityInfo.java
pplicationInfo.aidl
pplicationInfo.java
omponentInfo.java
onfigurationInfo.java
PackageDataObserver.aidl
PackageDeleteObserver.aidl
PackageInstallObserver.aidl
PackageManager.aidl
PackageStatsObserver.aidl
nstrumentationInfo.aidl
nstrumentationInfo.java
ackageInfo.aidl
ackageInfo.java
ackageItemInfo.java
ackageManager.java
ackageParser.java
ackageStats.aidl
ackageStats.java
ermissionGroupInfo.aidl
ermissionGroupInfo.java
ermissionInfo.aidl
ermissionInfo.java
roviderInfo.aidl
roviderInfo.java
esolveInfo.aidl
esolveInfo.java
erviceInfo.aidl
erviceInfo.java
ignature.aidl
ignature.java
ackage.html
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ctivityInfo.aidl
ctivityInfo.java
pplicationInfo.aidl
pplicationInfo.java
omponentInfo.java
onfigurationInfo.java
PackageDataObserver.aidl
PackageDeleteObserver.aidl
PackageInstallObserver.aidl
PackageManager.aidl
PackageStatsObserver.aidl
nstrumentationInfo.aidl
nstrumentationInfo.java
ackageInfo.aidl
ackageInfo.java
ackageItemInfo.java
ackageManager.java
ackageParser.java
ackageStats.aidl
ackageStats.java
ermissionGroupInfo.aidl
ermissionGroupInfo.java
ermissionInfo.aidl
ermissionInfo.java
roviderInfo.aidl
roviderInfo.java
esolveInfo.aidl
esolveInfo.java
erviceInfo.aidl
erviceInfo.java
ignature.aidl
ignature.java
ackage.html
076357b8567458d4b6dfdcf839ef751634cd2bfb 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
ackageManager.java
3dec7d563a2f3e1eb967ce2054a00b6620e3558c 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
ackageManager.java
3001a035439d8134a7d70d796376d1dfbff3cdcd 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
ackageInfo.java
ackageParser.java
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
onfigurationInfo.java
PackageManager.aidl
ackageManager.java
f1e484acb594a726fb57ad0ae4cfe902c7f35858 22-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127436
PackageManager.aidl
ackageManager.java
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
ctivityInfo.java
pplicationInfo.java
onfigurationInfo.java
PackageManager.aidl
nstrumentationInfo.java
ackageInfo.java
ackageItemInfo.java
ackageManager.java
ackageParser.java
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
ctivityInfo.aidl
ctivityInfo.java
pplicationInfo.aidl
pplicationInfo.java
omponentInfo.java
PackageDataObserver.aidl
PackageDeleteObserver.aidl
PackageInstallObserver.aidl
PackageManager.aidl
PackageStatsObserver.aidl
nstrumentationInfo.aidl
nstrumentationInfo.java
ackageInfo.aidl
ackageInfo.java
ackageItemInfo.java
ackageManager.java
ackageParser.java
ackageStats.aidl
ackageStats.java
ermissionGroupInfo.aidl
ermissionGroupInfo.java
ermissionInfo.aidl
ermissionInfo.java
roviderInfo.aidl
roviderInfo.java
esolveInfo.aidl
esolveInfo.java
erviceInfo.aidl
erviceInfo.java
ignature.aidl
ignature.java
ackage.html