Commit Graph

2976 Commits

Author SHA1 Message Date
Felipe Leme
10f673a2ff Merge "Initial implementation of OPEN_EXTERNAL_DIRECTORY." 2016-01-27 16:56:20 +00:00
Felipe Leme
b012f913cb Initial implementation of OPEN_EXTERNAL_DIRECTORY.
It opens a an alert dialog that tells user application X is requesting
access to folder Y on volume Z; if user accepts, it returns the proper
URI, otherwise it returns RESULT_CANCELED.

The requested path must satisfy the following requirements:

1.It's directory (getName()) must be one of the pre-definied folders on
  Environment.
2.It's root (getParent()) must be a valid external storage root.

In order to satisfy #2, DocumentsUI calls the ExternalStorageProvider,
through a custom call() implementation.

BUG:  23011462
Change-Id: I8e491e82ae320df88f7b8923286c4c1ad050ae80
2016-01-27 08:52:58 -08:00
Polina Bondarenko
8b8b242985 Merge "HardwarePropertiesManager: Add API for hardware properties retrieval" 2016-01-27 13:18:09 +00:00
Felipe Leme
21f255dea9 Merge "Created a new API to grant scoped directory access to applications." 2016-01-22 19:13:10 +00:00
Felipe Leme
c7b1f89e9e Created a new API to grant scoped directory access to applications.
The Storage Access Framework currently provides an
API (OPEN_DOCUMENT_TREE) that lets the user pick a directory to be used
by the application. Although this APIs is very powerful (for example, it
allows the user to create sub-directories, delete and share files,
etc...), it's too complex for simpler use cases like a camera
application trying to have access to the standard Pictures directory.

The new API (OPEN_EXTERNAL_DIRECTORY) simplifies this scenario by
letting the application select a standard, pre-defined directory (as
defined by android.os.Environment). The user still needs to grant access
to the requested directory, but the resulting UI will be simpler and
more straightforward.

Usage example:

  // ...
  int requestCode = 42;
  Intent intent = new Intent(Intent.ACTION_OPEN_EXTERNAL_DIRECTORY);
  intent.setData(Uri.fromFile(
    new File(Environment.getExternalStorageDirectory(),
             Environment.DIRECTORY_PICTURES)));
  startActivityForResult(intent, requestCode);
  // ...

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != Activity.RESULT_OK) {
      return;
    }
    Uri uri = data.getData();
    int modeFlags = data.getFlags()
        & (Intent.FLAG_GRANT_READ_URI_PERMISSION
        | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    getContentResolver().takePersistableUriPermission(uri, modeFlags);
  }

BUG: 23011462
Change-Id: Ie832026532f74e681ef220b761667eb66ff3c8b0
2016-01-22 10:59:29 -08:00
Polina Bondarenko
965ecbbb3e HardwarePropertiesManager: Add API for hardware properties retrieval
Add serive "hardwareproperties" and methods getDeviceTemperatures,
getCpuUsages and getFanSpeeds to retrieve hardware properties:
device temperatures (CPU, GPU and battery), CPU usages and fan speeds.
This is a public API.

Bug: 22407109
Change-Id: If7efcbba7b160256d41704b60d93a7218dcc79d7
2016-01-22 17:33:37 +01:00
Oleksandr Peletskyi
b7cc096fd4 Merge "Added restriction if a user is allowed to change the icon. BUG: 25305966" 2016-01-21 20:25:46 +00:00
Oleksandr Peletskyi
7f1f1dfc87 Added restriction if a user is allowed to change the icon.
BUG: 25305966

Change-Id: I3d527224f00087b2bd959879ebb143e2ecb9c914
2016-01-21 20:49:32 +01:00
Adam Lesinski
50e4760214 Record bytes transferred for bluetooth
Bug:26039657
Change-Id: Iec42459d12f4106d5733f55313e8544d58930285
2016-01-18 18:22:55 -08:00
Amith Yamasani
12747879b0 User creation with an intent
New API for an app to request creating a new user with
a given user name and seed account information for the
SetupWizard to use when that user is switched into.

Also adds system APIs to read the seed account data from
UserManager.

Bug: 22776757
Change-Id: I0bc3f11ee19c15e0ee2a908c88d98b13296cc30d
2016-01-15 17:06:35 -08:00
Jeff Sharkey
12cde00dc0 Merge "Prepare app data only when storage is available." 2016-01-16 00:41:08 +00:00
Jeff Sharkey
0e62384ccb Prepare app data only when storage is available.
Before this change, scanning a package aggressively tried checking
to ensure that private app data was prepared.  However, in an FBE
world we may not have access to that data at scan time.  So this
change shifts the preparing of private app data until later: it
prepares DE storage when a user is started, and CE storage when a
user is unlocked.  Wire ourselves into the user lifecycle so we can
prepare storage at both user start and unlock.

When DE/CE storage becomes available, this change reconciles any
found packages against known installed apps, and deletes any orphaned
data directories.

We now need to store the last-restorecon hash in an xattr on a
per-user directory basis, since we can't restorecon CE storage until
it's unlocked, or adopted storage until it's mounted.  Remove a
bunch of used logic for loading dynamic SELinux policy at runtime;
our policy always comes from the system image.

Bug: 26466827, 26544104
Change-Id: I8d0a4ef862c35f4e4ef5c7f20d3bb8f12ba3fd4b
2016-01-15 16:01:17 -07:00
Yao Chen
9941ab3cbb Merge "Changes in DeviceIdlecontroller and JobScheduler to support Auto GarageMode." 2016-01-15 20:09:11 +00:00
Yao Chen
ca5edbb6b5 Changes in DeviceIdlecontroller and JobScheduler to support Auto GarageMode.
Changes made in the cl:
1. Let DeviceIdleController take listeners on whether background
maintanence services are active. This currently includes JobScheduler,
SyncManager, DownloadService. Note this is the last known
states reported by these services.

2. In JobScheduler, make the idle threshold and alarm window configurable.
So in the car case, we don't need to wait 71 mins after screen off
to kick off any jobs that require device idle.

-------------------------------------------------------------------

* We are not going to suppress JobScheduler, DownloadService, SyncManager
entirely while user is driving. Because apps may not be working properly if
these services are suspended.

* The jobs that we don't allow to run while driving are the
jobs submitted to JobScheduler that require device idle.
And this is already taken care of, because
screen is ON and JobScheduler will not consider the device to be idle
while driving (unless user turns off the head unit).

* We will need to give the JobScheduler a chance to run the device idle
jobs when car is turned off. This is the scope of GarageMode. If
DownloadService and SyncManager want to run, we will allow them to run
too.

* The headunit is treated as wall power device, so it's always charging.
The charging state will not toggle.

Change-Id: I55b92cf92efd61c48dd6c9b8197c2b68078a4439
2016-01-15 12:06:30 -08:00
Samuel Tan
01208118b3 resolve merge conflicts of 3caecaec60 to master.
Change-Id: Ic3e9909c69f03a6ef1911a6b7589afbc02d7494f
2016-01-13 13:42:00 -08:00
Samuel Tan
3caecaec60 Merge "Remove PersistableBundle.aidl from Java framework"
am: 2e37bfd2d2

* commit '2e37bfd2d2f629ca50ecf0e6674484cd30560d26':
  Remove PersistableBundle.aidl from Java framework
2016-01-12 23:17:50 +00:00
Samuel Tan
239951a91e Remove PersistableBundle.aidl from Java framework
Remove PersistableBundle.aidl from the Java framework, since it
has been moved to the native libbinder.

BUG: 26292234
Change-Id: Ia3dc49a3ad92f4c579e6dff0606c1db8fb3be76b
TEST: aosp_arm builds successfully.
2016-01-12 14:43:32 -08:00
Martijn Coenen
e076485754 Report SwapPss usage if available as part of Pss
Parse "SwapPss:" lines from /proc/pid/smaps if it exist, and store them
in a seperate stat entry.
Report SwapPss if made available by kernel, otherwise we fall back to
legacy Swap.

Fix getTotalSwappablePss documentation.

Change-Id: I361928c0f44c7dc9b959b91c127c916215063866
Signed-off-by: Thierry Strudel <tstrudel@google.com>
2016-01-12 10:15:25 -08:00
Jeff Sharkey
cd65448ccd Even more PackageManager caller triage.
Finish moving all UID/GID callers to single AIDL method that requires
callers to provide flags.

Triage AppWidgets and PrintServices, which currently can only live on
internal storage; we should revisit that later.

Fix two bugs where we'd drop pending install sessions and persisted
Uri grants for apps installed on external storage.

Bug: 26471205
Change-Id: I66fdfc737fda0042050d81ff8839de55c2b4effd
2016-01-08 18:35:54 -07:00
Jeff Sharkey
0ab0bdde2b Merge "More progress on triaging PackageManager callers." 2016-01-08 23:14:25 +00:00
Jeff Sharkey
c5967e9862 More progress on triaging PackageManager callers.
Catch a bunch of simple cases where the PackageManager flags are
obvious.  Add the ability to use the MATCH_SYSTEM_ONLY flag on
PackageInfo and ApplicationInfo queries.

Re-examine recent tasks after a user is unlocked, since some of the
activities may now be available and runnable.

Bug: 26471205, 26253870
Change-Id: I989d9f8409070e5cae13202b47e2c7de85bf4a5b
2016-01-08 16:10:33 -07:00
Mahaver Chopra
dea471ef54 Added Data roaming user restriction
Added new user restriction DISALLOW_DATA_ROAMING, can only be set
by device owners.

Bug: 24890464
Change-Id: Ic4cb37dd5f9bbffa35f921751488ef7c7ff99452
2016-01-08 18:07:31 +00:00
Jason Monk
5a5d6aeec0 Merge "Add internal power mode changed broadcast" 2016-01-07 19:41:32 +00:00
Alex Klyubin
e7565ad959 Merge "[1/3] Remove unnecessary throws statement in ServiceManager" am: d1240219aa
am: 4a06b7ea7e

* commit '4a06b7ea7e493bf7b575da5219429e2cbeb5b3e8':
  [1/3] Remove unnecessary throws statement in ServiceManager
2016-01-07 19:21:59 +00:00
Alex Klyubin
4a06b7ea7e Merge "[1/3] Remove unnecessary throws statement in ServiceManager"
am: d1240219aa

* commit 'd1240219aadedc867b50158c67d1737a27fa7c6f':
  [1/3] Remove unnecessary throws statement in ServiceManager
2016-01-07 19:18:01 +00:00
Jeff Sharkey
8588bc1ef1 Add flags to requests for package UID/GIDs.
This gives callers the ability to request details for missing
packages.  Also add annotations for userId and appId variables and
start tagging their usage.

Change-Id: I63d5d7f870ac4b7ebae501e0ba4f40e08b14f3f6
2016-01-07 10:33:26 -07:00
Umair Khan
9ccebbfc37 [1/3] Remove unnecessary throws statement in ServiceManager
The exception is already caught by the try-catch block.

Change-Id: I0c10fe51d12a10cbc02a25c719d03a4ba6497767
Signed-off-by: Umair Khan <omerjerk@gmail.com>
2016-01-07 15:08:27 +05:30
Jeff Sharkey
a73b8fd1f4 Add some TestApis to fix build.
Change-Id: Icf0d8d63f3a41d99e46ebe96003863bae637bd9d
2016-01-06 17:37:32 -07:00
Narayan Kamath
f59c02a65e Merge changes from topic \'aosp-merge-24-12\'
am: e0e81bf407

* commit 'e0e81bf407508ec096c752948f8794af5fd480ca':
  Special case system_server to not create the JIT code cache.
  Don't use IntegralToString
  Track libcore commit 85d69e16fe1e59e50c1ad228e754abf325088362.
  Track API changes to java.lang.ref.Reference.
  Remove merge markers from preloaded-classes
  Move StrictJarFile from libcore to framework
  Switch RecoverySystem impl to use sun.security.pkcs
  API update for OpenJdk based libcore
  Use libcore/known_oj_tags for the javadoc stage.
  Stop preloading fortress classes
  Use HexDump instead of java.lang.IntegralToString
  Add core-oj to the list of core library jars.
2015-12-24 04:07:42 -08:00
Benjamin Franz
b6c0ce4ac9 Allow device and profile owner to modify accounts
The user restriction DISALLOW_MODIFY_ACCOUNTS and the policy
DPM.setAccountManagementDisabled can now be circumvented by a device
or profile owner. This allows the device or profile owner to add
accounts without briefly having to remove the policy.

Bug: 22030831
Change-Id: I2b59c4b3ad354287d7a00f21b2afef072d12517d
2015-12-22 15:50:30 +00:00
Przemyslaw Szczepaniak
62671eaa46 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 commit 9ad08ec5be)

Change-Id: I04848ad8f045f87224f9d30ff8dd745aac6d08fd
2015-12-22 13:10:55 +00:00
Daichi Hirono
e442872eaa Merge "Unmount appfuse when the device FD is closed." 2015-12-22 05:31:57 +00:00
Daichi Hirono
91e3b50636 Unmount appfuse when the device FD is closed.
The CL lets MountService to observe device FD, and request unmount to
vold when the device FD was closed, or remote application providing
appfuse is crashed.

BUG=25756420

Change-Id: I7990694d32affa7f89e3f40badb25098d74d744d
2015-12-22 13:41:33 +09:00
Jeff Sharkey
5b0e5207e1 Point "unlocked" logic at lower level.
There is a race when starting a non-encryption-aware launcher before
we've gone through the user lifecycle to enter the "running unlocked"
state.  This can cause the launcher to choke when it's denied access
to widgets that are still considered locked.

For now, relax the notion of a user being unlocked to reflect the
on-disk state, instead of looking at the user lifecycle.

Also add logging of encryption commands.

Bug: 26267450
Change-Id: Ie330d07418cf10413e0b4380f6d6781684f01952
2015-12-18 19:06:54 -07:00
Jeff Sharkey
2527e2bf15 Merge "Allow library spec and app configs to be read from odm partition" 2015-12-18 16:34:26 +00:00
Jeff Sharkey
0999c0d6e9 Make printing framework encryption-aware.
Only create UserState objects when a user has been unlocked, meaning
we can connect to the spooler.  Ignore package events that occur
while a user is locked, since we'll kick off updateIfNeededLocked()
when that user is eventually unlocked.

In all other cases, throw if someone tries obtaining UserState for
a still-locked user.  This should help catch any edge cases in the
system, and communicate clearly through public APIs that printing
isn't available until the user is unlocked.

Bug: 26246836
Change-Id: If15744621890baee206d355484fe20933afc65d8
2015-12-17 15:12:26 -07:00
Samuel Tan
a6d4744e89 Merge "Add comments to keep Java and native binder PersistableBundle in sync" am: 6de926a7d6
am: 4981ae9083

* commit '4981ae908349767fee7976cc82c54a7fb00ee4fd':
  Add comments to keep Java and native binder PersistableBundle in sync
2015-12-17 09:55:24 -08:00
Samuel Tan
76d3072dd6 Merge "Fix PersistableBundle handling in Parcel.writeValue" am: d12959193c
am: d3decff052

* commit 'd3decff052c4f7471a21fbbb116b32586181b391':
  Fix PersistableBundle handling in Parcel.writeValue
2015-12-17 09:53:44 -08:00
Samuel Tan
33d5888d7a Merge "Specify path for native PersistableBundle implementation" am: 477fa220b1
am: 0bc7647f63

* commit '0bc7647f63bcdf2d63ee71d770f9514a239eaba8':
  Specify path for native PersistableBundle implementation
2015-12-17 09:52:11 -08:00
Hung-ying Tyan
bdc9d58d06 Allow library spec and app configs to be read from odm partition
Currently only feature specs are allowed to be read from /oem/etc/permissions.
ODM may want to add their own library specs and app configs (ie, "app-link",
"system-user-whitelisted-app" and "system-user-blacklisted-app") but they can
only add them to /system/etc/permissions and thus polluted the system.img.
With the fine-grained permission flag introduced in this change, we also tighten
the permission for OEMs so they can only customize the feature specs.

Bug: 25759900
Change-Id: I44ef1380b160c2b6a53f2af6de0c5f5eae27a859
2015-12-17 11:14:40 +08:00
Samuel Tan
4981ae9083 Merge "Add comments to keep Java and native binder PersistableBundle in sync"
am: 6de926a7d6

* commit '6de926a7d6439745cd0f01a69a5dd75b006b923d':
  Add comments to keep Java and native binder PersistableBundle in sync
2015-12-17 00:54:03 +00:00
Samuel Tan
d3decff052 Merge "Fix PersistableBundle handling in Parcel.writeValue"
am: d12959193c

* commit 'd12959193c60254b6b03b2a60a9c6e598e9da2e5':
  Fix PersistableBundle handling in Parcel.writeValue
2015-12-17 00:50:53 +00:00
Samuel Tan
0bc7647f63 Merge "Specify path for native PersistableBundle implementation"
am: 477fa220b1

* commit '477fa220b1766a3822171fa514983198e09daabb':
  Specify path for native PersistableBundle implementation
2015-12-17 00:49:19 +00:00
Samuel Tan
6de926a7d6 Merge "Add comments to keep Java and native binder PersistableBundle in sync" 2015-12-17 00:35:58 +00:00
Samuel Tan
d12959193c Merge "Fix PersistableBundle handling in Parcel.writeValue" 2015-12-17 00:35:43 +00:00
Samuel Tan
477fa220b1 Merge "Specify path for native PersistableBundle implementation" 2015-12-17 00:35:35 +00:00
Mahaver Chopra
1ce53bc571 Adding DPM.reboot
Adding new policy in DPM to trigger reboot on the device.
Requirement: Device owner can reboot the device if it is stuck or is
not useable due to some unresponsive UI.

Bug: 25304994
Change-Id: I7a6d5c8ad611de9c1cf6619378e492a306b41626
2015-12-16 17:55:54 +00:00
Esteban Talavera
c063603d9b Merge "Only system can set application restrictions via UserManager" 2015-12-16 10:44:12 +00:00
Samuel Tan
3cefe6a991 Add comments to keep Java and native binder PersistableBundle in sync
Add comments stating that certain methods of the Java binder framework
should be kept in sync with the corresponding methods mirrored in the
native PersistableBundle implementation.

BUG: 25815410
Change-Id: I475b2e9a527291eea58c8178cd733c444dfcfed5
2015-12-15 15:22:52 -08:00
Samuel Tan
ceafe5ed8a Fix PersistableBundle handling in Parcel.writeValue
Previously, in Parcel.writeValue, PersistableBundle objects
would be handled as Parcelable types, since we check for
the Parcelable type before the PersistableBundle type (and
PersistableBundle implements the Parcelable interface).

Fix this by moving the PersistableBundle type "if" condition
above the Parcealble type "if" condition. Also, add a comment
that explicitly states this nuance, in order to prevent future
regressions.

BUG: 25815410
Change-Id: Ia86aa5fc39423422342df0609a0d37e7f38d7ddd
2015-12-15 15:22:52 -08:00