Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a0825e5 authored by Sindhu's avatar Sindhu
Browse files

Release DelayedWakelock on background thread

Test: Manually tested by flashing the device locally
Bug: b/316128516
Flag: NA
Change-Id: Ifac6a522344ec5a4da51e9edaa341f874b738440
parent c60fd3af
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -18,10 +18,7 @@ package com.android.systemui.doze.dagger;

import android.content.Context;
import android.hardware.Sensor;
import android.os.Handler;

import com.android.systemui.res.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.doze.DozeAuthRemover;
import com.android.systemui.doze.DozeBrightnessHostForwarder;
@@ -40,6 +37,7 @@ import com.android.systemui.doze.DozeTransitionListener;
import com.android.systemui.doze.DozeTriggers;
import com.android.systemui.doze.DozeUi;
import com.android.systemui.doze.DozeWallpaperState;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.policy.DevicePostureController;
import com.android.systemui.util.sensors.AsyncSensorManager;
@@ -75,9 +73,8 @@ public abstract class DozeModule {

    @Provides
    @DozeScope
    static WakeLock providesDozeWakeLock(DelayedWakeLock.Builder delayedWakeLockBuilder,
            @Main Handler handler) {
        return delayedWakeLockBuilder.setHandler(handler).setTag("Doze").build();
    static WakeLock providesDozeWakeLock(DelayedWakeLock.Factory delayedWakeLockFactory) {
        return delayedWakeLockFactory.create("Doze");
    }

    @Provides
+2 −2
Original line number Diff line number Diff line
@@ -298,7 +298,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
            DozeParameters dozeParameters,
            AlarmManager alarmManager,
            KeyguardStateController keyguardStateController,
            DelayedWakeLock.Builder delayedWakeLockBuilder,
            DelayedWakeLock.Factory delayedWakeLockFactory,
            Handler handler,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            DockManager dockManager,
@@ -328,7 +328,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
        mScreenOffAnimationController = screenOffAnimationController;
        mTimeTicker = new AlarmTimeout(alarmManager, this::onHideWallpaperTimeout,
                "hide_aod_wallpaper", mHandler);
        mWakeLock = delayedWakeLockBuilder.setHandler(mHandler).setTag("Scrims").build();
        mWakeLock = delayedWakeLockFactory.create("Scrims");
        // Scrim alpha is initially set to the value on the resource but might be changed
        // to make sure that text on top of it is legible.
        mDozeParameters = dozeParameters;
+16 −45
Original line number Diff line number Diff line
@@ -19,7 +19,11 @@ package com.android.systemui.util.wakelock;
import android.content.Context;
import android.os.Handler;

import javax.inject.Inject;
import com.android.systemui.dagger.qualifiers.Background;

import dagger.assisted.Assisted;
import dagger.assisted.AssistedFactory;
import dagger.assisted.AssistedInject;

/**
 * A wake lock that has a built in delay when releasing to give the framebuffer time to update.
@@ -32,9 +36,11 @@ public class DelayedWakeLock implements WakeLock {
    private final Handler mHandler;
    private final WakeLock mInner;

    public DelayedWakeLock(Handler h, WakeLock inner) {
        mHandler = h;
        mInner = inner;
    @AssistedInject
    public DelayedWakeLock(@Background Handler handler, Context context, WakeLockLogger logger,
            @Assisted String tag) {
        mInner = WakeLock.createPartial(context, logger, tag);
        mHandler = handler;
    }

    @Override
@@ -58,46 +64,11 @@ public class DelayedWakeLock implements WakeLock {
    }

    /**
     * An injectable builder for {@see DelayedWakeLock} that has the context already filled in.
     */
    public static class Builder {
        private final Context mContext;
        private final WakeLockLogger mLogger;
        private String mTag;
        private Handler mHandler;

        /**
         * Constructor for DelayedWakeLock.Builder
     * Factory to create the instance of DelayedWakeLock class.
     */
        @Inject
        public Builder(Context context, WakeLockLogger logger) {
            mContext = context;
            mLogger = logger;
        }

        /**
         * Set the tag for the WakeLock.
         */
        public Builder setTag(String tag) {
            mTag = tag;

            return this;
        }

        /**
         * Set the handler for the DelayedWakeLock.
         */
        public Builder setHandler(Handler handler) {
            mHandler = handler;

            return this;
        }

        /**
         * Build the DelayedWakeLock.
         */
        public DelayedWakeLock build() {
            return new DelayedWakeLock(mHandler, WakeLock.createPartial(mContext, mLogger, mTag));
        }
    @AssistedFactory
    public interface Factory {
        /** creates the instance of DelayedWakeLock class. */
        DelayedWakeLock create(String tag);
    }
}
 No newline at end of file
+4 −9
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Handler;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.util.MathUtils;
@@ -134,7 +133,7 @@ public class ScrimControllerTest extends SysuiTestCase {
    @Mock private AlarmManager mAlarmManager;
    @Mock private DozeParameters mDozeParameters;
    @Mock private LightBarController mLightBarController;
    @Mock private DelayedWakeLock.Builder mDelayedWakeLockBuilder;
    @Mock private DelayedWakeLock.Factory mDelayedWakeLockFactory;
    @Mock private DelayedWakeLock mWakeLock;
    @Mock private KeyguardStateController mKeyguardStateController;
    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@@ -260,11 +259,7 @@ public class ScrimControllerTest extends SysuiTestCase {
        }).when(mLightBarController).setScrimState(
                any(ScrimState.class), anyFloat(), any(GradientColors.class));

        when(mDelayedWakeLockBuilder.setHandler(any(Handler.class)))
                .thenReturn(mDelayedWakeLockBuilder);
        when(mDelayedWakeLockBuilder.setTag(any(String.class)))
                .thenReturn(mDelayedWakeLockBuilder);
        when(mDelayedWakeLockBuilder.build()).thenReturn(mWakeLock);
        when(mDelayedWakeLockFactory.create(any(String.class))).thenReturn(mWakeLock);
        when(mDockManager.isDocked()).thenReturn(false);

        when(mKeyguardTransitionInteractor.transition(any(), any()))
@@ -279,7 +274,7 @@ public class ScrimControllerTest extends SysuiTestCase {
                mDozeParameters,
                mAlarmManager,
                mKeyguardStateController,
                mDelayedWakeLockBuilder,
                mDelayedWakeLockFactory,
                new FakeHandler(mLooper.getLooper()),
                mKeyguardUpdateMonitor,
                mDockManager,
@@ -987,7 +982,7 @@ public class ScrimControllerTest extends SysuiTestCase {
                mDozeParameters,
                mAlarmManager,
                mKeyguardStateController,
                mDelayedWakeLockBuilder,
                mDelayedWakeLockFactory,
                new FakeHandler(mLooper.getLooper()),
                mKeyguardUpdateMonitor,
                mDockManager,