Now that we're treating storage as a runtime permission, we need to
grant read/write access without killing the app. This is really
tricky, since we had been using GIDs for access control, and they're
set in stone once Zygote drops privileges.
The only thing left that can change dynamically is the filesystem
itself, so let's do that. This means changing the FUSE daemon to
present itself as three different views:
/mnt/runtime_default/foo - view for apps with no access
/mnt/runtime_read/foo - view for apps with read access
/mnt/runtime_write/foo - view for apps with write access
There is still a single location for all the backing files, and
filesystem permissions are derived the same way for each view, but
the file modes are masked off differently for each mountpoint.
During Zygote fork, it wires up the appropriate storage access into
an isolated mount namespace based on the current app permissions. When
the app is granted permissions dynamically at runtime, the system
asks vold to jump into the existing mount namespace and bind mount
the newly granted access model into place.
Bug: 21858077
Change-Id: I62fb25d126dd815aea699b33d580e3afb90f8fd2
If the profile owner sets ALLOW_PARENT_APP_LINKING:
ACTION_VIEW, scheme http/https intents sent from the work profile
can be resolved by personal apps if they specify a host.
BUG:21701782
Change-Id: I372e2405345539eac9d6b4fb08def6bf84da14a6
When we forget a private partition, ask vold to also forget the key
for that partition GUID. This means we need to track both the
filesystem UUID and the partition GUID for a private volume.
Bug: 21782268
Change-Id: Icda1cbb65539d61dacc663428daf3d1a2e4c313e
The doze wake lock is an internal implementation detail with no
power impact. However the draw wake lock is much more interesting
to track because it's essentially like a special purpose partial
wake lock which may be acquired while dozing.
Bug: 21949905
Change-Id: Iedd5f366eb010a47a9691374c5cd3d85ea68173d
Doze wake locks don't actually hold the CPU awake, so we should record them
separately from full wakelocks, which is what we did before.
Bug:21949905
Change-Id: Ib4db3399069e0ad11f1f0dc6925a87ad0ad21ff9
Rework how we record active transitions in battery stats to be
more general, and add an API that others can call in to
DeviceIdleController to request that we go out of idle mode.
use this for VOICE_SEARCH_HANDS_FREE.
Change-Id: Ie58de60e63036a4142881283835961fbcceec892
We used to give 50% of the cpu time of each app to any app holding a wakelock
while the screen is off.
Since we switched to the new kernel module for measuring app's cpu time, this distribution
was lost.
Bug:21876567
Change-Id: I42c294547f63d150d9929271ca0e27fedaaa9d77
This is an attempt to speed up getting out of device idle. It groups
uid firewall rules in these child chains so we can attach/detach a whole
chain instead of individual uid rules.
BUG:21446713
Change-Id: Ie8f392da2deabe7cc86a9ecf4ed080163861d41e
Looks like we were losing some power calculations from the CPU side of Bluetooth and
WiFi if there was no controller activity ocurring.
Also add finer breakdown of power to BatteryStats dumpsys for WiFi and Bluetooth.
Change-Id: Ic3ce3e4e3b854f17f9a32fd4bdc47a8ea74ca439
Also reduce idle checks to the target user if possible.
Optimized calls to some internal methods
Bug: 21639147
Change-Id: If1faf26f862e5c4ca905f2603a4ba52a8d1af954
ext4 filenames are at most 255 bytes. vfat filenames are bit more
lax, but we're often saving them on ext4 through a FUSE daemon, so
limit them the same way.
Since package names are used as directory names, verify that they're
valid filenames.
Tests to verify behavior.
Bug: 18689171
Change-Id: If7df4c40d352954510b71de4ff05d78259c721ed
Issue #21039494: API Review: android.os.PowerManager.isDeviceIdleMode()
Issue #21347000: API Review: android.content.IntentFilter
Issue #20654534: API Review: android.app.assist
Also allow use of ActivityManager.setWatchHeapLimit on any platform
build as long as the calling app is debuggable.
Change-Id: Ic597e596fa772fcdf2553b64f444b3d9269e8b92
Add a public method to Process to query whether the current runtime
is running in 64-bit mode.
Bug: 21069469
Change-Id: Ifaf4251f05bbe5eba135fa977190e475632856bd
When the socketpair communication channel was added to
ParcelFileDescriptor, the CREATOR method for DropBoxManager.Entry was
not updated to read the extra fd from the Parcel. This was causing reads
to end too early.
Also removed comments referring to the now-deleted native methods in
the native Parcel implementation.
Change-Id: I49a9691da6ea927382ceb2fcbfdc7985a601111b
(cherry picked from commit ba953230f7)