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

Commit e43903e3 authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "Make ScrimController Injectable."

parents f82982ad a874996a
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -118,8 +118,10 @@ import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
@@ -154,6 +156,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
    private static final float FLING_ANIMATION_MAX_TIME = 0.5f;
    // acceleration rate for the fling animation
    private static final float FLING_SPEED_UP_FACTOR = 0.6f;
    private final ScrimController mScrimController;

    private float mOpeningVelocity = DEFAULT_FLING_VELOCITY;
    private float mClosingVelocity = DEFAULT_FLING_VELOCITY;
@@ -310,7 +313,9 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
            StatusBarWindowController statusBarWindowController,
            StatusBarWindowViewController.Builder statusBarWindowViewControllerBuild,
            NotifLog notifLog,
            DozeParameters dozeParameters) {
            DozeParameters dozeParameters,
            ScrimController scrimController,
            Lazy<LockscreenWallpaper> lockscreenWallpaperLazy) {
        super(
                context,
                featureFlags,
@@ -368,8 +373,11 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
                statusBarWindowController,
                statusBarWindowViewControllerBuild,
                notifLog,
                dozeParameters);
                dozeParameters,
                scrimController,
                lockscreenWallpaperLazy);
        mNavigationBarController = navigationBarController;
        mScrimController = scrimController;
    }

    @Override
+16 −2
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.app.AlarmManager;
import android.app.IActivityManager;
import android.app.INotificationManager;
import android.app.IWallpaperManager;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.res.Resources;
import android.hardware.SensorPrivacyManager;
@@ -95,7 +96,7 @@ public class DependencyProvider {
    @Singleton
    @Provides
    @Named(TIME_TICK_HANDLER_NAME)
    public Handler provideHandler() {
    public Handler provideTimeTickHandler() {
        HandlerThread thread = new HandlerThread("TimeTick");
        thread.start();
        return new Handler(thread.getLooper());
@@ -133,6 +134,12 @@ public class DependencyProvider {
        return new Handler(mainLooper);
    }

    /** */
    @Provides
    public Handler provideHandler() {
        return new Handler();
    }

    @Singleton
    @Provides
    public DataSaverController provideDataSaverController(NetworkController networkController) {
@@ -297,11 +304,18 @@ public class DependencyProvider {

    /** */
    @Provides
    public IWallpaperManager provideWallPaperManager() {
    @Nullable
    public IWallpaperManager provideIWallpaperManager() {
        return IWallpaperManager.Stub.asInterface(
                ServiceManager.getService(Context.WALLPAPER_SERVICE));
    }

    /** */
    @Provides
    public WallpaperManager providesWallpaperManager(Context context) {
        return (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE);
    }

    /** */
    @Provides
    public WindowManager providesWindowManager(Context context) {
+0 −19
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui;

import android.annotation.NonNull;
import android.app.AlarmManager;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
@@ -25,8 +24,6 @@ import android.util.Log;
import android.view.ViewGroup;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.util.function.TriConsumer;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.ViewMediatorCallback;
@@ -35,22 +32,16 @@ import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.LockIcon;
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationIconAreaController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ScrimState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;

import java.util.function.Consumer;

import dagger.Module;
import dagger.Provides;

@@ -143,16 +134,6 @@ public class SystemUIFactory {
                new Handler(Looper.getMainLooper()));
    }

    public ScrimController createScrimController(ScrimView scrimBehind, ScrimView scrimInFront,
            ScrimView scrimForBubble,
            LockscreenWallpaper lockscreenWallpaper,
            TriConsumer<ScrimState, Float, GradientColors> scrimStateListener,
            Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters,
            AlarmManager alarmManager, KeyguardStateController keyguardStateController) {
        return new ScrimController(scrimBehind, scrimInFront, scrimForBubble, scrimStateListener,
                scrimVisibleListener, dozeParameters, alarmManager, keyguardStateController);
    }

    public NotificationIconAreaController createNotificationIconAreaController(Context context,
            StatusBar statusBar,
            NotificationWakeUpCoordinator wakeUpCoordinator,
+16 −12
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.doze;

import android.annotation.Nullable;
import android.app.AlarmManager;
import android.app.Application;
import android.app.IWallpaperManager;
@@ -54,14 +55,17 @@ public class DozeFactory {
    private final DockManager mDockManager;
    private final IWallpaperManager mWallpaperManager;
    private final ProximitySensor mProximitySensor;
    private final DelayedWakeLock.Builder mDelayedWakeLockBuilder;
    private final Handler mHandler;

    @Inject
    public DozeFactory(FalsingManager falsingManager, DozeLog dozeLog,
            DozeParameters dozeParameters, BatteryController batteryController,
            AsyncSensorManager asyncSensorManager, AlarmManager alarmManager,
            WakefulnessLifecycle wakefulnessLifecycle, KeyguardUpdateMonitor keyguardUpdateMonitor,
            DockManager dockManager, IWallpaperManager wallpaperManager,
            ProximitySensor proximitySensor) {
            DockManager dockManager, @Nullable IWallpaperManager wallpaperManager,
            ProximitySensor proximitySensor,
            DelayedWakeLock.Builder delayedWakeLockBuilder, Handler handler) {
        mFalsingManager = falsingManager;
        mDozeLog = dozeLog;
        mDozeParameters = dozeParameters;
@@ -73,15 +77,15 @@ public class DozeFactory {
        mDockManager = dockManager;
        mWallpaperManager = wallpaperManager;
        mProximitySensor = proximitySensor;
        mDelayedWakeLockBuilder = delayedWakeLockBuilder;
        mHandler = handler;
    }

    /** Creates a DozeMachine with its parts for {@code dozeService}. */
    public DozeMachine assembleMachine(DozeService dozeService) {
    DozeMachine assembleMachine(DozeService dozeService) {
        DozeHost host = getHost(dozeService);
        AmbientDisplayConfiguration config = new AmbientDisplayConfiguration(dozeService);
        Handler handler = new Handler();
        WakeLock wakeLock = new DelayedWakeLock(handler,
                WakeLock.createPartial(dozeService, "Doze"));
        WakeLock wakeLock = mDelayedWakeLockBuilder.setHandler(mHandler).setTag("Doze").build();

        DozeMachine.Service wrappedService = dozeService;
        wrappedService = new DozeBrightnessHostForwarder(wrappedService, host);
@@ -93,20 +97,20 @@ public class DozeFactory {
        DozeMachine machine = new DozeMachine(wrappedService, config, wakeLock,
                                              mWakefulnessLifecycle, mBatteryController, mDozeLog);
        machine.setParts(new DozeMachine.Part[]{
                new DozePauser(handler, machine, mAlarmManager, mDozeParameters.getPolicy()),
                new DozePauser(mHandler, machine, mAlarmManager, mDozeParameters.getPolicy()),
                new DozeFalsingManagerAdapter(mFalsingManager),
                createDozeTriggers(dozeService, mAsyncSensorManager, host, mAlarmManager, config,
                        mDozeParameters, handler, wakeLock, machine, mDockManager, mDozeLog),
                createDozeUi(dozeService, host, wakeLock, machine, handler, mAlarmManager,
                        mDozeParameters, mHandler, wakeLock, machine, mDockManager, mDozeLog),
                createDozeUi(dozeService, host, wakeLock, machine, mHandler, mAlarmManager,
                        mDozeParameters, mDozeLog),
                new DozeScreenState(wrappedService, handler, host, mDozeParameters, wakeLock),
                new DozeScreenState(wrappedService, mHandler, host, mDozeParameters, wakeLock),
                createDozeScreenBrightness(dozeService, wrappedService, mAsyncSensorManager, host,
                        mDozeParameters, handler),
                        mDozeParameters, mHandler),
                new DozeWallpaperState(
                        mWallpaperManager,
                        getBiometricUnlockController(dozeService),
                        mDozeParameters),
                new DozeDockHandler(dozeService, machine, host, config, handler, mDockManager),
                new DozeDockHandler(dozeService, machine, host, config, mHandler, mDockManager),
                new DozeAuthRemover(dozeService)
        });

+25 −13
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.app.IWallpaperManager;
import android.app.IWallpaperManagerCallback;
import android.app.WallpaperColors;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -35,7 +34,6 @@ import android.os.AsyncTask;
import android.os.Handler;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.Log;

@@ -47,9 +45,13 @@ import libcore.io.IoUtils;

import java.util.Objects;

import javax.inject.Inject;
import javax.inject.Singleton;

/**
 * Manages the lockscreen wallpaper.
 */
@Singleton
public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implements Runnable {

    private static final String TAG = "LockscreenWallpaper";
@@ -57,9 +59,8 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
    private final NotificationMediaManager mMediaManager =
            Dependency.get(NotificationMediaManager.class);

    private final StatusBar mBar;
    private final WallpaperManager mWallpaperManager;
    private final Handler mH;
    private Handler mH;
    private final KeyguardUpdateMonitor mUpdateMonitor;

    private boolean mCached;
@@ -70,25 +71,32 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
    private UserHandle mSelectedUser;
    private AsyncTask<Void, Void, LoaderResult> mLoader;

    public LockscreenWallpaper(Context ctx, StatusBar bar, Handler h) {
        mBar = bar;
        mH = h;
        mWallpaperManager = (WallpaperManager) ctx.getSystemService(Context.WALLPAPER_SERVICE);
    @Inject
    public LockscreenWallpaper(WallpaperManager wallpaperManager,
            @Nullable IWallpaperManager iWallpaperManager,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
        mWallpaperManager = wallpaperManager;
        mCurrentUserId = ActivityManager.getCurrentUser();
        mUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
        mUpdateMonitor = keyguardUpdateMonitor;

        IWallpaperManager service = IWallpaperManager.Stub.asInterface(
                ServiceManager.getService(Context.WALLPAPER_SERVICE));
        if (service != null) {
        if (iWallpaperManager != null) {
            // Service is disabled on some devices like Automotive
            try {
                service.setLockWallpaperCallback(this);
                iWallpaperManager.setLockWallpaperCallback(this);
            } catch (RemoteException e) {
                Log.e(TAG, "System dead?" + e);
            }
        }
    }

    void setHandler(Handler handler) {
        if (mH != null) {
            Log.wtfStack(TAG, "Handler has already been set. Trying to double initialize?");
            return;
        }
        mH = handler;
    }

    public Bitmap getBitmap() {
        if (mCached) {
            return mCache;
@@ -176,6 +184,10 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
    }

    private void postUpdateWallpaper() {
        if (mH == null) {
            Log.wtfStack(TAG, "Trying to use LockscreenWallpaper before initialization.");
            return;
        }
        mH.removeCallbacks(this);
        mH.post(this);
    }
Loading