diff options
author | Dave Mankoff <mankoff@google.com> | 2020-09-11 15:41:28 -0400 |
---|---|---|
committer | Dave Mankoff <mankoff@google.com> | 2020-09-16 16:27:51 -0400 |
commit | 720c7c6eff34fd005f130f39f5ab8d63ba8b9ced (patch) | |
tree | 784ebb36697b134d47138bdd8c505a676234cf22 /packages/SystemUI/src | |
parent | 1d569867a411c92c216f825acaa9e11c11028532 (diff) |
8/N Remove View Injection from KeyguardMessageArea
Bug: 166448040
Test: manual && atest SystemUITests
Change-Id: I805286374d16162703b333452e5e35015449d1fe
Diffstat (limited to 'packages/SystemUI/src')
7 files changed, 62 insertions, 84 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java index 3108ae3d2354..0ddc9680a217 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java @@ -82,6 +82,12 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey abstract void resetState(); @Override + public void init() { + super.init(); + mMessageAreaController.init(); + } + + @Override protected void onViewAttached() { mView.setKeyDownListener(mKeyDownListener); mView.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled()); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index be21d203411e..36d5543f1c01 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -39,7 +39,6 @@ import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.navigationbar.NavigationBarController; import com.android.systemui.navigationbar.NavigationBarView; -import com.android.systemui.util.InjectionInflationController; import javax.inject.Inject; @@ -49,7 +48,6 @@ public class KeyguardDisplayManager { private final MediaRouter mMediaRouter; private final DisplayManager mDisplayService; - private final InjectionInflationController mInjectableInflater; private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; private final Context mContext; @@ -92,10 +90,8 @@ public class KeyguardDisplayManager { @Inject public KeyguardDisplayManager(Context context, - InjectionInflationController injectableInflater, KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory) { mContext = context; - mInjectableInflater = injectableInflater; mKeyguardStatusViewComponentFactory = keyguardStatusViewComponentFactory; mMediaRouter = mContext.getSystemService(MediaRouter.class); mDisplayService = mContext.getSystemService(DisplayManager.class); @@ -131,8 +127,7 @@ public class KeyguardDisplayManager { Presentation presentation = mPresentations.get(displayId); if (presentation == null) { final Presentation newPresentation = new KeyguardPresentation(mContext, display, - mKeyguardStatusViewComponentFactory, - mInjectableInflater.injectable(LayoutInflater.from(mContext))); + mKeyguardStatusViewComponentFactory, LayoutInflater.from(mContext)); newPresentation.setOnDismissListener(dialog -> { if (newPresentation.equals(mPresentations.get(displayId))) { mPresentations.remove(displayId); @@ -250,7 +245,7 @@ public class KeyguardDisplayManager { private static final int VIDEO_SAFE_REGION = 80; // Percentage of display width & height private static final int MOVE_CLOCK_TIMEOUT = 10000; // 10s private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; - private final LayoutInflater mInjectableLayoutInflater; + private final LayoutInflater mLayoutInflater; private KeyguardClockSwitchController mKeyguardClockSwitchController; private View mClock; private int mUsableWidth; @@ -270,10 +265,10 @@ public class KeyguardDisplayManager { KeyguardPresentation(Context context, Display display, KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory, - LayoutInflater injectionLayoutInflater) { + LayoutInflater layoutInflater) { super(context, display, R.style.Theme_SystemUI_KeyguardPresentation); mKeyguardStatusViewComponentFactory = keyguardStatusViewComponentFactory; - mInjectableLayoutInflater = injectionLayoutInflater; + mLayoutInflater = layoutInflater; getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); setCancelable(false); } @@ -299,7 +294,7 @@ public class KeyguardDisplayManager { mMarginLeft = (100 - VIDEO_SAFE_REGION) * p.x / 200; mMarginTop = (100 - VIDEO_SAFE_REGION) * p.y / 200; - setContentView(mInjectableLayoutInflater.inflate(R.layout.keyguard_presentation, null)); + setContentView(mLayoutInflater.inflate(R.layout.keyguard_presentation, null)); // Logic to make the lock screen fullscreen getWindow().getDecorView().setSystemUiVisibility( diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java index a8b1451d92c7..1a0a4370fca4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java @@ -16,8 +16,6 @@ package com.android.keyguard; -import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; - import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; @@ -31,20 +29,14 @@ import android.util.TypedValue; import android.view.View; import android.widget.TextView; -import com.android.systemui.Dependency; import com.android.systemui.R; -import com.android.systemui.statusbar.policy.ConfigurationController; import java.lang.ref.WeakReference; -import javax.inject.Inject; -import javax.inject.Named; - /*** * Manages a number of views inside of the given layout. See below for a list of widgets. */ -public class KeyguardMessageArea extends TextView implements SecurityMessageDisplay, - ConfigurationController.ConfigurationListener { +public class KeyguardMessageArea extends TextView implements SecurityMessageDisplay { /** Handler token posted with accessibility announcement runnables. */ private static final Object ANNOUNCE_TOKEN = new Object(); @@ -56,71 +48,26 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp private static final int DEFAULT_COLOR = -1; private final Handler mHandler; - private final ConfigurationController mConfigurationController; private ColorStateList mDefaultColorState; private CharSequence mMessage; private ColorStateList mNextMessageColorState = ColorStateList.valueOf(DEFAULT_COLOR); private boolean mBouncerVisible; - private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { - public void onFinishedGoingToSleep(int why) { - setSelected(false); - } - - public void onStartedWakingUp() { - setSelected(true); - } - - @Override - public void onKeyguardBouncerChanged(boolean bouncer) { - mBouncerVisible = bouncer; - update(); - } - }; - - public KeyguardMessageArea(Context context) { - super(context, null); - throw new IllegalStateException("This constructor should never be invoked"); - } - - @Inject - public KeyguardMessageArea(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, - ConfigurationController configurationController) { - this(context, attrs, Dependency.get(KeyguardUpdateMonitor.class), configurationController); - } - - public KeyguardMessageArea(Context context, AttributeSet attrs, KeyguardUpdateMonitor monitor, - ConfigurationController configurationController) { + public KeyguardMessageArea(Context context, AttributeSet attrs) { super(context, attrs); setLayerType(LAYER_TYPE_HARDWARE, null); // work around nested unclipped SaveLayer bug - monitor.registerCallback(mInfoCallback); mHandler = new Handler(Looper.myLooper()); - mConfigurationController = configurationController; onThemeChanged(); } @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - mConfigurationController.addCallback(this); - onThemeChanged(); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - mConfigurationController.removeCallback(this); - } - - @Override public void setNextMessageColor(ColorStateList colorState) { mNextMessageColorState = colorState; } - @Override - public void onThemeChanged() { + void onThemeChanged() { TypedArray array = mContext.obtainStyledAttributes(new int[] { R.attr.wallpaperTextColor }); @@ -130,8 +77,7 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp update(); } - @Override - public void onDensityOrFontScaleChanged() { + void onDensityOrFontScaleChanged() { TypedArray array = mContext.obtainStyledAttributes(R.style.Keyguard_TextView, new int[] { android.R.attr.textSize }); @@ -177,12 +123,6 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp return messageArea; } - @Override - protected void onFinishInflate() { - boolean shouldMarquee = Dependency.get(KeyguardUpdateMonitor.class).isDeviceInteractive(); - setSelected(shouldMarquee); // This is required to ensure marquee works - } - private void securityMessageChanged(CharSequence message) { mMessage = message; update(); @@ -196,7 +136,7 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp update(); } - private void update() { + void update() { CharSequence status = mMessage; setVisibility(TextUtils.isEmpty(status) || !mBouncerVisible ? INVISIBLE : VISIBLE); setText(status); @@ -208,6 +148,9 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp setTextColor(colorState); } + public void setBouncerVisible(boolean bouncerVisible) { + mBouncerVisible = bouncerVisible; + } /** * Runnable used to delay accessibility announcements. diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java index 78ac4e48501b..1618e8e58055 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java @@ -19,6 +19,7 @@ package com.android.keyguard; import android.content.res.ColorStateList; import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.util.ViewController; import javax.inject.Inject; @@ -28,6 +29,35 @@ public class KeyguardMessageAreaController extends ViewController<KeyguardMessag private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final ConfigurationController mConfigurationController; + + private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { + public void onFinishedGoingToSleep(int why) { + mView.setSelected(false); + } + + public void onStartedWakingUp() { + mView.setSelected(true); + } + + @Override + public void onKeyguardBouncerChanged(boolean bouncer) { + mView.setBouncerVisible(bouncer); + mView.update(); + } + }; + + private ConfigurationListener mConfigurationListener = new ConfigurationListener() { + @Override + public void onThemeChanged() { + mView.onThemeChanged(); + } + + @Override + public void onDensityOrFontScaleChanged() { + mView.onDensityOrFontScaleChanged(); + } + }; + private KeyguardMessageAreaController(KeyguardMessageArea view, KeyguardUpdateMonitor keyguardUpdateMonitor, ConfigurationController configurationController) { @@ -39,10 +69,16 @@ public class KeyguardMessageAreaController extends ViewController<KeyguardMessag @Override protected void onViewAttached() { + mConfigurationController.addCallback(mConfigurationListener); + mKeyguardUpdateMonitor.registerCallback(mInfoCallback); + mView.setSelected(mKeyguardUpdateMonitor.isDeviceInteractive()); + mView.onThemeChanged(); } @Override protected void onViewDetached() { + mConfigurationController.removeCallback(mConfigurationListener); + mKeyguardUpdateMonitor.removeCallback(mInfoCallback); } public void setMessage(CharSequence s) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java index 13a16360be04..38b535049fb4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java @@ -191,6 +191,12 @@ public class KeyguardPatternViewController } @Override + public void init() { + super.init(); + mMessageAreaController.init(); + } + + @Override protected void onViewAttached() { mLockPatternView.setOnPatternListener(new UnlockPatternListener()); mLockPatternView.setSaveEnabled(false); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java index 806847579d61..73adff94650a 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java @@ -26,7 +26,6 @@ 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; @@ -51,11 +50,10 @@ public class KeyguardSecurityViewFlipperController @Inject protected KeyguardSecurityViewFlipperController(KeyguardSecurityViewFlipper view, LayoutInflater layoutInflater, - InjectionInflationController injectionInflationController, KeyguardInputViewController.Factory keyguardSecurityViewControllerFactory) { super(view); mKeyguardSecurityViewControllerFactory = keyguardSecurityViewControllerFactory; - mLayoutInflater = injectionInflationController.injectable(layoutInflater); + mLayoutInflater = layoutInflater; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java b/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java index eb8f065149c8..a6cd350b33ce 100644 --- a/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java +++ b/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java @@ -23,7 +23,6 @@ import android.view.InflateException; import android.view.LayoutInflater; import android.view.View; -import com.android.keyguard.KeyguardMessageArea; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.qs.QSFooterImpl; import com.android.systemui.qs.QSPanel; @@ -108,11 +107,6 @@ public class InjectionInflationController { NotificationStackScrollLayout createNotificationStackScrollLayout(); /** - * Creates the KeyguardMessageArea. - */ - KeyguardMessageArea createKeyguardMessageArea(); - - /** * Creates the QSPanel. */ QSPanel createQSPanel(); |