Commit Graph

5739 Commits

Author SHA1 Message Date
Peiyong Lin
2d5a2bb0ad Add global property to store opt-in application package name.
We provide a way in developer option to opt-in an application to use updated
graphics driver. To make sure we set up the graphics environment correctly, we
need to access the package name of the selected application. This patch
introduces a global property to store the package name.

BUG: 119221883
Test: Build, flash and boot, verify with prototype
Change-Id: I49dfcccf387169c072fb9345f7a50c00fcdb0737
2018-11-09 11:53:00 -08:00
Cody Northrop
5431cccea9 Merge changes from topic "rules_fd_from_disk"
* changes:
  Add temp ANGLE rules support
  Remove app preference from ANGLE logic
2018-11-08 15:01:51 +00:00
TreeHugger Robot
157edce8a7 Merge "Deprecated scoped directory access." 2018-11-08 02:14:24 +00:00
Cody Northrop
8d72a6b06f Add temp ANGLE rules support
If root is available or the app is debuggable,
check for the following property and use it to load
a rules file instead of the one that comes with ANGLE:

  debug.angle.rules

For example:

  adb shell setprop debug.angle.rules /data/local/tmp/a4a_rules.json

Bug: 80239516
Test: Manual build, ensure rules behave as expected
Test: cts-tradefed run singleCommand cts -m CtsAngleIntegrationHostTestCases
Change-Id: Ie43c67c078ad962ba12f1046a878f79216660755
2018-11-07 14:38:58 -07:00
Wei Wang
bad7c20606 Add thermal service into system_server
This system service will listen to ThermalHAL for throttling events and
take actions accordingly, e.g. shutdown device and/or sending
notification to registered listeners to IThermalSerivce.

Bug: 79443945
Bug: 118510237
Bug: 111086696
Bug: 116541003
Test: Boot and test callback on ThermalHAL 1.1
Test: Boot and test callback on ThermalHAL 2.0
Test: Kill ThermalHAL process
Test: Change device threshold to trigger shutdown
Change-Id: I1f4066c9f1cf9ab46c1738a0a4435802512e4339
2018-11-07 13:38:57 -08:00
Cody Northrop
6d8d96801e Remove app preference from ANGLE logic
* The use of meta-data to specify app preference for ANGLE was
  temporary, so remove it.
* Since we no longer plan to allow apps to specify a preference
  at all, remove the JNI plumbing.

Bug: 80239516
Test: Manual build, ensure rules are followed
Test: cts-tradefed run singleCommand cts -m CtsAngleIntegrationHostTestCases
Change-Id: If8eb6087ae85bb82eae6625778e1c3a926fe038a
2018-11-07 14:00:58 -07:00
Felipe Leme
05083b019f Merge "Initial APIs for Intelligence Service." 2018-11-05 21:48:54 +00:00
Felipe Leme
1dfa9a0195 Initial APIs for Intelligence Service.
A.K.A: "The thing's hollow — it goes on forever — and — oh my God! —
        it's full of TODOs!"

Bug: 117944706
Test: m update-api && m

Change-Id: I0774a0df4f4ea0810a8c5f72a1fbcd4eef5cd09b
2018-11-05 09:22:18 -08:00
Cody Northrop
e4ae7ea03e Merge "Add GLES specific setting for layers" 2018-11-04 17:00:46 +00:00
Jeff Sharkey
e4d87cb722 Merge "First pass at APIs for contributing new media." 2018-11-03 19:42:58 +00:00
Jeff Sharkey
c8e4924b57 First pass at APIs for contributing new media.
MediaStore has long suffered from race conditions around creation
of new media.  For example, if developers write raw files before
inserting the MediaStore item, an in-progress media scan might pick
up the file before they could insert it.  Conversely, if developers
insert the item before writing the files, backup apps get confused
about the file not existing yet.

In addition, the new storage model in Q means that apps can't write
raw files directly to disk, so they need to insert the MediaStore
item first.

To solve this collection of issues, this CL introduces first-class
APIs for contribution of new "pending" media, which includes hiding
the pending media until explicitly published.  Apps can safely
resume pending sessions if they crash and restart, which is useful
when the media item is coming from a flaky network.  Apps can also
publish progress information about pending media, such as when a
panorama is taking several seconds to process.

Bug: 115377970
Test: atest MediaProviderTests
Test: atest cts/tests/tests/provider/src/android/provider/cts/MediaStore*
Change-Id: I6adee3c4ad1fb9db94906dd1293caaa1a09c6da0
2018-11-03 12:03:07 -06:00
Amin Shaikh
b49cedf0b3 Deprecated scoped directory access.
- Deprecate StorageVolume#createAccessIntent and
Settings#ACTION_STORAGE_VOLUME_ACCESS_SETTINGS
- Delete StorageVolume#ScopedAccessProviderContract

Bug: 111892460
Test: atest \
	cts/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java \
	cts/tests/tests/os/src/android/os/storage/cts/StorageManagerTest.java \
	cts/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/ScopedDirectoryAccessClientTest.java

Change-Id: I2d0dcc87d5b18a6424cb73384a88cdd2cabe0f4d
2018-11-02 15:13:29 -04:00
TreeHugger Robot
9aab89bd58 Merge "ResetListener in StorageManagerService" 2018-11-02 18:23:49 +00:00
Risan
aec0ee73d7 ResetListener in StorageManagerService
Bug: 110380403
Test: Manual test in ARC++, prototyped a way that reset reaches ARC++
service.
Change-Id: Icc7dcc8b5c726ed9f61226569227c4d47f44b386
2018-11-02 03:42:15 +00:00
Wei Wang
356a75ad94 Add a missing sync to RemoteCallbackList dump
Test: Build and boot
Change-Id: Icda7aa10569c0946bbbf0ed08d04b4d21c53b7aa
2018-11-01 16:07:38 -07:00
Cody Northrop
0fa1d220dc Add GLES specific setting for layers
This allows loading layers for GLES and Vulkan at the
same time by adding a GLES specific setting:

  GPU_DEBUG_LAYERS_GLES

which mirrors the existing setting:

  GPU_DEBUG_LAYERS

The Vulkan and GLES loaders now scan distinct layer
lists, correcting an issue that would prevent Vulkan
from loading when it failed to find GLES layers.

Bug: 110883880
Test: Load a GLES layer when running ANGLE with Vulkan backend
Test: cts-tradefed run singleCommand cts -m CtsGpuToolsHostTestCases
Change-Id: I370be4ce6fdde9e95989eb1f274add8b5790263e
2018-11-01 14:15:44 -06:00
Olivier Gaillard
33c7610814 Merge "Add @CriticalNative to a few Binder methods." 2018-11-01 16:05:10 +00:00
Jeff Sharkey
b8affbd14f Merge "Converge towards consistent modes API." 2018-10-30 16:56:35 +00:00
Misha Wagner
566903ab47 Add class to read per-thread CPU usage from proc filesystem
Reads all thread CPU usage for the current process. This traverses
"/proc/self/task/*/time_in_state" to gather the thread ID and CPU usage
of each child thread. Process name, thread name, and UID are also read from
"/proc" for interpretable data.

Bug: 111534779
Test: Unit test in CpuThreadProcReaderTest

Change-Id: I6c71dde1dfcc9bbb87d95baf0886f9da7a782299
2018-10-30 10:48:27 +00:00
Olivier Gaillard
78ecd34d29 Merge changes I02e88c93,Id0a2f52c
* changes:
  Use the BinderProxy#TransactListener to propagate the UID.
  Adds a mechanism to listen to proxy transact method calls.
2018-10-30 10:27:23 +00:00
Jeff Sharkey
92e9caf7ef Converge towards consistent modes API.
Bug: 111268862
Test: manual
Change-Id: I52e015685cfb424c15fd0266d9f19fd3bfdab971
2018-10-29 18:35:32 -06:00
Jeff Sharkey
669e6b1178 Force apps to request permissions for teamfooding.
To support teamfooding of the new storage privacy features coming
in Q, we need apps to request new AUDIO/VIDEO/IMAGES permissions, but
most of those apps are prebuilts that won't land updates until
several months in the future.

So add system properties so teamfooders can "force" apps to request
these permissions, making them work on Q builds.  Only takes effect
when isolated feature is enabled, and guarded with STOPSHIP to ensure
we remove it.

Here's a typical set of commands to use with this CL:

    adb shell setprop persist.fw.force_legacy 1
    - or -
    adb shell setprop persist.fw.force_audio com.google.android.music
    adb shell setprop persist.fw.force_video com.google.android.apps.photos
    adb shell setprop persist.fw.force_images com.google.android.apps.photos,com.google.android.apps.messaging
    - then -
    adb shell setprop persist.sys.isolated_storage 1
    adb reboot

Bug: 118504670
Test: manual
Change-Id: I631819648334994255256b6046bb4c8aec07ce3a
2018-10-29 15:03:28 -06:00
Olivier Gaillard
def1b90dec Use the BinderProxy#TransactListener to propagate the UID.
PropagateWorkSourceTransactListener intercepts outgoing calls and calls
Binde#setThreadWorkSource.

Also install the listener to system server to propagate the worksource
through binder calls.

Test: manual
Change-Id: I02e88c93eebdf200691dd72b79aa7648f4d85bcb
2018-10-29 17:19:31 +00:00
Olivier Gaillard
510cdfc32c Adds a mechanism to listen to proxy transact method calls.
There are multiple use cases for it:

1) Make it easy for another process to set the worksource. The
worksource can be propagated in a thread local - this is how gmscore and soon
system server works -  the worksource can then be set for all binder
calls using

Object transactStarted() {
    Binder.setWorkSource(ThreadLocalWorkSourceUid.get());
    return null;  // No token needed.
}

void transactEnded() {
    Binder.setWorkSource(null);
}

This will be used by system process and gmscore.

2) SystemUI team was interested in detecting binder calls done from the
main thread in dogfood/tests. This listener will make it easy to figure
out which thread is used.

Performance impact of transact method:
    - With current code: 45ns per call
    - With this code: 57ns per call
This is not significant compared to the total binder call time which is
10-100s of microseconds.

Test: unit test
Change-Id: Id0a2f52cba33b390ff83f703284b79471cc80b1c
2018-10-29 17:19:31 +00:00
Varun Shah
59a1ff3ee7 Merge "Exposes user type related hidden APIs in UserManager." 2018-10-27 02:07:56 +00:00
Jeff Sharkey
5f97b7ee27 Merge "Magic to keep "_data" paths working." 2018-10-26 19:31:08 +00:00
Jeff Sharkey
bc2ae00878 Magic to keep "_data" paths working.
As part of the storage changes in Q, we're removing the ability for
apps to directly access storage devices like /sdcard/.  (Instead,
they'll need to go through ContentResolver.openFileDescriptor() to
gain access.)  However, in several places we're returning raw
filesystem paths in the "_data" column.  An initial attempt to simply
redact these with "/dev/null" shows that many popular apps are
depending on these paths, and become non-functional.

So we need to somehow return "_data" paths that apps can manually
open.  We explored tricks like /proc/self/fd/ and FUSE, but neither
of those are feasible.  Instead, we've created a cursor that returns
paths of this form:

/mnt/content/media/audio/12

And we then hook Libcore.os to intercept open() syscalls made by
Java code and redirect these to CR.openFileDescriptor() with Uris
like this:

content://media/audio/12

This appears to be enough to keep most popular apps working!  Note
that it doesn't support apps that try opening the returned paths
from native code, which we'll hopefully be solving via direct
developer outreach.

Since this feature is a bit risky, it's guarded with a feature flag
that's disabled by default; a future CL will actually enable it,
offering a simple CL to revert in the case of trouble.

Bug: 111268862, 111960973
Test: atest cts/tests/tests/provider/src/android/provider/cts/MediaStore*
Change-Id: Ied15e62b46852aef73725f63d7648da390c4e03e
2018-10-26 09:32:29 -06:00
Sudheer Shanka
2ac25a96e7 Update StorageManagerService handling of packages info.
Instead of maintaining local copy of all appIds and sandboxIds,
StorageManagerService will just get required packages info
from PackageManagerService when an user starts and passes it
to vold.

Bug: 117988901
Test: manual
Change-Id: Ib7411645bd0c5e2801bc998d92fda00bceb9c258
2018-10-25 17:42:20 -07:00
Olivier Gaillard
d8c3df56be Add @CriticalNative to a few Binder methods.
Test: manual
Change-Id: Iea27a6b3c95eb043ff195aefb1bd2a809d9af48d
2018-10-25 18:11:56 +01:00
Misha Wagner
cc065fb95e Modify Process::readProcFile to read in variable size file
The original Process::readProcFile could only read files smaller than 256 bytes.
This change allows the function to read in larger files. For files smaller than
256 bytes, the added cost is only an extra read call, which returns zero.

Documentation has also been added to Process::readProcFile.

Test: Used in change 5168194

Change-Id: I82f27355276e08f96bdb5fe7da49514a87afb429
2018-10-25 10:51:40 +01:00
Olivier Gaillard
35ab42f7a4 Merge "Add WorkSource support to Binder.java." 2018-10-24 07:37:57 +00:00
Varun Shah
e142e33613 Exposes user type related hidden APIs in UserManager.
UserManager#isAdminUser, UserManager#isPrimaryUser,
UserManager#isGuestUser, and UserManager#isRestrictedProfile
are now exposed as System APIs for SUW. All of them require the
MANAGE_USERS permission.

Bug: 115270753
Test: manual (run setup wizard)
Change-Id: I5b9685d486738c3d5a7f5cfa6748adb6efef91bb
2018-10-23 16:23:24 -07:00
Kweku Adams
9b882d88ee Merge "Ability to enter deep Doze immediately in Battery saver." 2018-10-23 17:35:26 +00:00
Kweku Adams
b396ccf969 Ability to enter deep Doze immediately in Battery saver.
This is disabled by default and leaves time (1 min) for processes to
finish running only if there are processes currently running, otherwise,
it goes into deep doze immediately.

Bug: 79955941
Bug: 109934270
Test: Turn on Battery Saver, enable quick doze feature, turn off screen
also run `atest BatterySaverPolicyTest`
also run `atest com.android.server.DeviceIdleControllerTest`
Change-Id: Iec0c8436134e18debfa4c71a8322a6c9cdb10846
2018-10-23 10:32:54 -07:00
Olivier Gaillard
e4ff397f08 Add WorkSource support to Binder.java.
Test: unit test
Change-Id: I6f3507b51a89c35943cc34299d7e364aab337e98
2018-10-23 14:27:34 +01:00
TreeHugger Robot
b3b140770e Merge "Update unknown sources restriction API documentation to clarify device-widedness." 2018-10-22 08:58:46 +00:00
Jeff Sharkey
d2b64d7018 Add ContentProvider.clearCallingIdentity().
ContentProvider has a getCallingPackage() method, which verifies
the remote package name against the current Binder identity.  When a
provider wants to clear that IPC identity, they need to clear both
the Binder state and the ContentProvider.getCallingPackage() state
together, so add methods to facilitate that.

Also fix subtle bug so we don't try translating relative paths.

Bug: 117627072
Test: atest cts/tests/tests/provider/src/android/provider/cts/MediaStore*
Change-Id: Ifa3e1f745334abf625fdcc314b308a047c49ce73
2018-10-20 15:14:22 -06:00
Irina Dumitrescu
0501eeec33 Update unknown sources restriction API documentation to clarify device-widedness.
Test: none.
Bug: 117831202
Change-Id: I2106bb25ce32ade89abb909e0332f1b6d7f1eb58
2018-10-19 23:52:42 +01:00
Michael Groover
3ce26d00f7 Merge "Require READ_PHONE_STATE for DO/PO dev ID access" 2018-10-19 19:15:01 +00:00
Cody Northrop
fdd0229da8 Merge "Find and load ANGLE rules, pass to libEGL" 2018-10-18 21:01:24 +00:00
Cody Northrop
7fd4421f7f Find and load ANGLE rules, pass to libEGL
In order to load a text file from an APK, it must be present
in the assets folder and be uncompressed. The AssetManager can
find assets from any application, so we point it at ANGLE. We
then pass the file descriptor, offset, and size, down to the loader
so it can parse json from the asset.

Bug: 80239516
Test: Manual build, ensure we can inspect rules from modified APK
Test: cts-tradefed run singleCommand cts -m CtsAngleIntegrationHostTestCases
Change-Id: Ib3ecce34b043753b2894915975b6dd8440154ae2
(cherry-picked from commit cfaa0ba52fcf60578acdd64bc4dc9a00f6e300ed)
2018-10-18 09:16:57 -06:00
Jeff Sharkey
0c91451bc8 Catch more invalid file modes.
Bug: 117440225
Test: atest android.os.FileUtilsTest
Change-Id: Id5e8c0869182b6391994dd9266a455dd3152e653
2018-10-17 18:32:27 -06:00
TreeHugger Robot
11f07dec94 Merge "Private DNS: Add user restriction" 2018-10-17 08:36:56 +00:00
Peiyong Lin
88c38eb6fe [GraphicsEnvironment] Add whitelist support.
This patch adds the ability to load whitelist from updatable graphcis driver
apk. Typically a whitelist is part of the graphics driver apk, and the name is
set by overwriting ro.gfx.driver.whitelist.0

BUG: 117241379
Test: Build, flash and boot, whitelist an app and verify.
Change-Id: Ie36ca0173a90a8e48acaca2979ab64bbf92eeaed
2018-10-16 12:54:38 -07:00
Cody Northrop
fba8e6342f Merge "Revert "Revert "Rootless GPU Debug for GLES""" 2018-10-16 18:54:42 +00:00
Cody Northrop
ebe6a56f80 Revert "Revert "Rootless GPU Debug for GLES""
This reverts commit 2653e624dc.

Exempt-From-Owner-Approval: This restores a commit that was already
approved and rolled back for unrelated reasons in frameworks/native.

Test: cts-tradefed run singleCommand cts -m CtsGpuToolsHostTestCases
Test: Chromium starts up
Test: CtsDeqpTestCases:include-filter:dEQP-EGL.*
Test: CtsDeqpTestCases:include-filter:dEQP-GLES2.*
Test: CtsDeqpTestCases:include-filter:dEQP-GLES3.*
Test: CtsDeqpTestCases:include-filter:dEQP-GLES31.*
Bug: 110883880
Bug: 117609555
Change-Id: Iab23a5d598986ba34c0ba62dc78299d022924cd9
2018-10-16 18:51:28 +00:00
Luke Huang
ca4d6f124c Merge "Network-related commands porting" am: 9b20115264 am: 923aa75d75
am: 11454a2163

Change-Id: I61fea40c9659f1eed1638cc196d309289393d6a5
2018-10-16 02:32:50 -07:00
Luke Huang
11454a2163 Merge "Network-related commands porting" am: 9b20115264
am: 923aa75d75

Change-Id: I957050b73afed3e6fde908883568b81198310622
2018-10-16 02:19:35 -07:00
Luke Huang
9b20115264 Merge "Network-related commands porting" 2018-10-16 07:44:37 +00:00
Michael Groover
1905f3f162 Require READ_PHONE_STATE for DO/PO dev ID access
When device identifier access was moved from a runtime permission to a
privileged permission device and profile owner access regressed by no longer
requiring consent to access the identifiers. With this change device and
profile owners will still need to have the READ_PHONE_STATE permission to
access identifiers.

Bug: 117611604
Test: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases \
      -t com.android.cts.devicepolicy.DeviceOwnerTest#testDeviceOwnerCanGetDeviceIdentifiers
Test: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases \
      -t com.android.cts.devicepolicy.ManagedProfileTest#testProfileOwnerCanGetDeviceIdentifiers

Change-Id: Ib2d86440c531eab075d010de183ccfa45c2443e5
2018-10-15 16:45:12 -07:00