Commit Graph

504 Commits

Author SHA1 Message Date
Christopher Tate
bcc0bd4cd7 am 9dcfcc84: am 19427156: Merge "Don\'t crash when preferred activity settings are malformed" into klp-dev
* commit '9dcfcc845d5fdbedbbb41e0d22dd3e16a6a53fe5':
  Don't crash when preferred activity settings are malformed
2013-10-30 12:22:31 -07:00
Christopher Tate
e202cad1ab Don't crash when preferred activity settings are malformed
We also now ignore attempts to set preferred resolutions with
intent filters for which no actions are defined.

Bug 11392870

Change-Id: If0d0b37bf01b59463985441edfc2bddd070bfc2a
2013-10-29 17:42:26 -07:00
Erin Dahlgren
b970589321 am 204b1e28: am fe470c37: Merge "Have the package manager write mimetype of preferred activities to xml." into klp-dev
* commit '204b1e2817f3abb7946d9254cca666d2da1e4f7c':
  Have the package manager write mimetype of preferred activities to xml.
2013-10-24 16:25:59 -07:00
Erin Dahlgren
fe470c37de Merge "Have the package manager write mimetype of preferred activities to xml." into klp-dev 2013-10-24 23:21:16 +00:00
Erin Dahlgren
707a59dc9a Have the package manager write mimetype of preferred activities to xml.
Issue: 11372979
Change-Id: I5ea4e94c978845426e2650946d0bba076d161c19
2013-10-24 15:13:39 -07:00
Christopher Tate
a8eb5071d2 am 525322ec: am f9f740da: Merge "Support different watchdog timeouts for different entities" into klp-dev
* commit '525322ecbab1502586d378e7065edc402abc63bf':
  Support different watchdog timeouts for different entities
2013-10-24 13:58:07 -07:00
Christopher Tate
e6f81cf1f6 Support different watchdog timeouts for different entities
We need to be able to perform very lengthy operations on some threads
(e.g. the I/O thread responsible for installing multi-gigabyte APKs) but
still have long-run deadlock/hang detection applied to those threads.
Previously the watchdog mechanism applied the same policy to all
monitored threads: unresponsive after 60 seconds => restart the system.

Now, each monitored entity can have its own independent timeout after
which the watchdog declares deadlock and restarts the runtime.  The
halfway-finished intermediate thread stacks are dumped based on the
specific entity's declared timeout, not the global 30 second checking
interval.

With that new mechanism in place, the Package Manager's lengthy-I/O
thread watchdog timeout is raised to 10 minutes.

Bug 11278188

Change-Id: I512599260009c31416b2385f778681e5b9597f05
2013-10-24 10:46:28 -07:00
Christopher Tate
037fa2489f am d34e1155: am 5f474fcb: Merge "Edge case: overriden system package moved & became privileged in OTA" into klp-dev
* commit 'd34e1155226e8885d51c05209c7c87503528a2db':
  Edge case: overriden system package moved & became privileged in OTA
2013-10-22 16:45:51 -07:00
Christopher Tate
9f08820025 Edge case: overriden system package moved & became privileged in OTA
Because properly continuing permission grants post-OTA has changed
policy to include privilege considerations based on install location,
make sure that we re-evaluate when we determine that the apk has
moved from its pre-OTA location.

Bug 11271490

Change-Id: I6c09986e2851a67504268b289932588457c05dfc
2013-10-22 15:36:01 -07:00
Christopher Tate
fd6f5ca64a am 595c48e4: am d570dae5: Merge "Fix priv-app edge case across OTAs" into klp-dev
* commit '595c48e43d8f40baaa8e281959300e582d765f56':
  Fix priv-app edge case across OTAs
2013-10-21 11:36:32 -07:00
Christopher Tate
628946a6ef Fix priv-app edge case across OTAs
In this case:

   1. Privileged system app FOO is overlain by an installed update,
   2. FOO was replaced during an OTA,
   3. The new in-system FOO introduced new privileged permission requests
      that had not been requested by the original FOO,
   4. the update version of FOO still had a higher version code than
      the new FOO on the system disk, and
   5. the update version of FOO had been requesting these same (newly-
      added-to-system-apk) permissions all along;

then the newly-added privileged permission requests were incorrectly being
refused.  FOO should be able to use any privileged permission used by the
APK sited on the system disk; but instead, it was only being granted the
permissions used by the *original* version of FOO, even though the system
FOO now attempted to use them.

Still with me?

The fix is to (a) properly track privileged-install state when processing
known-to-be-hidden system packages, and (b) to tie the semantics of the
permission grant more explicitly to that evaluated state, rather than
using the prior (rather fragile) fixed-up privilege calculation applied
to the overlain apk's parse records.

Bug 11271490

Change-Id: Id8a45d667e52f3b5d18109e3620d5865f85bb9c9
2013-10-18 18:11:05 -07:00
Dianne Hackborn
9aded5abd6 am 827c5af0: am e49a107a: Merge "Fix issue #11223335: APR: Lots of failures in procstats due to..." into klp-dev
* commit '827c5af02de29424ea80f1ccfe525e681d0b74f0':
  Fix issue #11223335: APR: Lots of failures in procstats due to...
2013-10-14 19:01:55 -07:00
Dianne Hackborn
878deb3c7b Fix issue #11223335: APR: Lots of failures in procstats due to...
...bad cleanup of crashing processes

We now have a special path for crashing processes, to silently
clean up their state.

Also some tweaks to Log/Slog.wtf to get better stack crawl
summaries in APR.

Change-Id: Ieced26989907a6e7615b6fa033813fced78d7474
2013-10-14 17:15:40 -07:00
Jeff Sharkey
9d1383c61c am 5e02e0a9: am bcc77b50: Merge "Add <intent-filter> support to <provider>." into klp-dev
* commit '5e02e0a9e1e075e3d451d929b0a67bf280c432ed':
  Add <intent-filter> support to <provider>.
2013-10-07 15:12:16 -07:00
Jeff Sharkey
bcc77b502b Merge "Add <intent-filter> support to <provider>." into klp-dev 2013-10-07 21:41:45 +00:00
Jeff Sharkey
85f5f81320 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
2013-10-07 14:19:13 -07:00
Christopher Tate
12c0b66fce am a5c43674: am eb09f990: Merge "Make sure to maintain privilege when downgrading bundled apps" into klp-dev
* commit 'a5c436743c2d0343550d13f16ae557d4ea6101e1':
  Make sure to maintain privilege when downgrading bundled apps
2013-10-06 18:19:01 -07:00
Christopher Tate
2aa931380b am e67ebcbc: am 4b4ad011: Merge "Notify that ASEC containers are being unmounted during upgrades" into klp-dev
* commit 'e67ebcbc0c5f03434aa756449f0cea6ecb1fde5b':
  Notify that ASEC containers are being unmounted during upgrades
2013-10-06 18:18:44 -07:00
Christopher Tate
eb09f99038 Merge "Make sure to maintain privilege when downgrading bundled apps" into klp-dev 2013-10-06 21:26:19 +00:00
Christopher Tate
0fe85a9492 Make sure to maintain privilege when downgrading bundled apps
When reparsing because the data-volume update has been removed, be sure
to apply privilege when the bundled fallback APK should be allowed it.

Bug 10958159

Change-Id: Ibad52a5644606b27f4ebc5d5d7c1a671283b0752
2013-10-06 10:18:06 -07:00
Christopher Tate
d159674890 Notify that ASEC containers are being unmounted during upgrades
When an apk is installed on ordinary unmountable media, a broadcast
is sent when the OS wants to unmount it so that interested parties
can cleanly close any files they have open to read that apk's
resources or similar.  We now send that broadcast when we are
about to unmount the ASEC fs container that holds a forward-locked
apk as well, so that e.g. Home knows to release the resources that
it was using for widget hosting or similar.

Bug 7703848

Change-Id: I71aefdb4086c7b73a128f89c15d192a2b92d09a8
2013-10-04 18:05:39 -07:00
Dianne Hackborn
1d536848af am 239dc099: am 164371fb: Fix issue #11005453: [SUW] G+ profile creation for new user broken
* commit '239dc099a0d56eba3c7a537df23ef3c5046b2667':
  Fix issue #11005453: [SUW] G+ profile creation for new user broken
2013-10-02 09:37:26 -07:00
Dianne Hackborn
164371fb75 Fix issue #11005453: [SUW] G+ profile creation for new user broken
The main problem here was a mistake when turning a single process
structure to a multi-package-process structure with a common
process.  When we cloned the original process state, if there were
any services already created for the process for that package, they
would be left with their process pointer still referencing the
original now common process instead of the package-specific process,
allowing the active counts to get bad.  Now we switch any of those
processes over to the new package-specific process.

There was also another smaller issue with how ServiceRecord is
associated with a ServiceState -- we could be waiting for an
old ServiceRecord to be destroyed while at the same time creating
a new ServiceRecord for that same service class.  These would share
the same ServiceState, so when the old record finally finished
destroying itself it would trample over whatever the new service
is doing.

This is fixed by changing the model to instead of using an "active"
reference count, we have an object identifying the current owner
of the ServiceState.  Then when the old ServiceRecord is cleaning
up, we know if it is still the owner at that point.

Also some other small things along the way -- new Log.wtfStack()
method that is convenient, new suite of Slog.wtf methods, fixed
some services to use Slog.wtf when catching exceptions being
returned to the caller so that we actually know about them.

Change-Id: I75674ce38050b6423fd3c6f43d1be172b470741f
2013-10-01 20:51:12 -07:00
Amith Yamasani
946395ec7f am d2534f8c: Merge "Don\'t remove restrictions files that are valid" into klp-dev
* commit 'd2534f8c05ccdf692f1e265ae719b67290d15050':
  Don't remove restrictions files that are valid
2013-09-26 14:04:21 -07:00
Amith Yamasani
d2534f8c05 Merge "Don't remove restrictions files that are valid" into klp-dev 2013-09-26 21:02:10 +00:00
Amith Yamasani
fc95e70abd Don't remove restrictions files that are valid
This fixes a bug in parsing the package name from a file name. The suffix
was not taken into account, resulting in all restrictions files being
removed on switching to a user.

Bug: 10947554
Change-Id: I62725bbbdc0e15609872de3896130d4acbc35386
2013-09-26 13:20:17 -07:00
Dianne Hackborn
9b7d148466 am 5f86b90b: Merge "Fix issue #10848916: "Always" button is not working." into klp-dev
* commit '5f86b90b8a224e21db89bacf78d4bd4d3f44342d':
  Fix issue #10848916: "Always" button is not working.
2013-09-24 14:49:17 -07:00
Dianne Hackborn
6d8dfbd814 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
2013-09-24 14:16:38 -07:00
Dianne Hackborn
dc655c0e07 am 4bf0fcef: Merge "Work on issue #10759595: preferred tag doesn\'t prevent..." into klp-dev
* commit '4bf0fcef9296b53114e86490d79956986f8b93a6':
  Work on issue #10759595: preferred tag doesn't prevent...
2013-09-23 18:59:13 -07:00
Dianne Hackborn
38ba6e9ee3 Work on issue #10759595: preferred tag doesn't prevent...
...activity chooser from being shown

Add more useful output when intent filter debugging is enabled.

Change-Id: I3722b03ed625046398e81233cf7fb6aa5ded5eca
2013-09-23 11:08:52 -07:00
Dianne Hackborn
ff7f43eb08 am bb6fd7ff: Merge "Shut. Up." into klp-dev
* commit 'bb6fd7ff8cec893999b26e39dc62f1b4b4b9a8ea':
  Shut.  Up.
2013-09-20 18:29:16 -07:00
Dianne Hackborn
c30d92e224 Shut. Up.
Change-Id: Id047ab2308903a527bebf80bdacdb01ec51de051
2013-09-20 18:19:00 -07:00
Nick Kralevich
ac219aa5a3 am 662b3bbe: am effefbc4: Merge "Proper security labeling of multi-user data directories."
* commit '662b3bbe08c03de77c0676b4fdc1587723863f1b':
  Proper security labeling of multi-user data directories.
2013-09-20 12:51:47 -07:00
Christopher Tate
9c5cc571e5 Merge "Support for "not the home app you're looking for" metadata" into klp-dev 2013-09-19 19:46:20 +00:00
Christopher Tate
bd413f6c05 Support for "not the home app you're looking for" metadata
* Make sure that pm.getHomeActivities() returns the activity metadata
  as well, so that the caller can trace the reference

* Add a public canonical name for that metadata key

Bug 10749961

Change-Id: Ic4d0750d61001ffe5af180398f042afa30eea1ce
2013-09-19 12:31:49 -07:00
Robert Craig
8643dc6b70 Proper security labeling of multi-user data directories.
This patch covers 2 cases. When an app is installed
and the resulting data directory is created for all
existing users. And when a new user is created and
all existing app data directories are created for
the new user.

Change-Id: Iaba7c40645bc7b6cc823d613da0c3782acf6ddd5
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2013-09-18 13:21:24 +00:00
Christopher Tate
06dc8484b4 Fix handling of privileged permissions on update
When a bundled app is upgraded, only reprocess ungranted 'system'
permissions if the bundled apk is privileged.

Also adds the 'privileged' flag to the dumpsys flag summary.

Bug 10503183

Change-Id: Ic6560fc904e5970fc871a155c898744a6607f851
2013-09-15 17:51:04 -07:00
Christopher Tate
86b391cd03 Prune shared users that the system declares but does not use
Bug 10184643

Change-Id: I72c5177c621c24fac34bf8744eb6c5108b6d3464
2013-09-13 16:58:36 -07:00
Christopher Tate
a2a0850de8 Add hidden API for querying available 'home' activities
To support improved home-app selection UX in Settings.

Bug 9958444

Change-Id: I106090784618bf7bea6fce28f4f9b9fb8480d310
2013-09-13 12:16:00 -07:00
Jeff Sharkey
cc8f710a50 Include system packages in packages.list.
This provides group membership to the FUSE daemon, since system
packages like NFC and Bluetooth hold sdcard_rw.

Bug: 10610659
Change-Id: I7428e999cfa4087ffe220b9d8bd80827191ab997
2013-09-10 16:57:24 -07:00
Amith Yamasani
d304af6989 Remove unused APIs and rename others based on API review
Restrictions challenge is only to be used by device admins.

Bug: 10461761
Change-Id: I3db1249e2ce99f386602de59ed930302bb0a97fb
2013-09-05 09:30:23 -07:00
Jeff Sharkey
5dea7d554a Skip packages with missing metadata.
Otherwise this would result in NPE, and packages.list would never
be updated.

Bug: 10577538
Change-Id: I35a4407dbc283ab20a4c45a2ea1a14b04044c98c
2013-09-03 12:01:20 -07:00
Amith Yamasani
79a45c6f18 Merge "Improve Intent disambig dialog behavior" into klp-dev 2013-08-29 21:45:04 +00:00
Geoffrey Borggaard
15b8b2c068 UserManagerService upgrades users on first restart.
This causes all restriction pins to be reset.

Bug: 10535070
Change-Id: Ia2abf904505514d7e555b420c2b032a0094e0643
2013-08-29 13:07:49 -04:00
Amith Yamasani
e9ecc8b499 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
2013-08-27 18:05:00 -07:00
Jose Lima
bb9682e120 Allow replacing ResolverActivity via config value
Changed PackageManager to read a config value that indicates if
the default ResolverActivity should be replaced by a custom version.
This config value can be replaced via an overlay.

Bug: 10081151
Change-Id: I6f1c59d053b89fabf52bcda620eb5d4026406701
2013-08-20 10:46:14 -07:00
Jeff Sharkey
02e4d16ed9 Add GIDs to packages.list, update SD card perms.
Write supplementary GIDs to packages.list for lower-level system
components to parse.

WRITE_EXTERNAL_STORAGE also implies sdcard_r GID. Switch to always
enforce READ_EXTERNAL_STORAGE permission. Update permission docs to
mention new behavior.

Change-Id: I316ba4b21beebb387ac05c80980ae9b38235b37d
2013-08-12 20:31:36 -07:00
Jeff Sharkey
6e14b22cfe Merge "APIs for multiple external storage devices." into klp-dev 2013-08-12 00:13:35 +00:00
Jeff Sharkey
1abdb71230 APIs for multiple external storage devices.
Provide developer APIs to discover application-specific paths on
secondary external storage devices.  Covers files, cache, and OBB
directories.  Apps will not have write access outside their package-
specific directories on secondary devices, so only primary storage is
exposed through Environment.

Creation of .nomedia files will be handled by FUSE daemon in future
change.

Change-Id: Ifcce6201a686d80269d7285adb597c008cf8fa7c
2013-08-11 17:07:44 -07:00
Jeff Sharkey
184a0100ab Allow packages.list access with new GID.
The FUSE daemon is using packages.list to map from package name to
appId after it drops permissions, so create a new "package_info" GID
to grant read access.

Also switches FileUtils to use Libcore.os.

Change-Id: I9451ca4e90e8a985526805c6df0888a244a1db36
2013-08-08 17:38:13 -07:00