diff options
3 files changed, 32 insertions, 20 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java index 751a3f8458bd..68d2eb358105 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java @@ -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; } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt index 53c81e537708..cf8358203b6c 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt @@ -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,17 +147,18 @@ const val SURFACE_BEHIND_FADE_OUT_START_DELAY_MS = 0L */ @SysUISingleton class KeyguardUnlockAnimationController @Inject constructor( - private val context: Context, - private val keyguardStateController: KeyguardStateController, - private val + private val windowManager: WindowManager, + @Main private val resources: Resources, + private val keyguardStateController: KeyguardStateController, + private val keyguardViewMediator: Lazy<KeyguardViewMediator>, - private val keyguardViewController: KeyguardViewController, - private val featureFlags: FeatureFlags, - private val biometricUnlockControllerLazy: Lazy<BiometricUnlockController>, - private val statusBarStateController: SysuiStatusBarStateController, - private val notificationShadeWindowController: NotificationShadeWindowController, - private val powerManager: PowerManager, - private val wallpaperManager: WallpaperManager + private val keyguardViewController: KeyguardViewController, + private val featureFlags: FeatureFlags, + private val biometricUnlockControllerLazy: Lazy<BiometricUnlockController>, + private val statusBarStateController: SysuiStatusBarStateController, + private val notificationShadeWindowController: NotificationShadeWindowController, + private val powerManager: PowerManager, + private val wallpaperManager: WallpaperManager ) : KeyguardStateController.Callback, ISysuiUnlockAnimationController.Stub() { interface KeyguardUnlockAnimationListener { @@ -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() } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt index 51828c91de4b..6ebda4db808f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt @@ -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 @@ -52,6 +53,8 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() { private lateinit var keyguardUnlockAnimationController: KeyguardUnlockAnimationController @Mock + private lateinit var windowManager: WindowManager + @Mock private lateinit var keyguardViewMediator: KeyguardViewMediator @Mock private lateinit var keyguardStateController: KeyguardStateController @@ -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 ) |