Merge "[Status Bar Refactor] 2.3/N Migrate Udfps classes to the correct listener interface." into sc-v2-dev

This commit is contained in:
Caitlin Cassidy
2021-11-04 14:08:06 +00:00
committed by Android (Google) Code Review
12 changed files with 67 additions and 159 deletions

View File

@@ -23,12 +23,12 @@ import android.graphics.RectF;
import com.android.systemui.Dumpable; import com.android.systemui.Dumpable;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.util.ViewController; import com.android.systemui.util.ViewController;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Optional;
/** /**
* Handles: * Handles:
@@ -43,7 +43,7 @@ import java.util.Optional;
abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>
extends ViewController<T> implements Dumpable { extends ViewController<T> implements Dumpable {
@NonNull final StatusBarStateController mStatusBarStateController; @NonNull final StatusBarStateController mStatusBarStateController;
@NonNull final Optional<StatusBar> mStatusBarOptional; @NonNull final PanelExpansionStateManager mPanelExpansionStateManager;
@NonNull final DumpManager mDumpManger; @NonNull final DumpManager mDumpManger;
boolean mNotificationShadeExpanded; boolean mNotificationShadeExpanded;
@@ -51,11 +51,11 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>
protected UdfpsAnimationViewController( protected UdfpsAnimationViewController(
T view, T view,
@NonNull StatusBarStateController statusBarStateController, @NonNull StatusBarStateController statusBarStateController,
@NonNull Optional<StatusBar> statusBarOptional, @NonNull PanelExpansionStateManager panelExpansionStateManager,
@NonNull DumpManager dumpManager) { @NonNull DumpManager dumpManager) {
super(view); super(view);
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
mStatusBarOptional = statusBarOptional; mPanelExpansionStateManager = panelExpansionStateManager;
mDumpManger = dumpManager; mDumpManger = dumpManager;
} }
@@ -63,17 +63,13 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>
@Override @Override
protected void onViewAttached() { protected void onViewAttached() {
mStatusBarOptional.ifPresent( mPanelExpansionStateManager.addListener(mPanelExpansionListener);
statusBar -> statusBar.addExpansionChangedListener(
mStatusBarExpansionChangedListener));
mDumpManger.registerDumpable(getDumpTag(), this); mDumpManger.registerDumpable(getDumpTag(), this);
} }
@Override @Override
protected void onViewDetached() { protected void onViewDetached() {
mStatusBarOptional.ifPresent( mPanelExpansionStateManager.removeListener(mPanelExpansionListener);
statusBar -> statusBar.removeExpansionChangedListener(
mStatusBarExpansionChangedListener));
mDumpManger.unregisterDumpable(getDumpTag()); mDumpManger.unregisterDumpable(getDumpTag());
} }
@@ -182,13 +178,13 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>
*/ */
void onTouchOutsideView() { } void onTouchOutsideView() { }
private final StatusBar.ExpansionChangedListener mStatusBarExpansionChangedListener = private final PanelExpansionListener mPanelExpansionListener = new PanelExpansionListener() {
new StatusBar.ExpansionChangedListener() { @Override
@Override public void onPanelExpansionChanged(
public void onExpansionChanged(float expansion, boolean expanded) { float fraction, boolean expanded, boolean tracking) {
mNotificationShadeExpanded = expanded; mNotificationShadeExpanded = expanded;
mView.onExpansionChanged(expansion, expanded); mView.onExpansionChanged(fraction, expanded);
updatePauseAuth(); updatePauseAuth();
} }
}; };
} }

View File

@@ -20,9 +20,7 @@ import android.annotation.NonNull;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import java.util.Optional;
/** /**
* Class that coordinates non-HBM animations for biometric prompt. * Class that coordinates non-HBM animations for biometric prompt.
@@ -31,9 +29,9 @@ class UdfpsBpViewController extends UdfpsAnimationViewController<UdfpsBpView> {
protected UdfpsBpViewController( protected UdfpsBpViewController(
@NonNull UdfpsBpView view, @NonNull UdfpsBpView view,
@NonNull StatusBarStateController statusBarStateController, @NonNull StatusBarStateController statusBarStateController,
@NonNull Optional<StatusBar> statusBarOptional, @NonNull PanelExpansionStateManager panelExpansionStateManager,
@NonNull DumpManager dumpManager) { @NonNull DumpManager dumpManager) {
super(view, statusBarStateController, statusBarOptional, dumpManager); super(view, statusBarStateController, panelExpansionStateManager, dumpManager);
} }
@Override @Override

View File

@@ -69,9 +69,9 @@ import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -112,7 +112,7 @@ public class UdfpsController implements DozeReceiver {
@NonNull private final LayoutInflater mInflater; @NonNull private final LayoutInflater mInflater;
private final WindowManager mWindowManager; private final WindowManager mWindowManager;
private final DelayableExecutor mFgExecutor; private final DelayableExecutor mFgExecutor;
@NonNull private final Optional<StatusBar> mStatusBarOptional; @NonNull private final PanelExpansionStateManager mPanelExpansionStateManager;
@NonNull private final StatusBarStateController mStatusBarStateController; @NonNull private final StatusBarStateController mStatusBarStateController;
@NonNull private final KeyguardStateController mKeyguardStateController; @NonNull private final KeyguardStateController mKeyguardStateController;
@NonNull private final StatusBarKeyguardViewManager mKeyguardViewManager; @NonNull private final StatusBarKeyguardViewManager mKeyguardViewManager;
@@ -521,7 +521,7 @@ public class UdfpsController implements DozeReceiver {
@NonNull WindowManager windowManager, @NonNull WindowManager windowManager,
@NonNull StatusBarStateController statusBarStateController, @NonNull StatusBarStateController statusBarStateController,
@Main DelayableExecutor fgExecutor, @Main DelayableExecutor fgExecutor,
@NonNull Optional<StatusBar> statusBarOptional, @NonNull PanelExpansionStateManager panelExpansionStateManager,
@NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager,
@NonNull DumpManager dumpManager, @NonNull DumpManager dumpManager,
@NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -550,7 +550,7 @@ public class UdfpsController implements DozeReceiver {
mFingerprintManager = checkNotNull(fingerprintManager); mFingerprintManager = checkNotNull(fingerprintManager);
mWindowManager = windowManager; mWindowManager = windowManager;
mFgExecutor = fgExecutor; mFgExecutor = fgExecutor;
mStatusBarOptional = statusBarOptional; mPanelExpansionStateManager = panelExpansionStateManager;
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
mKeyguardStateController = keyguardStateController; mKeyguardStateController = keyguardStateController;
mKeyguardViewManager = statusBarKeyguardViewManager; mKeyguardViewManager = statusBarKeyguardViewManager;
@@ -805,7 +805,7 @@ public class UdfpsController implements DozeReceiver {
enrollView, enrollView,
mServerRequest.mEnrollHelper, mServerRequest.mEnrollHelper,
mStatusBarStateController, mStatusBarStateController,
mStatusBarOptional, mPanelExpansionStateManager,
mDumpManager mDumpManager
); );
case BiometricOverlayConstants.REASON_AUTH_KEYGUARD: case BiometricOverlayConstants.REASON_AUTH_KEYGUARD:
@@ -815,7 +815,7 @@ public class UdfpsController implements DozeReceiver {
return new UdfpsKeyguardViewController( return new UdfpsKeyguardViewController(
keyguardView, keyguardView,
mStatusBarStateController, mStatusBarStateController,
mStatusBarOptional, mPanelExpansionStateManager,
mKeyguardViewManager, mKeyguardViewManager,
mKeyguardUpdateMonitor, mKeyguardUpdateMonitor,
mDumpManager, mDumpManager,
@@ -833,7 +833,7 @@ public class UdfpsController implements DozeReceiver {
return new UdfpsBpViewController( return new UdfpsBpViewController(
bpView, bpView,
mStatusBarStateController, mStatusBarStateController,
mStatusBarOptional, mPanelExpansionStateManager,
mDumpManager mDumpManager
); );
case BiometricOverlayConstants.REASON_AUTH_OTHER: case BiometricOverlayConstants.REASON_AUTH_OTHER:
@@ -843,7 +843,7 @@ public class UdfpsController implements DozeReceiver {
return new UdfpsFpmOtherViewController( return new UdfpsFpmOtherViewController(
authOtherView, authOtherView,
mStatusBarStateController, mStatusBarStateController,
mStatusBarOptional, mPanelExpansionStateManager,
mDumpManager mDumpManager
); );
default: default:

View File

@@ -22,9 +22,7 @@ import android.graphics.PointF;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import java.util.Optional;
/** /**
* Class that coordinates non-HBM animations during enrollment. * Class that coordinates non-HBM animations during enrollment.
@@ -55,9 +53,9 @@ public class UdfpsEnrollViewController extends UdfpsAnimationViewController<Udfp
@NonNull UdfpsEnrollView view, @NonNull UdfpsEnrollView view,
@NonNull UdfpsEnrollHelper enrollHelper, @NonNull UdfpsEnrollHelper enrollHelper,
@NonNull StatusBarStateController statusBarStateController, @NonNull StatusBarStateController statusBarStateController,
@NonNull Optional<StatusBar> statusBarOptional, @NonNull PanelExpansionStateManager panelExpansionStateManager,
@NonNull DumpManager dumpManager) { @NonNull DumpManager dumpManager) {
super(view, statusBarStateController, statusBarOptional, dumpManager); super(view, statusBarStateController, panelExpansionStateManager, dumpManager);
mEnrollProgressBarRadius = getContext().getResources() mEnrollProgressBarRadius = getContext().getResources()
.getInteger(R.integer.config_udfpsEnrollProgressBar); .getInteger(R.integer.config_udfpsEnrollProgressBar);
mEnrollHelper = enrollHelper; mEnrollHelper = enrollHelper;

View File

@@ -20,9 +20,7 @@ import android.annotation.NonNull;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import java.util.Optional;
/** /**
* Class that coordinates non-HBM animations for non keyguard, enrollment or biometric prompt * Class that coordinates non-HBM animations for non keyguard, enrollment or biometric prompt
@@ -34,9 +32,9 @@ class UdfpsFpmOtherViewController extends UdfpsAnimationViewController<UdfpsFpmO
protected UdfpsFpmOtherViewController( protected UdfpsFpmOtherViewController(
@NonNull UdfpsFpmOtherView view, @NonNull UdfpsFpmOtherView view,
@NonNull StatusBarStateController statusBarStateController, @NonNull StatusBarStateController statusBarStateController,
@NonNull Optional<StatusBar> statusBarOptional, @NonNull PanelExpansionStateManager panelExpansionStateManager,
@NonNull DumpManager dumpManager) { @NonNull DumpManager dumpManager) {
super(view, statusBarStateController, statusBarOptional, dumpManager); super(view, statusBarStateController, panelExpansionStateManager, dumpManager);
} }
@Override @Override

View File

@@ -30,16 +30,16 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.KeyguardBouncer; import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.time.SystemClock; import com.android.systemui.util.time.SystemClock;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Optional;
/** /**
* Class that coordinates non-HBM animations during keyguard authentication. * Class that coordinates non-HBM animations during keyguard authentication.
@@ -77,7 +77,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
protected UdfpsKeyguardViewController( protected UdfpsKeyguardViewController(
@NonNull UdfpsKeyguardView view, @NonNull UdfpsKeyguardView view,
@NonNull StatusBarStateController statusBarStateController, @NonNull StatusBarStateController statusBarStateController,
@NonNull Optional<StatusBar> statusBarOptional, @NonNull PanelExpansionStateManager panelExpansionStateManager,
@NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager,
@NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor,
@NonNull DumpManager dumpManager, @NonNull DumpManager dumpManager,
@@ -87,7 +87,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
@NonNull KeyguardStateController keyguardStateController, @NonNull KeyguardStateController keyguardStateController,
@NonNull UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, @NonNull UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
@NonNull UdfpsController udfpsController) { @NonNull UdfpsController udfpsController) {
super(view, statusBarStateController, statusBarOptional, dumpManager); super(view, statusBarStateController, panelExpansionStateManager, dumpManager);
mKeyguardViewManager = statusBarKeyguardViewManager; mKeyguardViewManager = statusBarKeyguardViewManager;
mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mLockScreenShadeTransitionController = transitionController; mLockScreenShadeTransitionController = transitionController;
@@ -126,9 +126,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN; mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN;
mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing(); mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing();
mConfigurationController.addCallback(mConfigurationListener); mConfigurationController.addCallback(mConfigurationListener);
mStatusBarOptional.ifPresent( mPanelExpansionStateManager.addListener(mPanelExpansionListener);
statusBar -> statusBar.addExpansionChangedListener(
mStatusBarExpansionChangedListener));
updateAlpha(); updateAlpha();
updatePauseAuth(); updatePauseAuth();
@@ -147,9 +145,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor); mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false); mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
mConfigurationController.removeCallback(mConfigurationListener); mConfigurationController.removeCallback(mConfigurationListener);
mStatusBarOptional.ifPresent( mPanelExpansionStateManager.removeListener(mPanelExpansionListener);
statusBar -> statusBar.removeExpansionChangedListener(
mStatusBarExpansionChangedListener));
if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) { if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) {
mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null); mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null);
} }
@@ -403,14 +399,14 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
} }
}; };
private final StatusBar.ExpansionChangedListener mStatusBarExpansionChangedListener = private final PanelExpansionListener mPanelExpansionListener = new PanelExpansionListener() {
new StatusBar.ExpansionChangedListener() { @Override
@Override public void onPanelExpansionChanged(
public void onExpansionChanged(float expansion, boolean expanded) { float fraction, boolean expanded, boolean tracking) {
mStatusBarExpansion = expansion; mStatusBarExpansion = fraction;
updateAlpha(); updateAlpha();
} }
}; };
private final KeyguardStateController.Callback mKeyguardStateControllerCallback = private final KeyguardStateController.Callback mKeyguardStateControllerCallback =
new KeyguardStateController.Callback() { new KeyguardStateController.Callback() {

View File

@@ -42,7 +42,6 @@ import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.util.leak.RotationUtils; import com.android.systemui.util.leak.RotationUtils;
import java.util.List;
import java.util.Objects; import java.util.Objects;
public class PhoneStatusBarView extends PanelBar { public class PhoneStatusBarView extends PanelBar {
@@ -65,8 +64,6 @@ public class PhoneStatusBarView extends PanelBar {
private DisplayCutout mDisplayCutout; private DisplayCutout mDisplayCutout;
private int mStatusBarHeight; private int mStatusBarHeight;
@Nullable @Nullable
private List<StatusBar.ExpansionChangedListener> mExpansionChangedListeners;
@Nullable
private TouchEventHandler mTouchEventHandler; private TouchEventHandler mTouchEventHandler;
/** /**
@@ -83,11 +80,6 @@ public class PhoneStatusBarView extends PanelBar {
mBar = bar; mBar = bar;
} }
public void setExpansionChangedListeners(
@Nullable List<StatusBar.ExpansionChangedListener> listeners) {
mExpansionChangedListeners = listeners;
}
void setTouchEventHandler(TouchEventHandler handler) { void setTouchEventHandler(TouchEventHandler handler) {
mTouchEventHandler = handler; mTouchEventHandler = handler;
} }
@@ -203,16 +195,6 @@ public class PhoneStatusBarView extends PanelBar {
return super.onInterceptTouchEvent(event); return super.onInterceptTouchEvent(event);
} }
@Override
public void panelExpansionChanged(float frac, boolean expanded) {
super.panelExpansionChanged(frac, expanded);
if (mExpansionChangedListeners != null) {
for (StatusBar.ExpansionChangedListener listener : mExpansionChangedListeners) {
listener.onExpansionChanged(frac, expanded);
}
}
}
public void updateResources() { public void updateResources() {
mCutoutSideNudge = getResources().getDimensionPixelSize( mCutoutSideNudge = getResources().getDimensionPixelSize(
R.dimen.display_cutout_margin_consumption); R.dimen.display_cutout_margin_consumption);

View File

@@ -248,7 +248,6 @@ import com.android.wm.shell.startingsurface.StartingSurface;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@@ -440,10 +439,6 @@ public class StatusBar extends SystemUI implements
mCommandQueueCallbacks.animateCollapsePanels(flags, force); mCommandQueueCallbacks.animateCollapsePanels(flags, force);
} }
public interface ExpansionChangedListener {
void onExpansionChanged(float expansion, boolean expanded);
}
/** /**
* The {@link StatusBarState} of the status bar. * The {@link StatusBarState} of the status bar.
*/ */
@@ -556,8 +551,6 @@ public class StatusBar extends SystemUI implements
private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
private final TunerService mTunerService; private final TunerService mTunerService;
private final List<ExpansionChangedListener> mExpansionChangedListeners;
// Flags for disabling the status bar // Flags for disabling the status bar
// Two variables becaseu the first one evidently ran out of room for new flags. // Two variables becaseu the first one evidently ran out of room for new flags.
private int mDisabled1 = 0; private int mDisabled1 = 0;
@@ -905,7 +898,6 @@ public class StatusBar extends SystemUI implements
mStartingSurfaceOptional = startingSurfaceOptional; mStartingSurfaceOptional = startingSurfaceOptional;
lockscreenShadeTransitionController.setStatusbar(this); lockscreenShadeTransitionController.setStatusbar(this);
mExpansionChangedListeners = new ArrayList<>();
mPanelExpansionStateManager.addListener(this::onPanelExpansionChanged); mPanelExpansionStateManager.addListener(this::onPanelExpansionChanged);
mBubbleExpandListener = mBubbleExpandListener =
@@ -1171,10 +1163,6 @@ public class StatusBar extends SystemUI implements
mStatusBarView.setPanelStateChangeListener( mStatusBarView.setPanelStateChangeListener(
mNotificationPanelViewController.getPanelStateChangeListener()); mNotificationPanelViewController.getPanelStateChangeListener());
mStatusBarView.setScrimController(mScrimController); mStatusBarView.setScrimController(mScrimController);
mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners);
for (ExpansionChangedListener listener : mExpansionChangedListeners) {
sendInitialExpansionAmount(listener);
}
mNotificationPanelViewController.setBar(mStatusBarView); mNotificationPanelViewController.setBar(mStatusBarView);
@@ -1403,12 +1391,6 @@ public class StatusBar extends SystemUI implements
mDeviceProvisionedController.addCallback(mUserSetupObserver); mDeviceProvisionedController.addCallback(mUserSetupObserver);
mUserSetupObserver.onUserSetupChanged(); mUserSetupObserver.onUserSetupChanged();
for (ExpansionChangedListener listener : mExpansionChangedListeners) {
// The initial expansion amount comes from mNotificationPanelViewController, so we
// should send the amount once we've fully set up that controller.
sendInitialExpansionAmount(listener);
}
// disable profiling bars, since they overlap and clutter the output on app windows // disable profiling bars, since they overlap and clutter the output on app windows
ThreadedRenderer.overrideProperty("disableProfileBars", "true"); ThreadedRenderer.overrideProperty("disableProfileBars", "true");
@@ -4247,24 +4229,6 @@ public class StatusBar extends SystemUI implements
return mTransientShown; return mTransientShown;
} }
public void addExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
mExpansionChangedListeners.add(listener);
sendInitialExpansionAmount(listener);
}
private void sendInitialExpansionAmount(ExpansionChangedListener expansionChangedListener) {
if (mNotificationPanelViewController != null) {
expansionChangedListener.onExpansionChanged(
mNotificationPanelViewController.getExpandedFraction(),
mNotificationPanelViewController.isExpanded());
}
}
public void removeExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
mExpansionChangedListeners.remove(listener);
}
private void updateLightRevealScrimVisibility() { private void updateLightRevealScrimVisibility() {
if (mLightRevealScrim == null) { if (mLightRevealScrim == null) {
// status bar may not be inflated yet // status bar may not be inflated yet

View File

@@ -45,6 +45,11 @@ class PanelExpansionStateManager @Inject constructor() {
listener.onPanelExpansionChanged(fraction, expanded, tracking) listener.onPanelExpansionChanged(fraction, expanded, tracking)
} }
/** Removes a listener. */
fun removeListener(listener: PanelExpansionListener) {
listeners.remove(listener)
}
/** Called when the panel expansion has changed. Notifies all listeners of change. */ /** Called when the panel expansion has changed. Notifies all listeners of change. */
fun onPanelExpansionChanged( fun onPanelExpansionChanged(
@FloatRange(from = 0.0, to = 1.0) fraction: Float, @FloatRange(from = 0.0, to = 1.0) fraction: Float,

View File

@@ -66,6 +66,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.Execution; import com.android.systemui.util.concurrency.Execution;
@@ -219,7 +220,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
mWindowManager, mWindowManager,
mStatusBarStateController, mStatusBarStateController,
mFgExecutor, mFgExecutor,
Optional.of(mStatusBar), new PanelExpansionStateManager(),
mStatusBarKeyguardViewManager, mStatusBarKeyguardViewManager,
mDumpManager, mDumpManager,
mKeyguardUpdateMonitor, mKeyguardUpdateMonitor,

View File

@@ -41,9 +41,10 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -57,7 +58,6 @@ import org.mockito.Captor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.Optional;
import java.util.List; import java.util.List;
@SmallTest @SmallTest
@@ -72,7 +72,7 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
@Mock @Mock
private StatusBarStateController mStatusBarStateController; private StatusBarStateController mStatusBarStateController;
@Mock @Mock
private StatusBar mStatusBar; private PanelExpansionStateManager mPanelExpansionStateManager;
@Mock @Mock
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
@Mock @Mock
@@ -101,8 +101,8 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
@Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStateListenerCaptor; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStateListenerCaptor;
private StatusBarStateController.StateListener mStatusBarStateListener; private StatusBarStateController.StateListener mStatusBarStateListener;
@Captor private ArgumentCaptor<StatusBar.ExpansionChangedListener> mExpansionListenerCaptor; @Captor private ArgumentCaptor<PanelExpansionListener> mExpansionListenerCaptor;
private List<StatusBar.ExpansionChangedListener> mExpansionListeners; private List<PanelExpansionListener> mExpansionListeners;
@Captor private ArgumentCaptor<StatusBarKeyguardViewManager.AlternateAuthInterceptor> @Captor private ArgumentCaptor<StatusBarKeyguardViewManager.AlternateAuthInterceptor>
mAltAuthInterceptorCaptor; mAltAuthInterceptorCaptor;
@@ -121,7 +121,7 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
mController = new UdfpsKeyguardViewController( mController = new UdfpsKeyguardViewController(
mView, mView,
mStatusBarStateController, mStatusBarStateController,
Optional.of(mStatusBar), mPanelExpansionStateManager,
mStatusBarKeyguardViewManager, mStatusBarKeyguardViewManager,
mKeyguardUpdateMonitor, mKeyguardUpdateMonitor,
mDumpManager, mDumpManager,
@@ -170,8 +170,8 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
mController.onViewDetached(); mController.onViewDetached();
verify(mStatusBarStateController).removeCallback(mStatusBarStateListener); verify(mStatusBarStateController).removeCallback(mStatusBarStateListener);
for (StatusBar.ExpansionChangedListener listener : mExpansionListeners) { for (PanelExpansionListener listener : mExpansionListeners) {
verify(mStatusBar).removeExpansionChangedListener(listener); verify(mPanelExpansionStateManager).removeListener(listener);
} }
verify(mKeyguardStateController).removeCallback(mKeyguardStateControllerCallback); verify(mKeyguardStateController).removeCallback(mKeyguardStateControllerCallback);
} }
@@ -434,16 +434,16 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
} }
private void captureExpansionListeners() { private void captureExpansionListeners() {
verify(mStatusBar, times(2)) verify(mPanelExpansionStateManager, times(2))
.addExpansionChangedListener(mExpansionListenerCaptor.capture()); .addListener(mExpansionListenerCaptor.capture());
// first (index=0) is from super class, UdfpsAnimationViewController. // first (index=0) is from super class, UdfpsAnimationViewController.
// second (index=1) is from UdfpsKeyguardViewController // second (index=1) is from UdfpsKeyguardViewController
mExpansionListeners = mExpansionListenerCaptor.getAllValues(); mExpansionListeners = mExpansionListenerCaptor.getAllValues();
} }
private void updateStatusBarExpansion(float expansion, boolean expanded) { private void updateStatusBarExpansion(float fraction, boolean expanded) {
for (StatusBar.ExpansionChangedListener listener : mExpansionListeners) { for (PanelExpansionListener listener : mExpansionListeners) {
listener.onExpansionChanged(expansion, expanded); listener.onPanelExpansionChanged(fraction, expanded, /* tracking= */ false);
} }
} }

View File

@@ -53,25 +53,6 @@ class PhoneStatusBarViewTest : SysuiTestCase() {
view.setBar(statusBar) view.setBar(statusBar)
} }
@Test
fun panelExpansionChanged_expansionChangeListenerNotified() {
val listener = TestExpansionChangedListener()
view.setExpansionChangedListeners(listOf(listener))
val fraction = 0.4f
val isExpanded = true
view.panelExpansionChanged(fraction, isExpanded)
assertThat(listener.fraction).isEqualTo(fraction)
assertThat(listener.isExpanded).isEqualTo(isExpanded)
}
@Test
fun panelExpansionChanged_noListeners_noCrash() {
view.panelExpansionChanged(1f, false)
// No assert needed, just testing no crash
}
@Test @Test
fun panelStateChanged_toStateOpening_listenerNotified() { fun panelStateChanged_toStateOpening_listenerNotified() {
val listener = TestStateChangedListener() val listener = TestStateChangedListener()
@@ -145,17 +126,6 @@ class PhoneStatusBarViewTest : SysuiTestCase() {
// No assert needed, just testing no crash // No assert needed, just testing no crash
} }
private class TestExpansionChangedListener
: StatusBar.ExpansionChangedListener {
var fraction: Float = 0f
var isExpanded: Boolean = false
override fun onExpansionChanged(expansion: Float, expanded: Boolean) {
this.fraction = expansion
this.isExpanded = expanded
}
}
private class TestStateChangedListener : PanelBar.PanelStateChangeListener { private class TestStateChangedListener : PanelBar.PanelStateChangeListener {
var state: Int = 0 var state: Int = 0
override fun onStateChanged(state: Int) { override fun onStateChanged(state: Int) {