diff options
author | Dave Mankoff <mankoff@google.com> | 2020-09-22 00:24:04 +0000 |
---|---|---|
committer | Dave Mankoff <mankoff@google.com> | 2020-09-22 13:26:39 +0000 |
commit | 612c5d78c418ff33b36a19a7911e4279a26bcf9b (patch) | |
tree | 749b78dcf83a55167651065f00ebeacc4beba08c /packages/SystemUI/src | |
parent | 87f6d21e679af9f783777d21f08c46f8bcaf04c0 (diff) |
Revert "5/N Add KeyguardSecurityViewFlipperController."
Revert submission 12585643-b166448040-keyguard-message-area
Reason for revert: http://b/169081305 & http://b/169020145
Reverted Changes:
I6fa05012c:4/N Setup Controller fo KeyguardSecurityContainer....
Iecf265744:5/N Add KeyguardSecurityViewFlipperController.
I90ab99b2f:6/N Add Controller for KeyguardPatternView
I4b74eddd1:7/N controllers for remaining Keyguard Password Vi...
I805286374:8/N Remove View Injection from KeyguardMessageArea...
I362755980:9/N Clean Up Keyguard Class Structure
Change-Id: I5cbe04c0cfb1c081fbf2e9958cb22dca3e4d80ad
Fixes: 169081305
Fixes: 169020145
Diffstat (limited to 'packages/SystemUI/src')
6 files changed, 100 insertions, 240 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java index ad6ca8582bf0..b0a5533b0745 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java @@ -336,7 +336,7 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView> } public SecurityMode getCurrentSecurityMode() { - return mKeyguardSecurityContainerController.getCurrentSecurityMode(); + return mKeyguardSecurityContainerController.getCurrentSecuritySelection(); } public int getTop() { @@ -350,7 +350,7 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView> } public boolean handleBackKey() { - if (mKeyguardSecurityContainerController.getCurrentSecurityMode() + if (mKeyguardSecurityContainerController.getCurrentSecuritySelection() != SecurityMode.None) { mKeyguardSecurityContainerController.dismiss( false, KeyguardUpdateMonitor.getCurrentUser()); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index 83fcac6579f2..b0b2cd8c74d9 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -136,9 +136,9 @@ public class KeyguardInputViewController extends ViewController<KeyguardInputVie mView.onStartingToHide(); } - /** Finds the index of this view in the suppplied parent view. */ - public int getIndexIn(KeyguardSecurityViewFlipper view) { - return view.indexOfChild(mView); + public void showSelf() { + KeyguardSecurityViewFlipper flipper = (KeyguardSecurityViewFlipper) mView.getParent(); + flipper.setDisplayedChild(flipper.indexOfChild(mView)); } /** Factory for a {@link KeyguardInputViewController}. */ diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 07f70c14b74a..e83795b70eed 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -146,6 +146,10 @@ public class KeyguardSecurityContainer extends FrameLayout { } }; + KeyguardSecurityViewFlipper getSecurityViewFlipper() { + return mSecurityViewFlipper; + } + // Used to notify the container when something interesting happens. public interface SecurityCallback { boolean dismiss(boolean authenticated, int targetUserId, boolean bypassSecondaryLockScreen); @@ -497,6 +501,10 @@ public class KeyguardSecurityContainer extends FrameLayout { showDialog(null, message); } + public boolean needsInput() { + return mSecurityViewFlipper.needsInput(); + } + public void reset() { mSecurityViewFlipper.reset(); mDisappearAnimRunning = false; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index 87d3dd818232..11f951be9a15 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -33,8 +33,8 @@ import android.metrics.LogMaker; import android.os.UserHandle; import android.util.Log; import android.util.Slog; +import android.view.LayoutInflater; -import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.nano.MetricsProto; @@ -44,10 +44,11 @@ import com.android.keyguard.KeyguardSecurityContainer.BouncerUiEvent; import com.android.keyguard.KeyguardSecurityContainer.SecurityCallback; import com.android.keyguard.KeyguardSecurityContainer.SwipeListener; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; -import com.android.keyguard.dagger.KeyguardBouncerScope; import com.android.settingslib.utils.ThreadUtils; +import com.android.systemui.R; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.util.InjectionInflationController; import com.android.systemui.util.ViewController; import java.util.ArrayList; @@ -56,7 +57,6 @@ import java.util.List; import javax.inject.Inject; /** Controller for {@link KeyguardSecurityContainer} */ -@KeyguardBouncerScope public class KeyguardSecurityContainerController extends ViewController<KeyguardSecurityContainer> implements KeyguardSecurityView { @@ -70,11 +70,13 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final MetricsLogger mMetricsLogger; private final UiEventLogger mUiEventLogger; private final KeyguardStateController mKeyguardStateController; - private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController; + private final LayoutInflater mLayoutInflater; + private final KeyguardInputViewController.Factory mKeyguardSecurityViewControllerFactory; private final List<KeyguardInputViewController> mChildren = new ArrayList<>(); private SecurityCallback mSecurityCallback; - private SecurityMode mCurrentSecurityMode = SecurityMode.Invalid; + private SecurityMode mCurrentSecuritySelection = SecurityMode.Invalid; + private KeyguardSecurityView mCurrentSecurityView; private KeyguardSecurityCallback mKeyguardSecurityCallback = new KeyguardSecurityCallback() { public void userActivity() { @@ -180,7 +182,9 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard MetricsLogger metricsLogger, UiEventLogger uiEventLogger, KeyguardStateController keyguardStateController, - KeyguardSecurityViewFlipperController securityViewFlipperController) { + LayoutInflater layoutInflater, + InjectionInflationController injectionInflationController, + KeyguardInputViewController.Factory keyguardSecurityViewControllerFactory) { super(view); mLockPatternUtils = lockPatternUtils; mUpdateMonitor = keyguardUpdateMonitor; @@ -188,8 +192,9 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; mKeyguardStateController = keyguardStateController; - mSecurityViewFlipperController = securityViewFlipperController; + mLayoutInflater = injectionInflationController.injectable(layoutInflater); view.setLockPatternUtils(mLockPatternUtils); + mKeyguardSecurityViewControllerFactory = keyguardSecurityViewControllerFactory; mAdminSecondaryLockScreenController = adminSecondaryLockScreenControllerFactory.create( mKeyguardSecurityCallback); } @@ -211,8 +216,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** */ public void onPause() { mAdminSecondaryLockScreenController.hide(); - if (mCurrentSecurityMode != SecurityMode.None) { - getSecurityView(mCurrentSecurityMode).onPause(); + if (mCurrentSecuritySelection != SecurityMode.None) { + getSecurityView(mCurrentSecuritySelection).onPause(); } mView.onPause(); } @@ -232,22 +237,22 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard @Override public void showPromptReason(int reason) { - if (mCurrentSecurityMode != SecurityMode.None) { + if (mCurrentSecuritySelection != SecurityMode.None) { if (reason != PROMPT_REASON_NONE) { Log.i(TAG, "Strong auth required, reason: " + reason); } - getSecurityView(mCurrentSecurityMode).showPromptReason(reason); + getSecurityView(mCurrentSecuritySelection).showPromptReason(reason); } } public void showMessage(CharSequence message, ColorStateList colorState) { - if (mCurrentSecurityMode != SecurityMode.None) { - getSecurityView(mCurrentSecurityMode).showMessage(message, colorState); + if (mCurrentSecuritySelection != SecurityMode.None) { + getSecurityView(mCurrentSecuritySelection).showMessage(message, colorState); } } - public SecurityMode getCurrentSecurityMode() { - return mCurrentSecurityMode; + public SecurityMode getCurrentSecuritySelection() { + return mCurrentSecuritySelection; } public void dismiss(boolean authenticated, int targetUserId) { @@ -264,8 +269,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard @Override public void onResume(int reason) { - if (mCurrentSecurityMode != SecurityMode.None) { - getSecurityView(mCurrentSecurityMode).onResume(reason); + if (mCurrentSecuritySelection != SecurityMode.None) { + getSecurityView(mCurrentSecuritySelection).onResume(reason); } mView.onResume( mSecurityModel.getSecurityMode(KeyguardUpdateMonitor.getCurrentUser()), @@ -273,16 +278,16 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } public void startAppearAnimation() { - if (mCurrentSecurityMode != SecurityMode.None) { - getSecurityView(mCurrentSecurityMode).startAppearAnimation(); + if (mCurrentSecuritySelection != SecurityMode.None) { + getSecurityView(mCurrentSecuritySelection).startAppearAnimation(); } } public boolean startDisappearAnimation(Runnable onFinishRunnable) { - mView.startDisappearAnimation(getCurrentSecurityMode()); + mView.startDisappearAnimation(getCurrentSecuritySelection()); - if (mCurrentSecurityMode != SecurityMode.None) { - return getSecurityView(mCurrentSecurityMode).startDisappearAnimation( + if (mCurrentSecuritySelection != SecurityMode.None) { + return getSecurityView(mCurrentSecuritySelection).startDisappearAnimation( onFinishRunnable); } @@ -290,8 +295,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } public void onStartingToHide() { - if (mCurrentSecurityMode != SecurityMode.None) { - getSecurityView(mCurrentSecurityMode).onStartingToHide(); + if (mCurrentSecuritySelection != SecurityMode.None) { + getSecurityView(mCurrentSecuritySelection).onStartingToHide(); } } @@ -324,7 +329,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard finish = true; eventSubtype = BOUNCER_DISMISS_BIOMETRIC; uiEvent = BouncerUiEvent.BOUNCER_DISMISS_BIOMETRIC; - } else if (SecurityMode.None == getCurrentSecurityMode()) { + } else if (SecurityMode.None == getCurrentSecuritySelection()) { SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); if (SecurityMode.None == securityMode) { finish = true; // no security required @@ -334,7 +339,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard showSecurityScreen(securityMode); // switch to the alternate security view } } else if (authenticated) { - switch (getCurrentSecurityMode()) { + switch (getCurrentSecuritySelection()) { case Pattern: case Password: case PIN: @@ -359,7 +364,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard break; default: - Log.v(TAG, "Bad security screen " + getCurrentSecurityMode() + Log.v(TAG, "Bad security screen " + getCurrentSecuritySelection() + ", fail safe"); showPrimarySecurityScreen(false); break; @@ -388,25 +393,23 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } public boolean needsInput() { - return mSecurityViewFlipperController.needsInput(); + return mView.needsInput(); } + /** * Switches to the given security view unless it's already being shown, in which case * this is a no-op. * * @param securityMode */ - @VisibleForTesting void showSecurityScreen(SecurityMode securityMode) { if (DEBUG) Log.d(TAG, "showSecurityScreen(" + securityMode + ")"); - if (securityMode == SecurityMode.Invalid || securityMode == mCurrentSecurityMode) { - return; - } + if (securityMode == mCurrentSecuritySelection) return; - KeyguardInputViewController oldView = getSecurityView(mCurrentSecurityMode); - KeyguardInputViewController newView = getSecurityView(securityMode); + KeyguardSecurityView oldView = getSecurityView(mCurrentSecuritySelection); + KeyguardSecurityView newView = getSecurityView(securityMode); // Emulate Activity life cycle if (oldView != null) { @@ -416,10 +419,17 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard if (newView != null) { newView.onResume(KeyguardSecurityView.VIEW_REVEALED); newView.setKeyguardCallback(mKeyguardSecurityCallback); - mSecurityViewFlipperController.show(newView); } - mCurrentSecurityMode = securityMode; + // Find and show this child. + for (KeyguardInputViewController child : mChildren) { + if (child.getSecurityMode().equals(securityMode)) { + child.showSelf(); + } + } + + mCurrentSecuritySelection = securityMode; + mCurrentSecurityView = newView; mSecurityCallback.onSecurityModeChanged( securityMode, newView != null && newView.needsInput()); } @@ -488,8 +498,45 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mView.showUsabilityHint(); } - private KeyguardInputViewController getSecurityView(SecurityMode securityMode) { - return mSecurityViewFlipperController - .getSecurityView(securityMode, mKeyguardSecurityCallback); + private KeyguardSecurityView getSecurityView(SecurityMode securityMode) { + KeyguardInputViewController childController = null; + for (KeyguardInputViewController mChild : mChildren) { + if (mChild.getSecurityMode() == securityMode) { + childController = mChild; + break; + } + } + + if (childController == null + && securityMode != SecurityMode.None && securityMode != SecurityMode.Invalid) { + + int layoutId = getLayoutIdFor(securityMode); + KeyguardInputView view = null; + if (layoutId != 0) { + if (DEBUG) Log.v(TAG, "inflating id = " + layoutId); + view = (KeyguardInputView) mLayoutInflater.inflate( + layoutId, mView.getSecurityViewFlipper(), false); + mView.getSecurityViewFlipper().addView(view); + childController = mKeyguardSecurityViewControllerFactory.create( + view, securityMode, mKeyguardSecurityCallback); + + mChildren.add(childController); + } + } + + return childController; } + + private int getLayoutIdFor(SecurityMode securityMode) { + switch (securityMode) { + case Pattern: return com.android.systemui.R.layout.keyguard_pattern_view; + case PIN: return com.android.systemui.R.layout.keyguard_pin_view; + case Password: return com.android.systemui.R.layout.keyguard_password_view; + case SimPin: return com.android.systemui.R.layout.keyguard_sim_pin_view; + case SimPuk: return R.layout.keyguard_sim_puk_view; + default: + return 0; + } + } + } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java deleted file mode 100644 index 07cfdb8672c5..000000000000 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.keyguard; - -import android.content.res.ColorStateList; -import android.util.Log; -import android.view.LayoutInflater; - -import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.widget.LockPatternUtils; -import com.android.keyguard.KeyguardInputViewController.Factory; -import com.android.keyguard.KeyguardSecurityModel.SecurityMode; -import com.android.keyguard.dagger.KeyguardBouncerScope; -import com.android.systemui.R; -import com.android.systemui.util.InjectionInflationController; -import com.android.systemui.util.ViewController; - -import java.util.ArrayList; -import java.util.List; - -import javax.inject.Inject; - -/** - * Controller for a {@link KeyguardSecurityViewFlipper}. - */ -@KeyguardBouncerScope -public class KeyguardSecurityViewFlipperController - extends ViewController<KeyguardSecurityViewFlipper> implements KeyguardSecurityView { - - private static final boolean DEBUG = KeyguardConstants.DEBUG; - private static final String TAG = "KeyguardSecurityView"; - - private final List<KeyguardInputViewController> mChildren = new ArrayList<>(); - private final LayoutInflater mLayoutInflater; - private final Factory mKeyguardSecurityViewControllerFactory; - - @Inject - protected KeyguardSecurityViewFlipperController(KeyguardSecurityViewFlipper view, - LayoutInflater layoutInflater, - InjectionInflationController injectionInflationController, - KeyguardInputViewController.Factory keyguardSecurityViewControllerFactory) { - super(view); - mKeyguardSecurityViewControllerFactory = keyguardSecurityViewControllerFactory; - mLayoutInflater = injectionInflationController.injectable(layoutInflater); - } - - @Override - protected void onViewAttached() { - - } - - @Override - protected void onViewDetached() { - - } - - @Override - public void setKeyguardCallback(KeyguardSecurityCallback callback) { - mView.setKeyguardCallback(callback); - } - - @Override - public void setLockPatternUtils(LockPatternUtils utils) { - mView.setLockPatternUtils(utils); - } - - @Override - public void reset() { - mView.reset(); - } - - @Override - public void onPause() { - mView.onPause(); - } - - @Override - public void onResume(int reason) { - mView.onResume(reason); - } - - @Override - public boolean needsInput() { - return mView.needsInput(); - } - - @Override - public KeyguardSecurityCallback getCallback() { - return mView.getCallback(); - } - - @Override - public void showPromptReason(int reason) { - mView.showPromptReason(reason); - } - - @Override - public void showMessage(CharSequence message, ColorStateList colorState) { - mView.showMessage(message, colorState); - } - - @Override - public void showUsabilityHint() { - mView.showUsabilityHint(); - } - - @Override - public void startAppearAnimation() { - mView.startAppearAnimation(); - } - - @Override - public boolean startDisappearAnimation(Runnable finishRunnable) { - return mView.startDisappearAnimation(finishRunnable); - } - - @Override - public CharSequence getTitle() { - return mView.getTitle(); - } - - @VisibleForTesting - KeyguardInputViewController getSecurityView(SecurityMode securityMode, - KeyguardSecurityCallback keyguardSecurityCallback) { - KeyguardInputViewController childController = null; - for (KeyguardInputViewController mChild : mChildren) { - if (mChild.getSecurityMode() == securityMode) { - childController = mChild; - break; - } - } - - if (childController == null - && securityMode != SecurityMode.None && securityMode != SecurityMode.Invalid) { - - int layoutId = getLayoutIdFor(securityMode); - KeyguardInputView view = null; - if (layoutId != 0) { - if (DEBUG) Log.v(TAG, "inflating id = " + layoutId); - view = (KeyguardInputView) mLayoutInflater.inflate( - layoutId, mView, false); - mView.addView(view); - childController = mKeyguardSecurityViewControllerFactory.create( - view, securityMode, keyguardSecurityCallback); - - mChildren.add(childController); - } - } - - return childController; - } - - private int getLayoutIdFor(SecurityMode securityMode) { - switch (securityMode) { - case Pattern: return com.android.systemui.R.layout.keyguard_pattern_view; - case PIN: return com.android.systemui.R.layout.keyguard_pin_view; - case Password: return com.android.systemui.R.layout.keyguard_password_view; - case SimPin: return com.android.systemui.R.layout.keyguard_sim_pin_view; - case SimPuk: return R.layout.keyguard_sim_puk_view; - default: - return 0; - } - } - - /** Makes the supplied child visible if it is contained win this view, */ - public void show(KeyguardInputViewController childController) { - int index = childController.getIndexIn(mView); - if (index != -1) { - mView.setDisplayedChild(index); - } - } -} diff --git a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java index 881108858b51..b6010c8915e7 100644 --- a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java +++ b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java @@ -22,7 +22,6 @@ import android.view.ViewGroup; import com.android.keyguard.KeyguardHostView; import com.android.keyguard.KeyguardMessageArea; import com.android.keyguard.KeyguardSecurityContainer; -import com.android.keyguard.KeyguardSecurityViewFlipper; import com.android.systemui.R; import com.android.systemui.statusbar.phone.KeyguardBouncer; @@ -59,15 +58,7 @@ public interface KeyguardBouncerModule { /** */ @Provides @KeyguardBouncerScope - static KeyguardSecurityContainer providesKeyguardSecurityContainer(KeyguardHostView hostView) { + static KeyguardSecurityContainer preovidesKeyguardSecurityContainer(KeyguardHostView hostView) { return hostView.findViewById(R.id.keyguard_security_container); } - - /** */ - @Provides - @KeyguardBouncerScope - static KeyguardSecurityViewFlipper providesKeyguardSecurityViewFlipper( - KeyguardSecurityContainer containerView) { - return containerView.findViewById(R.id.view_flipper); - } } |