Commit Graph

2308 Commits

Author SHA1 Message Date
Dianne Hackborn
4870e9d5eb More work on device idle mode and other power stuff.
Add idle mode support to the alarm manager.  Introduce
a new concept of flags associated with alarms to tell
the alarm manager how to treat the alarm -- they allow
everything from the alarm that will bring us out of idle
mode, to alarms that are allowed when idle or should
also bring us out of idle.  The standalone boolean is
now also a flag.

(Note there is currently no protection from user space
setting the flags however it wants; I will be working
on that in a follow-up change.)

When in idle mode, the alarm manager pushes all alarms
that shouldn't execute during that time over to a
separate list that is not executed until out of idle.
To help with this, I reworked a bit how Alarm objects
are managed, so that when rebatching or moving between
lists we don't have to allocated new objects but can
just use the same existing instance.

Also tweaked the sync manager to deal with idle mode,
which currently just means doing the same thing as when
low on storage -- turning off sync.

Add new ACTION_CHARGING and ACTION_DISCHARGING broadcasts
that apps can listen for to know when the device is actively
charging and discharging.  These are better than the old
POWER_CONNECTED and POWER_DISCONNECTED ones because we only
report charging when we actually see that there is enough
power being provided to charge the battery (and will report
discharging if there is not enough power).

The job controller uses these new actions for scheduling
jobs that want to run while plugged in.  Removed the
"stable charging" stuff while doing so, since the new
charging state serves as an even better signal for that.

Introduced two new process states: FOREGROUND_SERVICE and
TOP_SLEEPING.  This will allow us to treat foreground services
specially (such as still allowing network access to them for
background music playback) while not mixing them together with
whatever happens to be the top activity while the device is
asleep.

Also some other small cleanup here and there.

Change-Id: I7a9808b578bad6f50deb8e1baf919298512a0d3a
2015-04-09 14:05:17 -07:00
Adam Lesinski
e08af19fcc Adding per UID WiFi power distribution.
Change-Id: I88c539074607d7261f6c5cf1dbae47c3cf53f253
2015-04-07 11:37:10 -07:00
Bart Sears
80ac603651 Merge "Revert "Adding per UID WiFi power distribution."" 2015-04-07 06:19:55 +00:00
Bart Sears
e9b9b73ab5 Revert "Adding per UID WiFi power distribution."
This CL is breaking the clockwork settings app in master.  Reverting
until Adam has a chance to investigate.

This reverts commit b943fabfc8.

Change-Id: Ieb11423c11cf9874a6175dce49843d0e1080c590
2015-04-07 06:14:04 +00:00
Jeff Sharkey
b2b9ab8354 Installing packages to expanded storage.
PackageManager now offers to load/unload packages when expanded
volumes are mounted/unmounted.  Expanded storage volumes are still
treated as FLAG_EXTERNAL_STORAGE from a public API point-of-view,
but this change starts treating the INSTALL_EXTERNAL flag as
exclusively meaning ASEC containers.

Start tracking the UUID of the volume where a package is installed,
giving us a quick way to find relevant packages.  When resolving an
install location, look across all expanded volumes and pick the one
with the largest free space.  When upgrading an existing package,
continue preferring the existing volume.  PackageInstaller now knows
how to stage on these volumes.

Add new movePackage() variant that accepts a target volume UUID
as destination, it will eventually move data too.  Expose this
move command through "pm" command for testing.

Automount expanded volumes when they appear.

Bug: 19993667
Change-Id: I9ca2aa328b9977d34e8b3e153db4bea8b8d6f8e3
2015-04-06 21:17:58 -07:00
Adam Lesinski
b943fabfc8 Adding per UID WiFi power distribution.
Change-Id: Ia3d97e0a1c3352127185c18626d8ba8221c9ab40
2015-04-06 18:36:06 -07:00
Jeff Sharkey
16c9c249d5 Fix up ExternalStorageFormatter.
It's not going to be around for much longer, so just fix enough to
work correctly.

Also teach about new "unmountable" state from vold.

Bug: 19993667
Change-Id: Ib72c3e134092b2a895389dd5b056f4bb8043709a
2015-04-04 21:37:47 -07:00
Jeff Sharkey
7151a9a887 Storage methods using IDs, update listeners.
Add StorageManager methods that work with Disk and Volume IDs instead
of paths which can change over time.  For example, a freshly formatted
volume has a different UUID and mount point, even though it's the same
volume.

Update StorageEventListener to be all one-way calls to avoid blocking
while dispatching events.  Add new listener method for Volume-level
state changes.  The existing state method will remain focused on the
per-user state reflected by StorageVolume.  Switch listeners over to
using the more robust RemoteCallbackList pattern under the hood.

Change external ASEC scanning logic in PackageManagerService to be
driven by listener events, instead of explicit MountService calls.

Bug: 19993667
Change-Id: I57c505de260ff1762a78d70d15f1892f40229210
2015-04-04 19:56:00 -07:00
Jeff Sharkey
1b8ef7e316 Parcelable objects for Disk/Volume.
Will eventually be used by SystemUI and/or Settings.

Also fix SettingsProvider NPE.

Bug: 19993667, 19909433
Change-Id: Ie326849ac5f43ee35f728d9cc0e332b72292db70
2015-04-04 14:40:46 -07:00
Kweku Adams
030980a1fb Fixing issue related to printing out of display state and idle mode in the batterystats checkin.
Change-Id: I533bd53f375bf6d9f818a8e8aa75932986ad779b
2015-04-01 16:07:48 -07:00
Jeff Sharkey
4887789e44 Progress towards dynamic storage support.
Storage devices are no longer hard-coded, and instead bubble up from
whatever Disk and VolumeBase that vold uncovered, turning into
sibling Java objects in MountService.  We now treat vold events as
the source-of-truth for state, and synchronize our state by asking
vold to "reset" whenever we reconnect.

We've now moved to a model where all storage devices are mounted in
the root mount namespace (user boundaries protected with GIDs), so
we no longer need app-to-vold path translation.  This also means that
zygote only needs to bind mount the user-specific /mnt/user/n/ path
onto /storage/self/ to make legacy paths like /sdcard work.  This
grealy simplifies a lot of system code.

Many parts of the platform depend on a primary storage device always
being present, so we hack together a stub StorageVolume when vold
doesn't have a volume ready yet.

StorageVolume isn't really a volume anymore; it's the user-specific
view onto a volume, so MountService now filters and builds them
based on the calling user.  StorageVolume is now immutable, making
it easier to reason about.

Environment now builds all of its paths dynamically based on active
volumes.  Adds utility methods to turn int types and flags into
user-readable strings for debugging purposes.

Remove UMS sharing support for now, since no current devices support
it; MTP is the recommended solution going forward because it offers
better multi-user support.

Simplify unmount logic, since vold will now gladly trigger EJECTING
broadcast and kill stubborn processes.

Bug: 19993667
Change-Id: I9842280e61974c91bae15d764e386969aedcd338
2015-03-30 19:46:23 -07:00
Adam Lesinski
4b6bd8d36b Retrieve WiFi info outside of BatteryStatsImpl
In order to not deadlock the system, we need to retrieve
WiFi energy info outside of the BatteryStats lock. We do this,
then pass that data down to BatteryStatsImpl to process.

b/19729960

Change-Id: Ib8beba1d5ac81d89144d502c4b688d0a88c5b102
2015-03-26 17:49:51 -07:00
Dianne Hackborn
73484d8b66 Merge "Battery stats: wakeup alarm tracking, general cleanup." 2015-03-25 21:27:54 +00:00
Bryce Lee
a223d65830 am 3309be5e: am 21b7e6de: am c831b978: Merge "Add isScreenBrightnessBoosted and a broadcast when underlying value changes." into lmp-mr1-modular-dev
* commit '3309be5e7bc782d89adaf4abca5f1f81649c655f':
  Add isScreenBrightnessBoosted and a broadcast when underlying value changes.
2015-03-25 16:52:30 +00:00
Bryce Lee
21b7e6de94 am c831b978: Merge "Add isScreenBrightnessBoosted and a broadcast when underlying value changes." into lmp-mr1-modular-dev
* commit 'c831b978238d5ed200ca329c540eff00faba77e3':
  Add isScreenBrightnessBoosted and a broadcast when underlying value changes.
2015-03-25 16:09:48 +00:00
Bryce Lee
c831b97823 Merge "Add isScreenBrightnessBoosted and a broadcast when underlying value changes." into lmp-mr1-modular-dev 2015-03-25 16:06:17 +00:00
Dianne Hackborn
1e725a7ec9 Battery stats: wakeup alarm tracking, general cleanup.
Instead of just tracking the total number of wakeup alarms
per package, track a count for each tag.  Note this is only
wakeup alarms, not non-wakeup alarms.

Also tighten up the code a bit by exposing the actual ArrayMap
container through most of the BatteryStats API, so we can more
efficiently iterate over them (which is all we ever want to do
with those containers at that point).

Finally remove all printing of "since unplugged" stats, as
another step towards completely removing that tracking.  If
nobody screams, hopefully soon we can go through and just get
rid of all the extra state we are carrying around that is
tracking that data.

Also note that currently the per-tag wakeup alarm data is
being reported in the human-readable stats, but in the checkin
data it is still being rolled up into a single number.  To fix
this, I need to completely rework the pkg entry line to have
separate data for services and wakeup alarms (so have three
types -- pkg for the start of a package, wal for a wakeup
alarm, svc for a service).

Change-Id: I8033acca8742935cfe95511cdea730a405b17cab
2015-03-24 18:29:18 -07:00
Dianne Hackborn
88e98dfa59 More work on device idle mode.
- There is now an API for people to find out about
  its state.
- Moved DeviceIdleController to be closer to the
  power manager implementation, since they are
  closely related.
- Job scheduler now knows about idle state and doesn't
  run jobs while the device is idle.
- Battery stats now keeps track of "idling" vs "idle mode".
  Idling is when we consider the device to be idle,
  independent of whether we are actually in deep idle mode.
  This allows us to keep track of longer-term changes
  independently of cycling in and out of idle mode.
- Battery stats also now keeps track of package changes in
  its daily stats.
- Small optimization to network policy manager service to
  not touch uids that do not have the NETWORK permission.

Change-Id: I0b3304fb3722c78cdfdd0c1eada7369ece7cbcf9
2015-03-24 11:03:49 -07:00
Jeff Sharkey
bf2673384c Merge "Bring MountService into the SystemService world." 2015-03-22 20:03:55 +00:00
Jeff Sharkey
56e629322f Bring MountService into the SystemService world.
Change-Id: I7f7db49ff373b199f7b81f184a7c62bee682af67
2015-03-21 20:41:00 -07:00
Dianne Hackborn
79ec42e6a3 Merge "First stab at device idle mode." 2015-03-19 23:05:16 +00:00
Dianne Hackborn
8ad2af7e5b First stab at device idle mode.
Introduce a new device idle controller service that
monitor's the device state and determines when to go
in to idle mode.  When in idle mode, all we do right
now is turn off network access the same as we do for
power save mode.  Many more things should come in the
future -- stopping the alarm manager from scheduling
(most) alarms, telling GmsCore for it to stop doing
stuff, etc.

Battery stats now has state tracking for devie idle
mode, as well as events for the reasons we can come
out of idle mode (significant motion or the device
becoming active).  Also added new events noting when
packages are installed.

Renamed the "low power" event in battery stats to
"power save" because the former was just way too
confusing.

Finally, fix buffer size reading kernel wake locks.
(Stupidly, just increasing the buffer size.  Ideally
we should try to be smarter and grow our buffer to
fit the data available, but I'll leave that for
another time.)

Change-Id: I0be2062466c83ee9d890c6cf5a228d9cc4090eca
2015-03-19 11:10:55 -07:00
Benjamin Franz
bff46bac80 Add DO policy to disable safe boot mode.
Bug: 19615843
Change-Id: I14dbe911995ec216c57bd285d6b7b04c9684591a
2015-03-19 09:19:18 +00:00
Mathieu Chartier
75f1ba5a81 am f792e016: am 437ac8f8: Merge "Add JIT late override property"
* commit 'f792e01606b988ab84190217529cca53da8db3f5':
  Add JIT late override property
2015-03-18 23:51:12 +00:00
Mathieu Chartier
f792e01606 am 437ac8f8: Merge "Add JIT late override property"
* commit '437ac8f8445b078041171eff56ce7ffbd1cf6766':
  Add JIT late override property
2015-03-18 23:09:21 +00:00
Mathieu Chartier
7a49028aa2 Add JIT late override property
Required for JIT debug property since user builds can't restart
the shell.

Bug: 19735273

Change-Id: I1983852e80010c344b45e0bb459de47c56adfce8
2015-03-18 15:18:52 -07:00
Filip Gruszczynski
a483a1d85e am 81c47fc2: am 86318d76: Merge "Option for going home when going to sleep for devices without physical button." into lmp-mr1-modular-dev
* commit '81c47fc23a0a15dddf37d96d28305e8b5e5ca2da':
  Option for going home when going to sleep for devices without physical button.
2015-03-17 19:06:58 +00:00
Filip Gruszczynski
81c47fc23a am 86318d76: Merge "Option for going home when going to sleep for devices without physical button." into lmp-mr1-modular-dev
* commit '86318d768a2c5043e1261e9daacf1497d1e4a732':
  Option for going home when going to sleep for devices without physical button.
2015-03-17 18:35:17 +00:00
Bryce Lee
84d6c0fbf6 Add isScreenBrightnessBoosted and a broadcast when underlying
value changes.

Bug: 18334219
Change-Id: I20051e97633017711574a063b8061f95c3b616c5
2015-03-17 10:43:08 -07:00
Dianne Hackborn
3d07c94c39 Add new voice request for picking from a list.
Also add API for voice interaction service to control
whether the system should hold a wake lock while it is
working with an activity (and actually *do* hold a wake
lock while doing so, duh!).

And while in there, clean up the launching wake lock to
correctly give blame to the app that is launching.

Change-Id: I7cc4d566b80f59fe0a9ac51ae9bbb7188a01f433
2015-03-16 11:29:12 -07:00
Andreas Gampe
872d191e61 am 8af305f1: am 6878ee57: Merge "Revert "Frameworks/base: Fix a constructor""
* commit '8af305f17ff0d4b84e5a71777de788e9a6ae2780':
  Revert "Frameworks/base: Fix a constructor"
2015-03-16 18:11:47 +00:00
Andreas Gampe
8af305f17f am 6878ee57: Merge "Revert "Frameworks/base: Fix a constructor""
* commit '6878ee57b438b063fcc09a19a04fba92e113c1d2':
  Revert "Frameworks/base: Fix a constructor"
2015-03-16 18:03:17 +00:00
Andreas Gampe
8c80efeaeb Revert "Frameworks/base: Fix a constructor"
The constructor was public API, doh. Gotta do this differently.

This reverts commit 33c5b2a62f.

Change-Id: Iadca87fe6a8866a8bd9d6f2a91578ec0d4c44691
2015-03-16 17:51:01 +00:00
Andreas Gampe
ebb8922a5b am 19279ec0: am d61cbf9a: Merge "Frameworks/base: Fix a constructor"
* commit '19279ec04845b2a47b90240c9d47bf8fb5ece464':
  Frameworks/base: Fix a constructor
2015-03-16 17:13:26 +00:00
Andreas Gampe
19279ec048 am d61cbf9a: Merge "Frameworks/base: Fix a constructor"
* commit 'd61cbf9a08733b45a6aecafffffa60da269a3e1e':
  Frameworks/base: Fix a constructor
2015-03-16 17:03:02 +00:00
Filip Gruszczynski
9779e128d6 Option for going home when going to sleep for devices without physical button.
Bug: 19623388
Change-Id: Iec16f83c64646ded12ec97d4b540510b7f9dfd47
2015-03-16 08:57:17 -07:00
Andreas Gampe
33c5b2a62f Frameworks/base: Fix a constructor
This was meant to be a constructor, according to the comment.

Change-Id: Ief49011b392e58b37d9acb4a3f754f1828b256af
2015-03-15 14:29:16 -07:00
Vinit Deshpande
f5fabf1542 am "Separate NAT from forwarding."
merged from goog/mirror-m-wireless-internal-release
35e36db Separate NAT from forwarding.
2015-03-15 13:40:20 -07:00
Jeff Brown
3e0045e0df Merge "Avoid rebuilding epoll set when PFD status report is done." 2015-03-13 19:12:04 +00:00
Jeff Brown
031b7feb0f Merge "Revert "Revert "Update ParcelFileDescriptor to use non-blocking I/O.""" 2015-03-13 19:11:39 +00:00
Nick Kralevich
d028356056 am 870110e0: am 30fcd2aa: Merge "Drop unusable SELinux APIs."
* commit '870110e01af5c4875a9cf7134cee7c6842fd31af':
  Drop unusable SELinux APIs.
2015-03-13 18:26:20 +00:00
Nick Kralevich
870110e01a am 30fcd2aa: Merge "Drop unusable SELinux APIs."
* commit '30fcd2aa8a87ca97e1d6dbc3203c3a485a56dac9':
  Drop unusable SELinux APIs.
2015-03-13 18:16:58 +00:00
Stephen Smalley
16d1cce8ff Drop unusable SELinux APIs.
setSELinuxEnforce is not allowed by policy.
get/setBooleanValue and getBooleanNames are moot since SELinux
policy booleans are forbidden by CTS.

Change-Id: I512953edd1c38828efce698ae8475603775c32e8
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2015-03-13 14:09:26 -04:00
Dianne Hackborn
484bc6e5a7 Merge "More work on collecting assist data." 2015-03-13 16:41:29 +00:00
Jeff Brown
b2a1985b13 Avoid rebuilding epoll set when PFD status report is done.
If we close the PFD status channel before returning, then the Looper
will take care of unregistering it correctly but it will end up
doing extra work to rebuild the epoll set to work around a limitation
of the epoll interface.  If we unregister the FD first then this
extra work will not be required so it's slightly more efficient
this way.

Bug: 19715279
Change-Id: I0f7b90f3458adf1894b7561c05fa842fdb87b498
2015-03-12 19:52:46 -07:00
Jeff Brown
6fd9f9af2e Revert "Revert "Update ParcelFileDescriptor to use non-blocking I/O.""
This reverts commit 0f0b7f2fb3.
2015-03-12 19:45:47 -07:00
Dianne Hackborn
a83ce1dd2a More work on collecting assist data.
Optimize parceling of AssistData (which is now renamed to
AssistStructure) by pooling duplicated class name strings.

Change text associated with a view node to a CharSequence,
so styling information comes along.

Include global text attributes -- size, colors, etc.

Introduce a new AssistContent structure, which allows us
to propagate information about the intent and data the
activity is looking at.  This further allows us to propagate
permission grants, so the assistant can dig in to that data.
The default implementation propagates the base intent of an
activity, so if for example you bring up the assistant while
doing a share the assistant itself has the same information
and access that was given to the share activity (so it could
for example share it in another way if it wanted to).

Did some optimization of loading PersistableBundle from xml,
to avoid duplicating hash maps and such.

Changed how we dispatch ACTION_ASSIST to no longer include
the more detailed AssistStructure (and new AssistContent)
data when launching; now the example code that intercepts
that needs to be sure to ask for assist data when it starts
its session.  This is more like it will finally be, and allows
us to get to the UI more quickly.

Change-Id: I88420a55761bf48d34ce3013e81bd96a0e087637
2015-03-12 17:07:51 -07:00
Jeff Brown
0f0b7f2fb3 Revert "Update ParcelFileDescriptor to use non-blocking I/O."
Bug: 19715279
This reverts commit a34a3bdcbf.

Change-Id: Ief03dee1c0a2b4d906797a5c279663c17439c347
2015-03-12 21:25:00 +00:00
Jeff Brown
a34a3bdcbf Update ParcelFileDescriptor to use non-blocking I/O.
Avoids spinning up a thread just to watch a file descriptor.

Bug: 10349083
Change-Id: I814cb252f075d7a162e1286bbfd1dbec28d17796
2015-03-11 15:37:21 -07:00
Jeff Brown
dc3eb4bf91 Add support for non-blocking I/O with Looper.
Bug: 10349083
Change-Id: I4a94b1eac53df57c05103913bd593d92b1e062d7
2015-03-11 15:00:35 -07:00