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

Commit 2cab7c5b authored by Beverly's avatar Beverly
Browse files

Don't inject the context into KeyguardUnlockAnimationController

The context is unnecessarily and causes the
KeyguardUnlockAnimationController to have reference to a large object
it doens't need to. Instead, directly inject what's needed from the
context (resources and windowManager).

Bug: 325766190
Flag: None
Test: atest KeyguardUnlockAnimationControllerTest
Change-Id: I393170001bce4542e5dde2798d062deecbe735ee
parent 3e2fe15e
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SWITCHER_SHOWN;

import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Rect;
import android.inputmethodservice.InputMethodService;
@@ -138,11 +139,15 @@ public class Utilities {
    /** @return whether or not {@param context} represents that of a large screen device or not */
    @TargetApi(Build.VERSION_CODES.R)
    public static boolean isLargeScreen(Context context) {
        final WindowManager windowManager = context.getSystemService(WindowManager.class);
        return isLargeScreen(context.getSystemService(WindowManager.class), context.getResources());
    }

    /** @return whether or not {@param context} represents that of a large screen device or not */
    public static boolean isLargeScreen(WindowManager windowManager, Resources resources) {
        final Rect bounds = windowManager.getCurrentWindowMetrics().getBounds();

        float smallestWidth = dpiFromPx(Math.min(bounds.width(), bounds.height()),
                context.getResources().getConfiguration().densityDpi);
                resources.getConfiguration().densityDpi);
        return smallestWidth >= TABLET_MIN_DPS;
    }

+20 −17
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ValueAnimator
import android.app.WallpaperManager
import android.content.Context
import android.content.res.Resources
import android.graphics.Matrix
import android.graphics.Rect
import android.os.DeadObjectException
@@ -32,16 +32,18 @@ import android.view.RemoteAnimationTarget
import android.view.SurfaceControl
import android.view.SyncRtSurfaceTransactionApplier
import android.view.View
import android.view.WindowManager
import androidx.annotation.VisibleForTesting
import androidx.core.math.MathUtils
import com.android.app.animation.Interpolators
import com.android.internal.R
import com.android.keyguard.KeyguardClockSwitchController
import com.android.keyguard.KeyguardViewController
import com.android.systemui.Flags.fastUnlockTransition
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.Flags.fastUnlockTransition
import com.android.systemui.plugins.BcSmartspaceDataPlugin
import com.android.systemui.shared.recents.utilities.Utilities
import com.android.systemui.shared.system.ActivityManagerWrapper
@@ -145,7 +147,8 @@ const val SURFACE_BEHIND_FADE_OUT_START_DELAY_MS = 0L
 */
@SysUISingleton
class KeyguardUnlockAnimationController @Inject constructor(
    private val context: Context,
        private val windowManager: WindowManager,
        @Main private val resources: Resources,
        private val keyguardStateController: KeyguardStateController,
        private val
    keyguardViewMediator: Lazy<KeyguardViewMediator>,
@@ -399,7 +402,7 @@ class KeyguardUnlockAnimationController @Inject constructor(
        keyguardStateController.addCallback(this)

        roundedCornerRadius =
            context.resources.getDimensionPixelSize(R.dimen.rounded_corner_radius).toFloat()
            resources.getDimensionPixelSize(R.dimen.rounded_corner_radius).toFloat()
    }

    /**
@@ -438,7 +441,7 @@ class KeyguardUnlockAnimationController @Inject constructor(
        Log.wtf(TAG, "  !notificationShadeWindowController.isLaunchingActivity: " +
                "${!notificationShadeWindowController.isLaunchingActivity}")
        Log.wtf(TAG, "  launcherUnlockController != null: ${launcherUnlockController != null}")
        Log.wtf(TAG, "  !isFoldable(context): ${!isFoldable(context)}")
        Log.wtf(TAG, "  !isFoldable(context): ${!isFoldable(resources)}")
    }

    /**
@@ -1100,7 +1103,7 @@ class KeyguardUnlockAnimationController @Inject constructor(

        // We don't do the shared element on large screens because the smartspace has to fly across
        // large distances, which is distracting.
        if (Utilities.isLargeScreen(context)) {
        if (Utilities.isLargeScreen(windowManager, resources)) {
            return false
        }

@@ -1180,8 +1183,8 @@ class KeyguardUnlockAnimationController @Inject constructor(

    companion object {

        fun isFoldable(context: Context): Boolean {
            return context.resources.getIntArray(R.array.config_foldedDeviceStates).isNotEmpty()
        fun isFoldable(resources: Resources): Boolean {
            return resources.getIntArray(R.array.config_foldedDeviceStates).isNotEmpty()
        }
    }
}
+5 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ import android.view.SurfaceControl
import android.view.SyncRtSurfaceTransactionApplier
import android.view.View
import android.view.ViewRootImpl
import android.view.WindowManager
import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardViewController
import com.android.systemui.Flags
@@ -51,6 +52,8 @@ import java.util.function.Predicate
class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
    private lateinit var keyguardUnlockAnimationController: KeyguardUnlockAnimationController

    @Mock
    private lateinit var windowManager: WindowManager
    @Mock
    private lateinit var keyguardViewMediator: KeyguardViewMediator
    @Mock
@@ -99,7 +102,8 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        keyguardUnlockAnimationController = KeyguardUnlockAnimationController(
            context, keyguardStateController, { keyguardViewMediator }, keyguardViewController,
            windowManager, context.resources,
            keyguardStateController, { keyguardViewMediator }, keyguardViewController,
            featureFlags, { biometricUnlockController }, statusBarStateController,
            notificationShadeWindowController, powerManager, wallpaperManager
        )