Commit Graph

2334 Commits

Author SHA1 Message Date
Jeff Sharkey
bd3af28fdc Merge "Candidate volumes for packages, fix symlink." 2015-04-16 05:50:16 +00:00
Jeff Sharkey
e2d45be4da Candidate volumes for packages, fix symlink.
Add API to determine the possible candidate volumes that a package
can be moved to.  For example, it currently knows that we need to
move ASEC-based apps through internal storage before migrating them
to a private volume.

Comparator for consistent VolumeInfo ordering when displayed in UI.

Fix native library symlink to be volume UUID aware.

Bug: 19993667
Change-Id: I68d5fac5f0f776ac1c7dd15e7a984bfe2704f3f7
2015-04-15 22:21:49 -07:00
Wale Ogunwale
ad83f87bcf Merge "@hide Binder#blockUntilThreadAvailable API" 2015-04-15 17:38:17 +00:00
Wale Ogunwale
8d90634aab @hide Binder#blockUntilThreadAvailable API
Bug: 19297165
Change-Id: I15f1139330830b95d7078a5eedd6def794cca6a7
2015-04-15 09:10:03 -07:00
Wale Ogunwale
cc3c34c967 Merge "Added watchdog monitor for Binder threads availability." 2015-04-15 12:35:34 +00:00
Jeff Sharkey
9f09b2d93f Merge "Persist nickname and flags for volumes." 2015-04-15 05:03:08 +00:00
Jeff Sharkey
d95d3bfb2b Persist nickname and flags for volumes.
StorageManager now offers to persist a nickname and user flags for
active volumes.  This metadata is kept around and spliced into
any future VolumeInfo when the same UUID is present.  Current user
flags indicate "initialized" and "snoozed" states to control how
notifications are shown.

Notify listeners when metadata changes, and kick public notification
after a volume is initialized.  Make unique PendingIntents when
multiple volumes are active.

Beginnings of plumbing to ask for missing volumes.

Offer explicit accessors for VolumeInfo and DiskInfo to give better
path to documentation and deprecation.

Bug: 19993667
Change-Id: I3d8b68be83f43ba992d21d51cad5b775776d681c
2015-04-14 21:39:47 -07:00
Wale Ogunwale
d7fdd0228e Added watchdog monitor for Binder threads availability.
The watchdog will trigger if all binder threads in the system_server
are stuck for a long time (1min) preventing the process from
handling additional IPC requests.

Bug: 19297165
Change-Id: I5909a9c230bf23917feaed53f2b54bd50425bf3c
2015-04-14 21:28:34 -07:00
Hiroshi Yamauchi
c969424772 am 4bb374bb: am d83a598c: am 82992b72: Merge "Fix javadoc error in Debug.getRuntimeStats()."
* commit '4bb374bb359c01055ad1f35a9424a12dcadd2d2b':
  Fix javadoc error in Debug.getRuntimeStats().
2015-04-15 00:40:27 +00:00
Hiroshi Yamauchi
d83a598c39 am 82992b72: Merge "Fix javadoc error in Debug.getRuntimeStats()."
* commit '82992b7270842637d1af3dcc7c9ae954bdfa312c':
  Fix javadoc error in Debug.getRuntimeStats().
2015-04-15 00:11:01 +00:00
Jeff Sharkey
56bd312913 Checkpoint of storage notifications.
Rewrite of storage notifications to support multiple disks/volumes,
handling the state of each independently.  Update strings to match
spec.  Include actions to jump into wizard when adoptable, otherwise
browse or eject.

Move browse intent creation to common place on VolumeInfo.  Also add
well-formed extra names.  VolumeInfo now carries the parent disk ID
along with it to avoid races when unmounting.

Bug: 19993667
Change-Id: I236ddc7f8112490355f438b828bec8d40c331fdd
2015-04-14 16:46:27 -07:00
Hiroshi Yamauchi
d8001676ea Fix javadoc error in Debug.getRuntimeStats().
Bug: 19825248
Change-Id: Id7131732d30f01c3edd01c6d4c7c391095ffd054
2015-04-14 16:08:49 -07:00
Hiroshi Yamauchi
f8a713309a am d9e0abdf: am 04143fdd: am e38ee9df: Merge "Add Debug.getRuntimeStat()."
* commit 'd9e0abdf85ad11a9689d3ded79745fe318e82971':
  Add Debug.getRuntimeStat().
2015-04-14 19:48:19 +00:00
Hiroshi Yamauchi
04143fdd55 am e38ee9df: Merge "Add Debug.getRuntimeStat()."
* commit 'e38ee9df26c93415303152ec3f6ed50d847557c8':
  Add Debug.getRuntimeStat().
2015-04-14 19:26:51 +00:00
Hiroshi Yamauchi
8b5a293d09 Add Debug.getRuntimeStat().
Export runtime stats (currently GC stats) through this method.

Bug: 19825248
Change-Id: I147a0e9bc6bdfe4dc29d74e44f0af6349c51d9f8
2015-04-14 10:33:10 -07:00
Dianne Hackborn
1e38382b54 Fixes to idle alarm scheduling, package importance.
- Add new API to ask the activity manager what the current
  importance of a particular package name is (along with a few
  new useful importance levels).

- Fix my last alarm manager change to actually execute the
  alarms we have now decided should run even while we are idle.

Change-Id: I1f14712b4e390770d53b185c96a1b36f6aadd687
2015-04-14 10:01:24 -07:00
Jeff Brown
fb1e9b7978 Merge "Set initial screen brightness earlier in the boot process." 2015-04-13 18:20:00 +00:00
Fyodor Kupolov
05ce40e1af Merge "Use UserHandle instead of int for public APIs" 2015-04-13 16:33:10 +00:00
Fyodor Kupolov
385de624aa Use UserHandle instead of int for public APIs
Bug: 20049349
Change-Id: If5671fb47aa9a3cffebff16787daeae9ca7361e8
2015-04-13 09:31:16 -07:00
Jeff Brown
5d6443bf7c Set initial screen brightness earlier in the boot process.
Previously we had to wait for systemReady before setting the brightness
due to the order in which the display power controller was initialized.
Unfortunately it could take us a rather long time to reach that stage,
particularly after an OTA where the screen would remain at maximum
brightness for minutes while "Optimizing Apps".

This change moves the brightness backlight setting code deeper
into the display manager which has a couple of nice side-benefits
in that it now becomes much easier to coordinate display power mode
changes with display backlight changes.  So this change also resolves
some issued with changing the backlight while in DOZE_SUSPEND and
ensuring that backlight changes generally end up being performed
before executing a power mode change except in the case where the
display needs to come out of suspend first.  (So now the backlight
will be set before entering DOZE from the ON state.)

Deleted some dead code in LightService which was in the way.

Bug: 19029490
Change-Id: I494b5223e676248daf2ff8be3ec338845977f73c
2015-04-13 01:51:22 -07:00
Jeff Sharkey
59d577a518 Browse mode for DocumentsUI, removed volume state.
The existing management mode is too specific, and requires that
storage backends add queryChildDocumentsForManage(), etc.  Instead,
to offer more natural browsing support, add a new BROWSE_ROOT intent.

It behaves mostly like MANAGE_ROOT, except that it doesn't mutate
its Uris with setManageMode(), and it shortcuts straight to VIEW on
clicked documents.

It can be launched like this:

$ adb shell am start -a android.provider.action.BROWSE_ROOT
    -d content://com.android.externalstorage.documents/root/8405-1DFB
    -c android.intent.category.DEFAULT

Also rename a MetricsConstants to make it clearer, and don't
auto-mount all emulated volumes.

Fix bugs around parceling of DiskInfo/VolumeInfo.  Method to resolve
the best description for a VolumeInfo, which might need to fall
back to DiskInfo.

Add back "removed" volume state so we send broadcast when a volume
is destroyed, matching the expected public API behavior.

Bug: 19993667
Change-Id: I13aff32c5e11dfc63da44aee9e93a27f4690a43f
2015-04-12 16:03:50 -07:00
Fyodor Kupolov
2e29aa5ea7 Merge "Added getUserCreationTime to query user/profile creation time" 2015-04-10 23:33:29 +00:00
Adam Lesinski
1739076ef9 Fix deadlock issue in BatteryStatsHelper.
It was assumed that BatteryStatsHelper could safely call into system services.
Because it is used when dumping information from the BatteryStatsService,
this assumption was incorrect.

Now the BatteryStats object carries around the state of the energy reporting
for Bluetooth and WiFi, so BatteryStatsHelper avoids a query into WiFiManager.

b/19729960

Change-Id: I8745cf6aafeea8e862e34fe63b20056f6ba54b40
2015-04-10 13:17:47 -07:00
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
Fyodor Kupolov
ff7233e2e3 Added getUserCreationTime to query user/profile creation time
Added public api to query creation time of the user or of a managed profile
associated with the calling user.

Bug: 20049349
Change-Id: I7f9263fe434233e6f7d4f165c974cab64ca7107c
2015-04-08 11:28:52 -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
Olawale Ogunwale
5670d9a250 am 4af5bd7c: Merge "Add ProcessInfoService to activity manager."
* commit '4af5bd7cdaccdba6001a384a81c258f542e74075':
  Add ProcessInfoService to activity manager.
2015-03-30 23:25:15 +00:00
Ruben Brunk
e1e1969c96 Add ProcessInfoService to activity manager.
- Adds a new AIDL interface for querying process
  information from activity manager.

Bug: 19186859
Change-Id: Ic08858f346d6b66e7bfc9da6faa2c6e38d9b2e82
2015-03-30 12:20:16 -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