From bac72c4c6fa5be0f684841de3b0eaac5c832a924 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 21 Jan 2020 14:30:26 -0800 Subject: [PATCH] Remove separate background for managed profiles This change removes the managed profile background to address the two issues below: 1) When one-lock is enabled, the credential UI will no longer incorrectly show the managed profile background. This bug was introduced when credential authentication UI was moved to SystemUI 2) The new managed profile authentication UX no longer uses a separate background Fixes: 147653255 Bug: 141290838 Test: atest com.android.systemui.biometrics Change-Id: Ib48f5e5c97c4c16c430625864377a001e100de1a --- .../biometrics/AuthBiometricView.java | 32 +++++-------------- .../biometrics/AuthContainerView.java | 22 ++----------- .../biometrics/AuthPanelController.java | 24 ++------------ .../biometrics/AuthContainerViewTest.java | 3 +- 4 files changed, 14 insertions(+), 67 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java index 7b4816f5262ce..044c5a027dac5 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java @@ -28,7 +28,6 @@ import android.hardware.biometrics.BiometricPrompt; import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.os.UserManager; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; @@ -381,16 +380,7 @@ public abstract class AuthBiometricView extends LinearLayout { 0 /* animateDurationMs */); mSize = newSize; } else if (newSize == AuthDialog.SIZE_LARGE) { - final boolean isManagedProfile = Utils.isManagedProfile(mContext, mUserId); - - // If it's a managed profile, animate the contents and panel down, since the credential - // contents will be shown on the same "layer" as the background. If it's not a managed - // profile, animate the contents up and expand the panel to full-screen - the credential - // contents will be shown on the same "layer" as the panel. - final float translationY = isManagedProfile ? - -getResources().getDimension( - R.dimen.biometric_dialog_animation_translation_offset) - : getResources().getDimension( + final float translationY = getResources().getDimension( R.dimen.biometric_dialog_medium_to_large_translation_offset); final AuthBiometricView biometricView = this; @@ -421,26 +411,20 @@ public abstract class AuthBiometricView extends LinearLayout { biometricView.setAlpha(opacity); }); - if (!isManagedProfile) { - mPanelController.setUseFullScreen(true); - mPanelController.updateForContentDimensions( - mPanelController.getContainerWidth(), - mPanelController.getContainerHeight(), - mInjector.getMediumToLargeAnimationDurationMs()); - } + mPanelController.setUseFullScreen(true); + mPanelController.updateForContentDimensions( + mPanelController.getContainerWidth(), + mPanelController.getContainerHeight(), + mInjector.getMediumToLargeAnimationDurationMs()); // Start the animations together AnimatorSet as = new AnimatorSet(); List animators = new ArrayList<>(); animators.add(translationAnimator); animators.add(opacityAnimator); - if (isManagedProfile) { - animators.add(mPanelController.getTranslationAnimator(translationY)); - animators.add(mPanelController.getAlphaAnimator(0)); - } + as.playTogether(animators); - as.setDuration(isManagedProfile ? mInjector.getMediumToLargeAnimationDurationMs() - : mInjector.getMediumToLargeAnimationDurationMs() * 2 / 3); + as.setDuration(mInjector.getMediumToLargeAnimationDurationMs() * 2 / 3); as.start(); } else { Log.e(TAG, "Unknown transition from: " + mSize + " to: " + newSize); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java index 4312a5201b08e..89446adb0fd7b 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java @@ -19,11 +19,8 @@ package com.android.systemui.biometrics; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.admin.DevicePolicyManager; import android.content.Context; import android.graphics.PixelFormat; -import android.graphics.PorterDuff; -import android.graphics.drawable.Drawable; import android.hardware.biometrics.BiometricAuthenticator; import android.os.Binder; import android.os.Bundle; @@ -168,9 +165,8 @@ public class AuthContainerView extends LinearLayout R.layout.auth_container_view, root, false /* attachToRoot */); } - AuthPanelController getPanelController(Context context, View panelView, - boolean isManagedProfile) { - return new AuthPanelController(context, panelView, isManagedProfile); + AuthPanelController getPanelController(Context context, View panelView) { + return new AuthPanelController(context, panelView); } ImageView getBackgroundView(FrameLayout parent) { @@ -256,10 +252,8 @@ public class AuthContainerView extends LinearLayout final LayoutInflater factory = LayoutInflater.from(mContext); mFrameLayout = mInjector.inflateContainerView(factory, this); - final boolean isManagedProfile = Utils.isManagedProfile(mContext, mConfig.mUserId); - mPanelView = mInjector.getPanelView(mFrameLayout); - mPanelController = mInjector.getPanelController(mContext, mPanelView, isManagedProfile); + mPanelController = mInjector.getPanelController(mContext, mPanelView); // Inflate biometric view only if necessary. if (Utils.isBiometricAllowed(mConfig.mBiometricPromptBundle)) { @@ -281,16 +275,6 @@ public class AuthContainerView extends LinearLayout mBiometricScrollView = mInjector.getBiometricScrollView(mFrameLayout); mBackgroundView = mInjector.getBackgroundView(mFrameLayout); - if (isManagedProfile) { - final Drawable image = getResources().getDrawable(R.drawable.work_challenge_background, - mContext.getTheme()); - final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); - image.setColorFilter(dpm.getOrganizationColorForUser(mConfig.mUserId), - PorterDuff.Mode.DARKEN); - mBackgroundView.setScaleType(ImageView.ScaleType.CENTER_CROP); - mBackgroundView.setImageDrawable(image); - } - addView(mFrameLayout); setOnKeyListener((v, keyCode, event) -> { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthPanelController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthPanelController.java index 4acbadea3a37e..11503fbd0b1d8 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthPanelController.java @@ -37,7 +37,6 @@ public class AuthPanelController extends ViewOutlineProvider { private final Context mContext; private final View mPanelView; - private final boolean mIsManagedProfile; private boolean mUseFullScreen; @@ -115,13 +114,6 @@ public class AuthPanelController extends ViewOutlineProvider { final float cornerRadius = mUseFullScreen ? 0 : mContext.getResources() .getDimension(R.dimen.biometric_dialog_corner_size); - // When going to full-screen for managed profiles, fade away so the managed profile - // background behind this view becomes visible. - final boolean shouldFadeAway = mUseFullScreen && mIsManagedProfile; - final int alpha = shouldFadeAway ? 0 : 255; - final float elevation = shouldFadeAway ? 0 : - mContext.getResources().getDimension(R.dimen.biometric_dialog_elevation); - if (animateDurationMs > 0) { // Animate margin ValueAnimator marginAnimator = ValueAnimator.ofInt(mMargin, margin); @@ -148,21 +140,11 @@ public class AuthPanelController extends ViewOutlineProvider { mContentWidth = (int) animation.getAnimatedValue(); }); - // Animate background - ValueAnimator alphaAnimator = ValueAnimator.ofInt( - mPanelView.getBackground().getAlpha(), alpha); - alphaAnimator.addUpdateListener((animation) -> { - if (shouldFadeAway) { - mPanelView.getBackground().setAlpha((int) animation.getAnimatedValue()); - } - }); - // Play together AnimatorSet as = new AnimatorSet(); as.setDuration(animateDurationMs); as.setInterpolator(new AccelerateDecelerateInterpolator()); - as.playTogether(cornerAnimator, heightAnimator, widthAnimator, marginAnimator, - alphaAnimator); + as.playTogether(cornerAnimator, heightAnimator, widthAnimator, marginAnimator); as.start(); } else { @@ -170,7 +152,6 @@ public class AuthPanelController extends ViewOutlineProvider { mCornerRadius = cornerRadius; mContentWidth = contentWidth; mContentHeight = contentHeight; - mPanelView.getBackground().setAlpha(alpha); mPanelView.invalidateOutline(); } } @@ -183,10 +164,9 @@ public class AuthPanelController extends ViewOutlineProvider { return mContainerHeight; } - AuthPanelController(Context context, View panelView, boolean isManagedProfile) { + AuthPanelController(Context context, View panelView) { mContext = context; mPanelView = panelView; - mIsManagedProfile = isManagedProfile; mCornerRadius = context.getResources() .getDimension(R.dimen.biometric_dialog_corner_size); mMargin = (int) context.getResources() diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java index 25bcb54a9e50d..f2642594802d1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java @@ -211,8 +211,7 @@ public class AuthContainerViewTest extends SysuiTestCase { } @Override - public AuthPanelController getPanelController(Context context, View view, - boolean isManagedProfile) { + public AuthPanelController getPanelController(Context context, View view) { return mock(AuthPanelController.class); }