summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android Build Merger (Role) <noreply-android-build-merger@google.com> 2019-06-27 08:24:41 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-06-27 08:24:41 +0000
commit4702abe3ab1dbcf1eb22ff7338365442e33bbf8b (patch)
treee11a7d5d6f2e02d9f8f3352392c78e28a980ef19
parent1326d6cfa1db3ee3efefca0f8d2ea0a8e4d0e037 (diff)
parent02a536865ad5bb555c9638733a275d86d8c29cf4 (diff)
Merge "Merge "Avoid stuck wake-locks" into qt-dev am: 13775aa4bb" into qt-dev-plus-aosp
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java25
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java10
2 files changed, 23 insertions, 12 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java b/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java
index bebc20b116a3..775a3ab3360c 100644
--- a/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java
+++ b/packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java
@@ -31,6 +31,11 @@ public interface WakeLock {
static final String REASON_WRAP = "wrap";
/**
+ * Default wake-lock timeout, to avoid battery regressions.
+ */
+ long DEFAULT_MAX_TIMEOUT = 20000;
+
+ /**
* @param why A tag that will be saved for sysui dumps.
* @see android.os.PowerManager.WakeLock#acquire()
**/
@@ -46,7 +51,14 @@ public interface WakeLock {
Runnable wrap(Runnable r);
static WakeLock createPartial(Context context, String tag) {
- return wrap(createPartialInner(context, tag));
+ return createPartial(context, tag, DEFAULT_MAX_TIMEOUT);
+ }
+
+ /**
+ * Creates a {@link WakeLock} that has a default release timeout.
+ * @see android.os.PowerManager.WakeLock#acquire(long) */
+ static WakeLock createPartial(Context context, String tag, long maxTimeout) {
+ return wrap(createPartialInner(context, tag), maxTimeout);
}
@VisibleForTesting
@@ -66,7 +78,14 @@ public interface WakeLock {
};
}
- static WakeLock wrap(final PowerManager.WakeLock inner) {
+ /**
+ * Create a {@link WakeLock} containing a {@link PowerManager.WakeLock}.
+ * @param inner To be wrapped.
+ * @param maxTimeout When to expire.
+ * @return The new wake lock.
+ */
+ @VisibleForTesting
+ static WakeLock wrap(final PowerManager.WakeLock inner, long maxTimeout) {
return new WakeLock() {
private final HashMap<String, Integer> mActiveClients = new HashMap<>();
@@ -74,7 +93,7 @@ public interface WakeLock {
public void acquire(String why) {
mActiveClients.putIfAbsent(why, 0);
mActiveClients.put(why, mActiveClients.get(why) + 1);
- inner.acquire();
+ inner.acquire(maxTimeout);
}
/** @see PowerManager.WakeLock#release() */
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java
index 66eb29964116..3357be8c8b84 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java
@@ -42,7 +42,7 @@ public class WakeLockTest extends SysuiTestCase {
@Before
public void setUp() {
mInner = WakeLock.createPartialInner(mContext, WakeLockTest.class.getName());
- mWakeLock = WakeLock.wrap(mInner);
+ mWakeLock = WakeLock.wrap(mInner, 20000);
}
@After
@@ -70,14 +70,6 @@ public class WakeLockTest extends SysuiTestCase {
}
@Test
- public void wakeLock_refCounted() {
- mWakeLock.acquire(WHY);
- mWakeLock.acquire(WHY);
- mWakeLock.release(WHY);
- assertTrue(mInner.isHeld());
- }
-
- @Test
public void wakeLock_wrap() {
boolean[] ran = new boolean[1];