diff options
| author | 2019-06-27 08:24:41 +0000 | |
|---|---|---|
| committer | 2019-06-27 08:24:41 +0000 | |
| commit | 4702abe3ab1dbcf1eb22ff7338365442e33bbf8b (patch) | |
| tree | e11a7d5d6f2e02d9f8f3352392c78e28a980ef19 | |
| parent | 1326d6cfa1db3ee3efefca0f8d2ea0a8e4d0e037 (diff) | |
| parent | 02a536865ad5bb555c9638733a275d86d8c29cf4 (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.java | 25 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java | 10 |
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]; |