Commit Graph

2869 Commits

Author SHA1 Message Date
Makoto Onuki
e7927da1b6 Don't call DPM from UserManager to avoid lock inversion
- Also make sure DPMS.mOwners is always guarded with DPMS.this.
(and remove synchronization from Owners.)

Bug 25796840

Change-Id: I83f7b78e7b437d9c2a2b1d6e714346cd15f95330
2015-11-25 11:17:08 -08:00
Makoto Onuki
42490c074d Merge "Remove UserManager.setSystemControlledUserRestriction()" 2015-11-23 18:42:55 +00:00
Makoto Onuki
ac65e1e1db Remove UserManager.setSystemControlledUserRestriction()
Now that we don't have UM.setUserRestriction*s*() that could remove
all existing restrictions, there's almost no point handling
DISALLOW_RECORD_AUDIO differently.

Now DISALLOW_RECORD_AUDIO is handled just like other restrictions,
except we don't persist it.

Bug 24954662

Change-Id: I27875b4a74dd95a3ce6bb774081eeaf718eaec15
2015-11-23 10:41:42 -08:00
Przemyslaw Szczepaniak
9ad08ec5be Switch RecoverySystem impl to use sun.security.pkcs
Due to org.apache.harmony.security package removal,
RecoverySystem#verifyPackage was rewritten to use
sun.security.pkcs package for verifining package
signature.

(cherry-picked from 84acbd76f7e1300e8404ac1b94f008826f9cc0fb)

Change-Id: I3a2058982beadab1aaae793c25db5c6f7387a72b
2015-11-21 14:51:05 +00:00
Makoto Onuki
1fae502824 Merge "More work on layered user restrictions." 2015-11-19 22:53:37 +00:00
Makoto Onuki
1a2cd74526 More work on layered user restrictions.
- Now when DO/PO sets a user restriction, DPMS pushes it to UMS and
then UMS persists it, in order for UserManager.hasUserRestriction()
to never have to talk with DPMS, which would cause lock inversion.

- Also apply user restrictions when a user start.

- This is an updated version of the abandoned CL -- the difference
is, ActivityManager no longer has to call DPMS.

- Also removed an unnecessary write to userlist.xml in UMS.
upgradeIfNecessaryLP().

Bug 23902097
Bug 25388912
Bug 25354031
Bug 25641040

Change-Id: I0948aea06ad7d0f45fe612a431d765faddfe3c58
2015-11-19 13:37:21 -08:00
Jeff Sharkey
ba51235ef5 More file-based encryption work.
Add new "am unlock-user" command so we can trigger changes from the
command line.

Move FBE check to static method so it can safely be called early
during boot before the mount service is ready.  Move FBE emulation
to persisted system property, and start reading/writing that value.

Change default permission grants to ignore current encryption-aware
flags, since many of the target apps aren't crypto aware.

Always prepare package data directories, which is how we create the
new "user_de" paths during boot.

Bug: 22358539
Change-Id: I6f58ea2d34b3a466d3775d614f8a13de92272621
2015-11-19 11:02:30 -07:00
Ben Kwa
84cebbeb69 Open the destination dir when a copy notification is tapped.
- Cleanup: rename the "open copy destination" action to "pick copy
  destination", which better reflects what it does.
- Move DocumentsIntent from BaseActivity to Shared.
- Rename ACTION_BROWSE_DOCUMENT_ROOT to ACTION_BROWSE for general browsing.
- Use the new ACTION_BROWSE to open the copy destination when copy
  notifications are tapped.

BUG=23137963

Change-Id: I10480b45a16ce716febac5453cb5015d26bb0062
2015-11-18 11:22:30 -08:00
Nicolas Geoffray
0283d44c08 Merge "Remove DEBUG_JIT from Zygote flags." 2015-11-17 12:26:01 +00:00
Daichi Hirono
0fe13b1f70 Merge "Add a mehtod definition to StorageManager for appfuse." 2015-11-17 01:05:20 +00:00
Dianne Hackborn
354c3bc394 Merge "Some debugging improvements." 2015-11-17 00:41:07 +00:00
Dianne Hackborn
627dfa1dda Be smarter about determining when we can stop idle maintenance.
The device idle service now knows when the system is actively
doing significant things (syncs, jobs, alarms, downloads).  It
uses this, when in an idle maintenance window, to determine when
it can end that window early -- when such work is no longer
happening.

For now this just allows us to shorten the windows.  In the future
we should use this to allow us to expand the windows to a longer
potential time, adjusting future windows to shorter durations if
earlier ones use more time.  This will allow us to batch occasional
long operations (such as downloads) into one window, making up
for that with much shorter later windows.

Change-Id: Ie482abd50bc43be9a8917a769a5175851eee4ec4
2015-11-16 16:38:29 -08:00
Daichi Hirono
9e8d9e250b Add a mehtod definition to StorageManager for appfuse.
BUG=25091416

Change-Id: Id4d4a000daf89fab4917528fcd0d1270547fbfa4
2015-11-17 08:44:06 +09:00
Casey Dahlin
cc26b35bb4 Merge "Add hidden support for arrays of raw file descriptors" am: 376d5f350c am: 7a38be6112
am: 2c19dbeff5

* commit '2c19dbeff5ef15aaa6e4bfb23dc1fb44631e5036':
  Add hidden support for arrays of raw file descriptors
2015-11-13 00:17:12 +00:00
Casey Dahlin
7a38be6112 Merge "Add hidden support for arrays of raw file descriptors"
am: 376d5f350c

* commit '376d5f350c6618d915338a9927b5d0f5fb61eba8':
  Add hidden support for arrays of raw file descriptors
2015-11-12 23:57:58 +00:00
Casey Dahlin
2f974b252f Add hidden support for arrays of raw file descriptors
Change-Id: I4013e0700369764a26485d8620ebf16d8bea1951
Test: Built and ran Android in an emulator
Bug: 25242023
Signed-off-by: Casey Dahlin <sadmac@google.com>
2015-11-12 14:13:15 -08:00
Dianne Hackborn
3cdb56efea Some debugging improvements.
- Fix dumping of package manager intent filters so the option
  to print the filter detail works again.
- Extend dump resolvers to allow you to specify the specific
  types of resolvers you'd like to dump.
- Add new package manager commands for querying activities,
  services, receivers.
- Move the code for parsing a command line into an intent to
  the framework, so it can be used by the new package manager
  commands and later elsewhere.

Change-Id: I56ea2bb8c3dd0e5198ee333be8f41ad9dcdb626f
2015-11-11 12:45:44 -08:00
Jeff Sharkey
f9fc6d6cc0 More file-based encryption work.
Add granular StorageManager APIs for key creation/destruction and
unlocking/locking.  Start passing through an opaque token as part
of the unlock command, but leave it empty for now.  We now have a
separate "prepare" method that sanity checks that user directories
are correctly setup.

Define a handful of system properties used for marking devices that
should be operating in FBE mode, and if they're emulating FBE.  Wire
a command to "sm", but persisting will come later.

Start using new "encryptionAware" flag on apps previously marked with
coreApp flag, which were apps running in the legacy CryptKeeper
model.  Small tweaks to handle non-encryptionAware voice interaction
services.  Switch PackageManager to consult StorageManager about the
unlocked state of a user.

Bug: 22358539
Change-Id: Ic2865f9b81c10ea39369c441422f7427a3c3c3d6
2015-11-11 10:47:23 -08:00
Todd Kennedy
72cfcd02b8 Move 'un/install' to cmd
Move the implementation of the install variants and uninstall to the cmd
command. Additionally, make two other important changes: 1) replace calls
to the legacy PackageManager#installPackageAsUser with the PackageInstaller
2) allow streaming package bits for 'pm install'

Change-Id: I5680f57208d377daadb69b2cc09c233c02fe5016
2015-11-09 15:07:18 -08:00
Guang Zhu
f49bec047a Merge "Revert "Move 'un/install' to cmd"" 2015-11-09 18:10:54 +00:00
Todd Kennedy
18bc3305e4 Revert "Move 'un/install' to cmd"
This reverts commit ec059d839d.

Change-Id: Ieaa1373e96fb4cc20aa41c3159518bd9e86c572b
2015-11-09 15:36:43 +00:00
Nicolas Prévot
d59262667c Merge "Add method to tell the dpc if provisioning is allowed." 2015-11-09 13:49:31 +00:00
Jeff Sharkey
e17ac15697 More APIs for encryption-aware apps.
Apps can mark manifest components as being encryption-aware, which
means they can safely be run before the credential encrypted storage
is available.

Start adding filtering logic so that we only return these components
when a user is running "with amnesia."  That is to say, only device
encrypted storage is available, so the user is running but with only
partial knowledge of its data.

To avoid calling into ActivityManager with the PackageManager lock
held, we quickly determine user state and splice the state into the
flags for later per-component evaluation.

Bug: 22358539
Change-Id: Idc56ec29f1ef04da8963e004314d7f5e47400997
2015-11-08 13:29:16 -08:00
Jeff Sharkey
15447798a3 Initial file-based encryption public APIs.
Define two explicit directories where device-encrypted and
credential-encrypted data will be stored.  Third-party apps only
need access to the device-encrypted directory, so that's the only
API exposed for now.

General cleanup in how ApplicationInfo details are derived.

Bug: 22358539
Change-Id: If0a0108721a4aa1c3052b4912e08604bbf24e1ae
2015-11-06 18:35:27 -08:00
Makoto Onuki
86cd001e36 Merge "Have AudioService listen to DISALLOW_UNMUTE_MICROPHONE and" 2015-11-06 18:29:12 +00:00
Todd Kennedy
ec059d839d Move 'un/install' to cmd
Move the implementation of the install variants and uninstall to the cmd
command. Additionally, make two other important changes: 1) replace calls
to the legacy PackageManager#installPackageAsUser with the PackageInstaller
2) allow streaming package bits for 'pm install'

Change-Id: Ia49dac0ccd6470f9d1c1964bdeb3c0b22b856075
2015-11-06 09:27:22 -08:00
Paul Lawrence
6bcc32504f Fix build
Change-Id: I0ebff8e41c2aa5bec2466d075d9143a5a525e02d
2015-11-05 14:17:03 -08:00
Paul Lawrence
9548b380d9 Merge "Add developer option to convert from FDE to FBE" 2015-11-05 21:41:03 +00:00
Nicolas Geoffray
9abbf45c8d Remove DEBUG_JIT from Zygote flags.
The flag is being obsolete by the move to JIT.

Change-Id: Ifb9fab7c561c7f5137aa78c34dd55c552a9505f5
2015-11-05 11:29:42 +00:00
Makoto Onuki
d45a4a2ecb Have AudioService listen to DISALLOW_UNMUTE_MICROPHONE and
... DISALLOW_ADJUST_VOLUME, instead of UserManager pushing
new settings to AudioService.

Also:
- Allow PO to set these two restrictions.

- Now AS.setMasterMuteInternal() respects mUseFixedVolume to make
it consistent with readPersistedSettings().

- When a user switches and restores the mute state in
AS.readPersistedSettings(), also check the current user restrictions
in addition to system settings. Because of the delay in AudioService
before persisting the mute settings in setMasterMuteInternal() and
setMicrophoneMute(), there's was an edge case
DISALLOW_UNMUTE_MICROPHONE and DISALLOW_ADJUST_VOLUME would be ignored
when the user switches right after they are set.

Bug 24981972

Change-Id: I4d9b709a0a0e6812319204568c6e44d6664bdeb4
2015-11-04 14:29:31 -08:00
Paul Lawrence
3806d9c562 Add developer option to convert from FDE to FBE
This set of changes adds the screen that offers this conversion,
and the plumbing so the option is only available on suitable
devices.

It does not implement the conversion mechanism.Add conversion from FDE to FBE

Change-Id: Idf7bc834f30b3d1b0473e0a53c985ef01dd0ad18
2015-11-04 08:51:27 -08:00
Nicolas Prevot
07387fedfa Add method to tell the dpc if provisioning is allowed.
The DPC can use it to tell if provisioning a managed profile or for
device owner would work or not.

BUG:25338478
Change-Id: I09ea6a9f23a8e88e4ed37c048170b2a68213086e
2015-11-04 14:50:22 +00:00
Clara Bayarri
965da39942 Create a File Based Encryption check API
Change-Id: Ibf41f98818ea801b9f690200c340be80c3b9bf31
2015-11-04 12:27:39 +00:00
Fyodor Kupolov
8240275381 Introduced short-term lock for UMS internal state
Added mUsersLock - short-term lock for internal state, when interaction and
synchronization with PM is not required. Modifications to mUsers and
mRemovingUserIds must be guarded by 3 locks: mInstallLock, mPackagesLock and
mUsersLock. While reads can use mUsersLock.

Testing revealed that the following methods in UMS often cause contention:
- exists
- getUserInfo
- getProfileParent

They all now use a short-term lock mUsersLock for reads.

Bug: 24979571
Change-Id: Ie3a22ea7cbb450c7969800fe2a4a2b2516165e5b
2015-11-03 11:56:33 -08:00
Makoto Onuki
5263492de6 Merge "Allow DO to disable camera device-wise." 2015-11-02 22:00:09 +00:00
Makoto Onuki
759a763f5f Allow DO to disable camera device-wise.
Bug 24538855

Change-Id: I421690f14ee57fa818d2b233fe48a90a0a575a9e
2015-11-02 13:33:58 -08:00
Badhri Jagan Sridharan
2b2e24c2ab Merge "BatteryService: Add Max charging voltage" 2015-11-02 18:35:09 +00:00
Amith Yamasani
8f18dd4dfa Merge "Don't store a static instance of UserManager" 2015-10-30 18:19:08 +00:00
Amith Yamasani
c0688301de Don't store a static instance of UserManager
Otherwise the context within it can't be GCed.
It's better to leave the caching to the ContextImpl.

Bug: 25308506
Change-Id: I9be3ba5b1bb6cdc88b77520b2fbd72d9b72ef30d
2015-10-30 10:40:03 -07:00
Dianne Hackborn
2e44107bf7 Implement shell commands for battery and activity services.
The battery service just implements the existing commands that
are available through dump.

The activity service implements the small set of commands that
are available through dump (not the rest of the dump commands),
and also introduces some of the simple "am" shell commands as
a proof-of-concept of moving those into the service implementation.

Change-Id: If5ff80930dde787703e2682e43c36ce1dab05d69
2015-10-29 16:39:43 -07:00
Makoto Onuki
a3c1250a2f Fix javadoc
Change-Id: Iade890cd14bcac844f8ccc1ddde90120600fd64a
2015-10-28 10:18:32 -07:00
Badhri Jagan Sridharan
f92fcfe36a BatteryService: Add Max charging voltage
Bug: 25229483
Change-Id: Ibeba97eb145c3d59a763bd8632ab7fcc43118e4b
2015-10-27 20:21:22 -07:00
Makoto Onuki
068c54a5be Layer user restrictions
- Now DPMS remembers user restrictions set by DO / PO in their ActiveAdmin.

- User restrictions set by DO/PO will no longer be saved by UserManger.  Instead,
when needed, UMS will consult DPMS to build "effective" user restrictions.

- UM.getUserRestrictions() will now always return "effective" user restrictions.

- DPMS migrates existing user restrictions per the eng spec.

- Also now UM.setUserRestrictions() will crash.  UMS.setUserRestrictions() has
been removed.
This was needed because UM.setUserRestrctions(UM.getUserRestrictions()) will no
longer be a valid use like it used to be.

- Also introduced a fined-grained lock for user restrictions in UM to avoid
deadlock between DPMS and also for better performance.

Bug 23902097

Change-Id: If0e1e49344e2f3e9226532d00777976d1eaa7df3
2015-10-27 14:26:06 -07:00
Adrian Roos
f8ae610e8c Merge "Revert "Revert "Track ashmem memory usage in Parcel""" into mnc-dr-dev am: 93a6b4c129 am: a53bbb652b am: 5e5f718d23
am: 989b719e64

* commit '989b719e649266f41353ff5266cabd5b42a297a5':
  Revert "Revert "Track ashmem memory usage in Parcel""
2015-10-23 18:37:05 +00:00
Adrian Roos
989b719e64 Merge "Revert "Revert "Track ashmem memory usage in Parcel""" into mnc-dr-dev am: 93a6b4c129 am: a53bbb652b
am: 5e5f718d23

* commit '5e5f718d236234f3a4bc5826dc805b6b8c53283c':
  Revert "Revert "Track ashmem memory usage in Parcel""
2015-10-23 18:25:02 +00:00
Adrian Roos
a53bbb652b Merge "Revert "Revert "Track ashmem memory usage in Parcel""" into mnc-dr-dev
am: 93a6b4c129

* commit '93a6b4c12904bd1804a540d006c183851b0aea33':
  Revert "Revert "Track ashmem memory usage in Parcel""
2015-10-23 17:29:13 +00:00
Adrian Roos
0450565d9a Revert "Revert "Track ashmem memory usage in Parcel""
This reverts commit e2adb2cf0f.

Bug: 25004154
Change-Id: I9b432d1ebc39f3bbcd7afdefc403f0fb6ced8158
2015-10-22 17:49:38 -07:00
Ian Pedowitz
ab49c51342 Merge "Revert "Track ashmem memory usage in Parcel"" into mnc-dr-dev am: 09fd4ecf90 am: b402735fc0 am: 07129d53b5
am: d3511518f9

* commit 'd3511518f927eead41fb33c56803104672dcffc2':
  Revert "Track ashmem memory usage in Parcel"
2015-10-22 22:53:24 +00:00
Ian Pedowitz
d3511518f9 Merge "Revert "Track ashmem memory usage in Parcel"" into mnc-dr-dev am: 09fd4ecf90 am: b402735fc0
am: 07129d53b5

* commit '07129d53b5380ec556fa14c7506a26b6776e629a':
  Revert "Track ashmem memory usage in Parcel"
2015-10-22 22:46:06 +00:00
Ian Pedowitz
b402735fc0 Merge "Revert "Track ashmem memory usage in Parcel"" into mnc-dr-dev
am: 09fd4ecf90

* commit '09fd4ecf90c7ae2536a6848e8c88c4878e0e0c24':
  Revert "Track ashmem memory usage in Parcel"
2015-10-22 22:32:37 +00:00