From 738ffdc9da55db3127146df1b3fcb15b5163a335 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Wed, 16 Oct 2013 10:57:05 -0700 Subject: [PATCH] Add a method to set a list of uids for a wake lock Cherrypicked from master. b/9464621 Change-Id: Ia6a9d36d55129ae87d3ec070fbf10dc02f4b6cb4 --- core/java/android/os/IPowerManager.aidl | 3 ++- .../android/server/power/PowerManagerService.java | 15 +++++++++++++++ .../bridge/android/BridgePowerManager.java | 5 +++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl index 4c7bbb48f52b2..56176a479fb37 100644 --- a/core/java/android/os/IPowerManager.aidl +++ b/core/java/android/os/IPowerManager.aidl @@ -23,11 +23,12 @@ import android.os.WorkSource; interface IPowerManager { - // WARNING: The first three methods must remain the first three methods because their + // WARNING: The first four methods must remain the first three methods because their // transaction numbers must not change unless IPowerManager.cpp is also updated. void acquireWakeLock(IBinder lock, int flags, String tag, String packageName, in WorkSource ws); void acquireWakeLockWithUid(IBinder lock, int flags, String tag, String packageName, int uidtoblame); void releaseWakeLock(IBinder lock, int flags); + void updateWakeLockUids(IBinder lock, in int[] uids); void updateWakeLockWorkSource(IBinder lock, in WorkSource ws); boolean isWakeLockLevelSupported(int level); diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java index 8fbde14897e84..da9548f7266e0 100644 --- a/services/java/com/android/server/power/PowerManagerService.java +++ b/services/java/com/android/server/power/PowerManagerService.java @@ -746,6 +746,21 @@ public final class PowerManagerService extends IPowerManager.Stub } } + @Override // Binder call + public void updateWakeLockUids(IBinder lock, int[] uids) { + WorkSource ws = null; + + if (uids != null) { + ws = new WorkSource(); + // XXX should WorkSource have a way to set uids as an int[] instead of adding them + // one at a time? + for (int i = 0; i < uids.length; i++) { + ws.add(uids[i]); + } + } + updateWakeLockWorkSource(lock, ws); + } + @Override // Binder call public void updateWakeLockWorkSource(IBinder lock, WorkSource ws) { if (lock == null) { diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePowerManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePowerManager.java index a8b58aaff20a5..281337c5caa11 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePowerManager.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePowerManager.java @@ -80,6 +80,11 @@ public class BridgePowerManager implements IPowerManager { // pass for now. } + @Override + public void updateWakeLockUids(IBinder arg0, int[] arg1) throws RemoteException { + // pass for now. + } + @Override public void setAttentionLight(boolean arg0, int arg1) throws RemoteException { // pass for now.