Merge "Merge PanelEventsEmitter into ShadeExpansionStateManager" into tm-qpr-dev am: f8b00cb578
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20246319 Change-Id: Id665a04c3437b79c48916e1c33076394f73b7144 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -43,7 +43,8 @@ import com.android.systemui.dreams.DreamOverlayStateController
|
|||||||
import com.android.systemui.keyguard.WakefulnessLifecycle
|
import com.android.systemui.keyguard.WakefulnessLifecycle
|
||||||
import com.android.systemui.media.dream.MediaDreamComplication
|
import com.android.systemui.media.dream.MediaDreamComplication
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||||
import com.android.systemui.shade.NotifPanelEvents
|
import com.android.systemui.shade.ShadeStateEvents
|
||||||
|
import com.android.systemui.shade.ShadeStateEvents.ShadeStateEventsListener
|
||||||
import com.android.systemui.statusbar.CrossFadeHelper
|
import com.android.systemui.statusbar.CrossFadeHelper
|
||||||
import com.android.systemui.statusbar.StatusBarState
|
import com.android.systemui.statusbar.StatusBarState
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
||||||
@@ -96,7 +97,7 @@ constructor(
|
|||||||
private val dreamOverlayStateController: DreamOverlayStateController,
|
private val dreamOverlayStateController: DreamOverlayStateController,
|
||||||
configurationController: ConfigurationController,
|
configurationController: ConfigurationController,
|
||||||
wakefulnessLifecycle: WakefulnessLifecycle,
|
wakefulnessLifecycle: WakefulnessLifecycle,
|
||||||
panelEventsEvents: NotifPanelEvents,
|
panelEventsEvents: ShadeStateEvents,
|
||||||
private val secureSettings: SecureSettings,
|
private val secureSettings: SecureSettings,
|
||||||
@Main private val handler: Handler,
|
@Main private val handler: Handler,
|
||||||
) {
|
) {
|
||||||
@@ -534,8 +535,8 @@ constructor(
|
|||||||
mediaHosts.forEach { it?.updateViewVisibility() }
|
mediaHosts.forEach { it?.updateViewVisibility() }
|
||||||
}
|
}
|
||||||
|
|
||||||
panelEventsEvents.registerListener(
|
panelEventsEvents.addShadeStateEventsListener(
|
||||||
object : NotifPanelEvents.Listener {
|
object : ShadeStateEventsListener {
|
||||||
override fun onExpandImmediateChanged(isExpandImmediateEnabled: Boolean) {
|
override fun onExpandImmediateChanged(isExpandImmediateEnabled: Boolean) {
|
||||||
skipQqsOnExpansion = isExpandImmediateEnabled
|
skipQqsOnExpansion = isExpandImmediateEnabled
|
||||||
updateDesiredLocation()
|
updateDesiredLocation()
|
||||||
|
|||||||
@@ -135,7 +135,6 @@ import com.android.systemui.biometrics.AuthController;
|
|||||||
import com.android.systemui.camera.CameraGestureHelper;
|
import com.android.systemui.camera.CameraGestureHelper;
|
||||||
import com.android.systemui.classifier.Classifier;
|
import com.android.systemui.classifier.Classifier;
|
||||||
import com.android.systemui.classifier.FalsingCollector;
|
import com.android.systemui.classifier.FalsingCollector;
|
||||||
import com.android.systemui.dagger.SysUISingleton;
|
|
||||||
import com.android.systemui.dagger.qualifiers.DisplayId;
|
import com.android.systemui.dagger.qualifiers.DisplayId;
|
||||||
import com.android.systemui.dagger.qualifiers.Main;
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.doze.DozeLog;
|
import com.android.systemui.doze.DozeLog;
|
||||||
@@ -231,7 +230,6 @@ import com.android.systemui.statusbar.window.StatusBarWindowStateController;
|
|||||||
import com.android.systemui.unfold.SysUIUnfoldComponent;
|
import com.android.systemui.unfold.SysUIUnfoldComponent;
|
||||||
import com.android.systemui.util.Compile;
|
import com.android.systemui.util.Compile;
|
||||||
import com.android.systemui.util.LargeScreenUtils;
|
import com.android.systemui.util.LargeScreenUtils;
|
||||||
import com.android.systemui.util.ListenerSet;
|
|
||||||
import com.android.systemui.util.Utils;
|
import com.android.systemui.util.Utils;
|
||||||
import com.android.systemui.util.time.SystemClock;
|
import com.android.systemui.util.time.SystemClock;
|
||||||
import com.android.wm.shell.animation.FlingAnimationUtils;
|
import com.android.wm.shell.animation.FlingAnimationUtils;
|
||||||
@@ -372,7 +370,6 @@ public final class NotificationPanelViewController {
|
|||||||
private final TapAgainViewController mTapAgainViewController;
|
private final TapAgainViewController mTapAgainViewController;
|
||||||
private final LargeScreenShadeHeaderController mLargeScreenShadeHeaderController;
|
private final LargeScreenShadeHeaderController mLargeScreenShadeHeaderController;
|
||||||
private final RecordingController mRecordingController;
|
private final RecordingController mRecordingController;
|
||||||
private final PanelEventsEmitter mPanelEventsEmitter;
|
|
||||||
private final boolean mVibrateOnOpening;
|
private final boolean mVibrateOnOpening;
|
||||||
private final VelocityTracker mVelocityTracker = VelocityTracker.obtain();
|
private final VelocityTracker mVelocityTracker = VelocityTracker.obtain();
|
||||||
private final FlingAnimationUtils mFlingAnimationUtilsClosing;
|
private final FlingAnimationUtils mFlingAnimationUtilsClosing;
|
||||||
@@ -880,7 +877,6 @@ public final class NotificationPanelViewController {
|
|||||||
Provider<KeyguardBottomAreaViewController> keyguardBottomAreaViewControllerProvider,
|
Provider<KeyguardBottomAreaViewController> keyguardBottomAreaViewControllerProvider,
|
||||||
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
|
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
|
||||||
NotificationListContainer notificationListContainer,
|
NotificationListContainer notificationListContainer,
|
||||||
PanelEventsEmitter panelEventsEmitter,
|
|
||||||
NotificationStackSizeCalculator notificationStackSizeCalculator,
|
NotificationStackSizeCalculator notificationStackSizeCalculator,
|
||||||
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
|
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
|
||||||
ShadeTransitionController shadeTransitionController,
|
ShadeTransitionController shadeTransitionController,
|
||||||
@@ -993,7 +989,6 @@ public final class NotificationPanelViewController {
|
|||||||
mMediaDataManager = mediaDataManager;
|
mMediaDataManager = mediaDataManager;
|
||||||
mTapAgainViewController = tapAgainViewController;
|
mTapAgainViewController = tapAgainViewController;
|
||||||
mSysUiState = sysUiState;
|
mSysUiState = sysUiState;
|
||||||
mPanelEventsEmitter = panelEventsEmitter;
|
|
||||||
pulseExpansionHandler.setPulseExpandAbortListener(() -> {
|
pulseExpansionHandler.setPulseExpandAbortListener(() -> {
|
||||||
if (mQs != null) {
|
if (mQs != null) {
|
||||||
mQs.animateHeaderSlidingOut();
|
mQs.animateHeaderSlidingOut();
|
||||||
@@ -1948,7 +1943,7 @@ public final class NotificationPanelViewController {
|
|||||||
private void setQsExpandImmediate(boolean expandImmediate) {
|
private void setQsExpandImmediate(boolean expandImmediate) {
|
||||||
if (expandImmediate != mQsExpandImmediate) {
|
if (expandImmediate != mQsExpandImmediate) {
|
||||||
mQsExpandImmediate = expandImmediate;
|
mQsExpandImmediate = expandImmediate;
|
||||||
mPanelEventsEmitter.notifyExpandImmediateChange(expandImmediate);
|
mShadeExpansionStateManager.notifyExpandImmediateChange(expandImmediate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3889,7 +3884,7 @@ public final class NotificationPanelViewController {
|
|||||||
boolean wasRunning = mIsLaunchAnimationRunning;
|
boolean wasRunning = mIsLaunchAnimationRunning;
|
||||||
mIsLaunchAnimationRunning = running;
|
mIsLaunchAnimationRunning = running;
|
||||||
if (wasRunning != mIsLaunchAnimationRunning) {
|
if (wasRunning != mIsLaunchAnimationRunning) {
|
||||||
mPanelEventsEmitter.notifyLaunchingActivityChanged(running);
|
mShadeExpansionStateManager.notifyLaunchingActivityChanged(running);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3898,7 +3893,7 @@ public final class NotificationPanelViewController {
|
|||||||
boolean wasClosing = isClosing();
|
boolean wasClosing = isClosing();
|
||||||
mClosing = isClosing;
|
mClosing = isClosing;
|
||||||
if (wasClosing != isClosing) {
|
if (wasClosing != isClosing) {
|
||||||
mPanelEventsEmitter.notifyPanelCollapsingChanged(isClosing);
|
mShadeExpansionStateManager.notifyPanelCollapsingChanged(isClosing);
|
||||||
}
|
}
|
||||||
mAmbientState.setIsClosing(isClosing);
|
mAmbientState.setIsClosing(isClosing);
|
||||||
}
|
}
|
||||||
@@ -5921,44 +5916,6 @@ public final class NotificationPanelViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SysUISingleton
|
|
||||||
static class PanelEventsEmitter implements NotifPanelEvents {
|
|
||||||
|
|
||||||
private final ListenerSet<Listener> mListeners = new ListenerSet<>();
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
PanelEventsEmitter() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerListener(@androidx.annotation.NonNull @NonNull Listener listener) {
|
|
||||||
mListeners.addIfAbsent(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void unregisterListener(@androidx.annotation.NonNull @NonNull Listener listener) {
|
|
||||||
mListeners.remove(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void notifyLaunchingActivityChanged(boolean isLaunchingActivity) {
|
|
||||||
for (Listener cb : mListeners) {
|
|
||||||
cb.onLaunchingActivityChanged(isLaunchingActivity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void notifyPanelCollapsingChanged(boolean isCollapsing) {
|
|
||||||
for (NotifPanelEvents.Listener cb : mListeners) {
|
|
||||||
cb.onPanelCollapsingChanged(isCollapsing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void notifyExpandImmediateChange(boolean expandImmediateEnabled) {
|
|
||||||
for (NotifPanelEvents.Listener cb : mListeners) {
|
|
||||||
cb.onExpandImmediateChanged(expandImmediateEnabled);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Handles MotionEvents for the Shade. */
|
/** Handles MotionEvents for the Shade. */
|
||||||
public final class TouchHandler implements View.OnTouchListener {
|
public final class TouchHandler implements View.OnTouchListener {
|
||||||
private long mLastTouchDownTime = -1L;
|
private long mLastTouchDownTime = -1L;
|
||||||
|
|||||||
@@ -21,10 +21,9 @@ import com.android.systemui.dagger.SysUISingleton;
|
|||||||
import dagger.Binds;
|
import dagger.Binds;
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
|
|
||||||
/** Provides a {@link NotifPanelEvents} in {@link SysUISingleton} scope. */
|
/** Provides a {@link ShadeStateEvents} in {@link SysUISingleton} scope. */
|
||||||
@Module
|
@Module
|
||||||
public abstract class NotifPanelEventsModule {
|
public abstract class ShadeEventsModule {
|
||||||
@Binds
|
@Binds
|
||||||
abstract NotifPanelEvents bindPanelEvents(
|
abstract ShadeStateEvents bindShadeEvents(ShadeExpansionStateManager impl);
|
||||||
NotificationPanelViewController.PanelEventsEmitter impl);
|
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,7 @@ import android.annotation.IntDef
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.annotation.FloatRange
|
import androidx.annotation.FloatRange
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.shade.ShadeStateEvents.ShadeStateEventsListener
|
||||||
import com.android.systemui.util.Compile
|
import com.android.systemui.util.Compile
|
||||||
import java.util.concurrent.CopyOnWriteArrayList
|
import java.util.concurrent.CopyOnWriteArrayList
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -30,11 +31,12 @@ import javax.inject.Inject
|
|||||||
* TODO(b/200063118): Make this class the one source of truth for the state of panel expansion.
|
* TODO(b/200063118): Make this class the one source of truth for the state of panel expansion.
|
||||||
*/
|
*/
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
class ShadeExpansionStateManager @Inject constructor() {
|
class ShadeExpansionStateManager @Inject constructor() : ShadeStateEvents {
|
||||||
|
|
||||||
private val expansionListeners = CopyOnWriteArrayList<ShadeExpansionListener>()
|
private val expansionListeners = CopyOnWriteArrayList<ShadeExpansionListener>()
|
||||||
private val qsExpansionListeners = CopyOnWriteArrayList<ShadeQsExpansionListener>()
|
private val qsExpansionListeners = CopyOnWriteArrayList<ShadeQsExpansionListener>()
|
||||||
private val stateListeners = CopyOnWriteArrayList<ShadeStateListener>()
|
private val stateListeners = CopyOnWriteArrayList<ShadeStateListener>()
|
||||||
|
private val shadeStateEventsListeners = CopyOnWriteArrayList<ShadeStateEventsListener>()
|
||||||
|
|
||||||
@PanelState private var state: Int = STATE_CLOSED
|
@PanelState private var state: Int = STATE_CLOSED
|
||||||
@FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
|
@FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
|
||||||
@@ -79,6 +81,14 @@ class ShadeExpansionStateManager @Inject constructor() {
|
|||||||
stateListeners.remove(listener)
|
stateListeners.remove(listener)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun addShadeStateEventsListener(listener: ShadeStateEventsListener) {
|
||||||
|
shadeStateEventsListeners.addIfAbsent(listener)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun removeShadeStateEventsListener(listener: ShadeStateEventsListener) {
|
||||||
|
shadeStateEventsListeners.remove(listener)
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns true if the panel is currently closed and false otherwise. */
|
/** Returns true if the panel is currently closed and false otherwise. */
|
||||||
fun isClosed(): Boolean = state == STATE_CLOSED
|
fun isClosed(): Boolean = state == STATE_CLOSED
|
||||||
|
|
||||||
@@ -162,6 +172,24 @@ class ShadeExpansionStateManager @Inject constructor() {
|
|||||||
stateListeners.forEach { it.onPanelStateChanged(state) }
|
stateListeners.forEach { it.onPanelStateChanged(state) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun notifyLaunchingActivityChanged(isLaunchingActivity: Boolean) {
|
||||||
|
for (cb in shadeStateEventsListeners) {
|
||||||
|
cb.onLaunchingActivityChanged(isLaunchingActivity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun notifyPanelCollapsingChanged(isCollapsing: Boolean) {
|
||||||
|
for (cb in shadeStateEventsListeners) {
|
||||||
|
cb.onPanelCollapsingChanged(isCollapsing)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun notifyExpandImmediateChange(expandImmediateEnabled: Boolean) {
|
||||||
|
for (cb in shadeStateEventsListeners) {
|
||||||
|
cb.onExpandImmediateChanged(expandImmediateEnabled)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun debugLog(msg: String) {
|
private fun debugLog(msg: String) {
|
||||||
if (!DEBUG) return
|
if (!DEBUG) return
|
||||||
Log.v(TAG, msg)
|
Log.v(TAG, msg)
|
||||||
|
|||||||
@@ -17,26 +17,24 @@
|
|||||||
package com.android.systemui.shade
|
package com.android.systemui.shade
|
||||||
|
|
||||||
/** Provides certain notification panel events. */
|
/** Provides certain notification panel events. */
|
||||||
interface NotifPanelEvents {
|
interface ShadeStateEvents {
|
||||||
|
|
||||||
/** Registers callbacks to be invoked when notification panel events occur. */
|
/** Registers callbacks to be invoked when notification panel events occur. */
|
||||||
fun registerListener(listener: Listener)
|
fun addShadeStateEventsListener(listener: ShadeStateEventsListener)
|
||||||
|
|
||||||
/** Unregisters callbacks previously registered via [registerListener] */
|
/** Unregisters callbacks previously registered via [addShadeStateEventsListener] */
|
||||||
fun unregisterListener(listener: Listener)
|
fun removeShadeStateEventsListener(listener: ShadeStateEventsListener)
|
||||||
|
|
||||||
/** Callbacks for certain notification panel events. */
|
/** Callbacks for certain notification panel events. */
|
||||||
interface Listener {
|
interface ShadeStateEventsListener {
|
||||||
|
|
||||||
/** Invoked when the notification panel starts or stops collapsing. */
|
/** Invoked when the notification panel starts or stops collapsing. */
|
||||||
@JvmDefault
|
@JvmDefault fun onPanelCollapsingChanged(isCollapsing: Boolean) {}
|
||||||
fun onPanelCollapsingChanged(isCollapsing: Boolean) {}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Invoked when the notification panel starts or stops launching an [android.app.Activity].
|
* Invoked when the notification panel starts or stops launching an [android.app.Activity].
|
||||||
*/
|
*/
|
||||||
@JvmDefault
|
@JvmDefault fun onLaunchingActivityChanged(isLaunchingActivity: Boolean) {}
|
||||||
fun onLaunchingActivityChanged(isLaunchingActivity: Boolean) {}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Invoked when the "expand immediate" attribute changes.
|
* Invoked when the "expand immediate" attribute changes.
|
||||||
@@ -47,7 +45,6 @@ interface NotifPanelEvents {
|
|||||||
* Another example is when full QS is showing, and we swipe up from the bottom. Instead of
|
* Another example is when full QS is showing, and we swipe up from the bottom. Instead of
|
||||||
* going to QQS, the panel fully collapses.
|
* going to QQS, the panel fully collapses.
|
||||||
*/
|
*/
|
||||||
@JvmDefault
|
@JvmDefault fun onExpandImmediateChanged(isExpandImmediateEnabled: Boolean) {}
|
||||||
fun onExpandImmediateChanged(isExpandImmediateEnabled: Boolean) {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ import com.android.systemui.dagger.SysUISingleton;
|
|||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.shade.NotifPanelEvents;
|
import com.android.systemui.shade.ShadeStateEvents;
|
||||||
import com.android.systemui.statusbar.notification.collection.GroupEntry;
|
import com.android.systemui.statusbar.notification.collection.GroupEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.ListEntry;
|
import com.android.systemui.statusbar.notification.collection.ListEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
||||||
@@ -55,12 +55,12 @@ import javax.inject.Inject;
|
|||||||
// TODO(b/204468557): Move to @CoordinatorScope
|
// TODO(b/204468557): Move to @CoordinatorScope
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
public class VisualStabilityCoordinator implements Coordinator, Dumpable,
|
public class VisualStabilityCoordinator implements Coordinator, Dumpable,
|
||||||
NotifPanelEvents.Listener {
|
ShadeStateEvents.ShadeStateEventsListener {
|
||||||
public static final String TAG = "VisualStability";
|
public static final String TAG = "VisualStability";
|
||||||
public static final boolean DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.VERBOSE);
|
public static final boolean DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.VERBOSE);
|
||||||
private final DelayableExecutor mDelayableExecutor;
|
private final DelayableExecutor mDelayableExecutor;
|
||||||
private final HeadsUpManager mHeadsUpManager;
|
private final HeadsUpManager mHeadsUpManager;
|
||||||
private final NotifPanelEvents mNotifPanelEvents;
|
private final ShadeStateEvents mShadeStateEvents;
|
||||||
private final StatusBarStateController mStatusBarStateController;
|
private final StatusBarStateController mStatusBarStateController;
|
||||||
private final VisualStabilityProvider mVisualStabilityProvider;
|
private final VisualStabilityProvider mVisualStabilityProvider;
|
||||||
private final WakefulnessLifecycle mWakefulnessLifecycle;
|
private final WakefulnessLifecycle mWakefulnessLifecycle;
|
||||||
@@ -92,7 +92,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable,
|
|||||||
DelayableExecutor delayableExecutor,
|
DelayableExecutor delayableExecutor,
|
||||||
DumpManager dumpManager,
|
DumpManager dumpManager,
|
||||||
HeadsUpManager headsUpManager,
|
HeadsUpManager headsUpManager,
|
||||||
NotifPanelEvents notifPanelEvents,
|
ShadeStateEvents shadeStateEvents,
|
||||||
StatusBarStateController statusBarStateController,
|
StatusBarStateController statusBarStateController,
|
||||||
VisualStabilityProvider visualStabilityProvider,
|
VisualStabilityProvider visualStabilityProvider,
|
||||||
WakefulnessLifecycle wakefulnessLifecycle) {
|
WakefulnessLifecycle wakefulnessLifecycle) {
|
||||||
@@ -101,7 +101,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable,
|
|||||||
mWakefulnessLifecycle = wakefulnessLifecycle;
|
mWakefulnessLifecycle = wakefulnessLifecycle;
|
||||||
mStatusBarStateController = statusBarStateController;
|
mStatusBarStateController = statusBarStateController;
|
||||||
mDelayableExecutor = delayableExecutor;
|
mDelayableExecutor = delayableExecutor;
|
||||||
mNotifPanelEvents = notifPanelEvents;
|
mShadeStateEvents = shadeStateEvents;
|
||||||
|
|
||||||
dumpManager.registerDumpable(this);
|
dumpManager.registerDumpable(this);
|
||||||
}
|
}
|
||||||
@@ -114,7 +114,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable,
|
|||||||
|
|
||||||
mStatusBarStateController.addCallback(mStatusBarStateControllerListener);
|
mStatusBarStateController.addCallback(mStatusBarStateControllerListener);
|
||||||
mPulsing = mStatusBarStateController.isPulsing();
|
mPulsing = mStatusBarStateController.isPulsing();
|
||||||
mNotifPanelEvents.registerListener(this);
|
mShadeStateEvents.addShadeStateEventsListener(this);
|
||||||
|
|
||||||
pipeline.setVisualStabilityManager(mNotifStabilityManager);
|
pipeline.setVisualStabilityManager(mNotifStabilityManager);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ import com.android.systemui.dagger.qualifiers.UiBackground;
|
|||||||
import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
|
import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.settings.UserContextProvider;
|
import com.android.systemui.settings.UserContextProvider;
|
||||||
import com.android.systemui.shade.NotifPanelEventsModule;
|
|
||||||
import com.android.systemui.shade.ShadeController;
|
import com.android.systemui.shade.ShadeController;
|
||||||
|
import com.android.systemui.shade.ShadeEventsModule;
|
||||||
import com.android.systemui.statusbar.NotificationListener;
|
import com.android.systemui.statusbar.NotificationListener;
|
||||||
import com.android.systemui.statusbar.notification.AssistantFeedbackController;
|
import com.android.systemui.statusbar.notification.AssistantFeedbackController;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl;
|
import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl;
|
||||||
@@ -93,7 +93,7 @@ import dagger.Provides;
|
|||||||
@Module(includes = {
|
@Module(includes = {
|
||||||
CoordinatorsModule.class,
|
CoordinatorsModule.class,
|
||||||
KeyguardNotificationVisibilityProviderModule.class,
|
KeyguardNotificationVisibilityProviderModule.class,
|
||||||
NotifPanelEventsModule.class,
|
ShadeEventsModule.class,
|
||||||
NotifPipelineChoreographerModule.class,
|
NotifPipelineChoreographerModule.class,
|
||||||
NotificationSectionHeadersModule.class,
|
NotificationSectionHeadersModule.class,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import com.android.systemui.dreams.DreamOverlayStateController
|
|||||||
import com.android.systemui.keyguard.WakefulnessLifecycle
|
import com.android.systemui.keyguard.WakefulnessLifecycle
|
||||||
import com.android.systemui.media.dream.MediaDreamComplication
|
import com.android.systemui.media.dream.MediaDreamComplication
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||||
import com.android.systemui.shade.testing.FakeNotifPanelEvents
|
import com.android.systemui.shade.ShadeExpansionStateManager
|
||||||
import com.android.systemui.statusbar.StatusBarState
|
import com.android.systemui.statusbar.StatusBarState
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
||||||
@@ -89,7 +89,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
private lateinit var mediaHierarchyManager: MediaHierarchyManager
|
private lateinit var mediaHierarchyManager: MediaHierarchyManager
|
||||||
private lateinit var mediaFrame: ViewGroup
|
private lateinit var mediaFrame: ViewGroup
|
||||||
private val configurationController = FakeConfigurationController()
|
private val configurationController = FakeConfigurationController()
|
||||||
private val notifPanelEvents = FakeNotifPanelEvents()
|
private val notifPanelEvents = ShadeExpansionStateManager()
|
||||||
private val settings = FakeSettings()
|
private val settings = FakeSettings()
|
||||||
private lateinit var testableLooper: TestableLooper
|
private lateinit var testableLooper: TestableLooper
|
||||||
private lateinit var fakeHandler: FakeHandler
|
private lateinit var fakeHandler: FakeHandler
|
||||||
@@ -346,7 +346,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun isCurrentlyInGuidedTransformation_hostsVisible_expandImmediateEnabled_returnsFalse() {
|
fun isCurrentlyInGuidedTransformation_hostsVisible_expandImmediateEnabled_returnsFalse() {
|
||||||
notifPanelEvents.changeExpandImmediate(expandImmediate = true)
|
notifPanelEvents.notifyExpandImmediateChange(true)
|
||||||
goToLockscreen()
|
goToLockscreen()
|
||||||
enterGuidedTransformation()
|
enterGuidedTransformation()
|
||||||
whenever(lockHost.visible).thenReturn(true)
|
whenever(lockHost.visible).thenReturn(true)
|
||||||
|
|||||||
@@ -438,8 +438,6 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
|||||||
when(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState);
|
when(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState);
|
||||||
|
|
||||||
mMainHandler = new Handler(Looper.getMainLooper());
|
mMainHandler = new Handler(Looper.getMainLooper());
|
||||||
NotificationPanelViewController.PanelEventsEmitter panelEventsEmitter =
|
|
||||||
new NotificationPanelViewController.PanelEventsEmitter();
|
|
||||||
|
|
||||||
mNotificationPanelViewController = new NotificationPanelViewController(
|
mNotificationPanelViewController = new NotificationPanelViewController(
|
||||||
mView,
|
mView,
|
||||||
@@ -495,7 +493,6 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
|||||||
() -> mKeyguardBottomAreaViewController,
|
() -> mKeyguardBottomAreaViewController,
|
||||||
mKeyguardUnlockAnimationController,
|
mKeyguardUnlockAnimationController,
|
||||||
mNotificationListContainer,
|
mNotificationListContainer,
|
||||||
panelEventsEmitter,
|
|
||||||
mNotificationStackSizeCalculator,
|
mNotificationStackSizeCalculator,
|
||||||
mUnlockedScreenOffAnimationController,
|
mUnlockedScreenOffAnimationController,
|
||||||
mShadeTransitionController,
|
mShadeTransitionController,
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2022 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.systemui.shade.testing
|
|
||||||
|
|
||||||
import com.android.systemui.shade.NotifPanelEvents
|
|
||||||
|
|
||||||
/** Fake implementation of [NotifPanelEvents] for testing. */
|
|
||||||
class FakeNotifPanelEvents : NotifPanelEvents {
|
|
||||||
|
|
||||||
private val listeners = mutableListOf<NotifPanelEvents.Listener>()
|
|
||||||
|
|
||||||
override fun registerListener(listener: NotifPanelEvents.Listener) {
|
|
||||||
listeners.add(listener)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun unregisterListener(listener: NotifPanelEvents.Listener) {
|
|
||||||
listeners.remove(listener)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun changeExpandImmediate(expandImmediate: Boolean) {
|
|
||||||
listeners.forEach { it.onExpandImmediateChanged(expandImmediate) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -36,7 +36,8 @@ import com.android.systemui.SysuiTestCase;
|
|||||||
import com.android.systemui.dump.DumpManager;
|
import com.android.systemui.dump.DumpManager;
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.shade.NotifPanelEvents;
|
import com.android.systemui.shade.ShadeStateEvents;
|
||||||
|
import com.android.systemui.shade.ShadeStateEvents.ShadeStateEventsListener;
|
||||||
import com.android.systemui.statusbar.notification.collection.GroupEntry;
|
import com.android.systemui.statusbar.notification.collection.GroupEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder;
|
import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
||||||
@@ -71,12 +72,12 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase {
|
|||||||
@Mock private StatusBarStateController mStatusBarStateController;
|
@Mock private StatusBarStateController mStatusBarStateController;
|
||||||
@Mock private Pluggable.PluggableListener<NotifStabilityManager> mInvalidateListener;
|
@Mock private Pluggable.PluggableListener<NotifStabilityManager> mInvalidateListener;
|
||||||
@Mock private HeadsUpManager mHeadsUpManager;
|
@Mock private HeadsUpManager mHeadsUpManager;
|
||||||
@Mock private NotifPanelEvents mNotifPanelEvents;
|
@Mock private ShadeStateEvents mShadeStateEvents;
|
||||||
@Mock private VisualStabilityProvider mVisualStabilityProvider;
|
@Mock private VisualStabilityProvider mVisualStabilityProvider;
|
||||||
|
|
||||||
@Captor private ArgumentCaptor<WakefulnessLifecycle.Observer> mWakefulnessObserverCaptor;
|
@Captor private ArgumentCaptor<WakefulnessLifecycle.Observer> mWakefulnessObserverCaptor;
|
||||||
@Captor private ArgumentCaptor<StatusBarStateController.StateListener> mSBStateListenerCaptor;
|
@Captor private ArgumentCaptor<StatusBarStateController.StateListener> mSBStateListenerCaptor;
|
||||||
@Captor private ArgumentCaptor<NotifPanelEvents.Listener> mNotifPanelEventsCallbackCaptor;
|
@Captor private ArgumentCaptor<ShadeStateEventsListener> mNotifPanelEventsCallbackCaptor;
|
||||||
@Captor private ArgumentCaptor<NotifStabilityManager> mNotifStabilityManagerCaptor;
|
@Captor private ArgumentCaptor<NotifStabilityManager> mNotifStabilityManagerCaptor;
|
||||||
|
|
||||||
private FakeSystemClock mFakeSystemClock = new FakeSystemClock();
|
private FakeSystemClock mFakeSystemClock = new FakeSystemClock();
|
||||||
@@ -84,7 +85,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase {
|
|||||||
|
|
||||||
private WakefulnessLifecycle.Observer mWakefulnessObserver;
|
private WakefulnessLifecycle.Observer mWakefulnessObserver;
|
||||||
private StatusBarStateController.StateListener mStatusBarStateListener;
|
private StatusBarStateController.StateListener mStatusBarStateListener;
|
||||||
private NotifPanelEvents.Listener mNotifPanelEventsCallback;
|
private ShadeStateEvents.ShadeStateEventsListener mNotifPanelEventsCallback;
|
||||||
private NotifStabilityManager mNotifStabilityManager;
|
private NotifStabilityManager mNotifStabilityManager;
|
||||||
private NotificationEntry mEntry;
|
private NotificationEntry mEntry;
|
||||||
private GroupEntry mGroupEntry;
|
private GroupEntry mGroupEntry;
|
||||||
@@ -97,7 +98,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase {
|
|||||||
mFakeExecutor,
|
mFakeExecutor,
|
||||||
mDumpManager,
|
mDumpManager,
|
||||||
mHeadsUpManager,
|
mHeadsUpManager,
|
||||||
mNotifPanelEvents,
|
mShadeStateEvents,
|
||||||
mStatusBarStateController,
|
mStatusBarStateController,
|
||||||
mVisualStabilityProvider,
|
mVisualStabilityProvider,
|
||||||
mWakefulnessLifecycle);
|
mWakefulnessLifecycle);
|
||||||
@@ -111,7 +112,8 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase {
|
|||||||
verify(mStatusBarStateController).addCallback(mSBStateListenerCaptor.capture());
|
verify(mStatusBarStateController).addCallback(mSBStateListenerCaptor.capture());
|
||||||
mStatusBarStateListener = mSBStateListenerCaptor.getValue();
|
mStatusBarStateListener = mSBStateListenerCaptor.getValue();
|
||||||
|
|
||||||
verify(mNotifPanelEvents).registerListener(mNotifPanelEventsCallbackCaptor.capture());
|
verify(mShadeStateEvents).addShadeStateEventsListener(
|
||||||
|
mNotifPanelEventsCallbackCaptor.capture());
|
||||||
mNotifPanelEventsCallback = mNotifPanelEventsCallbackCaptor.getValue();
|
mNotifPanelEventsCallback = mNotifPanelEventsCallbackCaptor.getValue();
|
||||||
|
|
||||||
verify(mNotifPipeline).setVisualStabilityManager(mNotifStabilityManagerCaptor.capture());
|
verify(mNotifPipeline).setVisualStabilityManager(mNotifStabilityManagerCaptor.capture());
|
||||||
|
|||||||
Reference in New Issue
Block a user