Merge "Add logging to NPVC" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-05-03 18:55:24 +00:00
committed by Android (Google) Code Review
4 changed files with 205 additions and 18 deletions

View File

@@ -0,0 +1,143 @@
/*
* 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.statusbar.phone
import android.view.MotionEvent
import com.android.internal.util.RingBuffer
import com.android.systemui.dump.DumpsysTableLogger
import com.android.systemui.dump.Row
import java.text.SimpleDateFormat
import java.util.Locale
/** Container for storing information about [MotionEvent.ACTION_DOWN] on
* [NotificationPanelViewController].
*
* This will be used in a dump to log the latest recorded down events.
*
* @see NotificationPanelViewController.initDownStates
*/
class NPVCDownEventState private constructor(
private var timeStamp: Long = 0,
private var x: Float = 0f,
private var y: Float = 0f,
private var qsTouchAboveFalsingThreshold: Boolean = false,
private var dozing: Boolean = false,
private var collapsed: Boolean = false,
private var canCollapseOnQQS: Boolean = false,
private var listenForHeadsUp: Boolean = false,
private var allowExpandForSmallExpansion: Boolean = false,
private var touchSlopExceededBeforeDown: Boolean = false,
private var lastEventSynthesized: Boolean = false
) {
/**
* List of [String] to be used as a [Row] with [DumpsysTableLogger].
*/
val asStringList: List<String> by lazy {
listOf(
DATE_FORMAT.format(timeStamp),
x.toString(),
y.toString(),
qsTouchAboveFalsingThreshold.toString(),
dozing.toString(),
collapsed.toString(),
canCollapseOnQQS.toString(),
listenForHeadsUp.toString(),
allowExpandForSmallExpansion.toString(),
touchSlopExceededBeforeDown.toString(),
lastEventSynthesized.toString()
)
}
/**
* [RingBuffer] to store [NPVCDownEventState]. After the buffer is full, it will recycle old
* events.
*
* Do not use [append] to add new elements. Instead use [insert], as it will recycle if
* necessary.
*/
class Buffer(
capacity: Int
) : RingBuffer<NPVCDownEventState>(NPVCDownEventState::class.java, capacity) {
override fun append(t: NPVCDownEventState?) {
throw UnsupportedOperationException("Not supported, use insert instead")
}
override fun createNewItem(): NPVCDownEventState {
return NPVCDownEventState()
}
/**
* Insert a new element in the buffer.
*/
fun insert(
timeStamp: Long,
x: Float,
y: Float,
qsTouchAboveFalsingThreshold: Boolean,
dozing: Boolean,
collapsed: Boolean,
canCollapseOnQQS: Boolean,
listenForHeadsUp: Boolean,
allowExpandForSmallExpansion: Boolean,
touchSlopExceededBeforeDown: Boolean,
lastEventSynthesized: Boolean
) {
nextSlot.apply {
this.timeStamp = timeStamp
this.x = x
this.y = y
this.qsTouchAboveFalsingThreshold = qsTouchAboveFalsingThreshold
this.dozing = dozing
this.collapsed = collapsed
this.canCollapseOnQQS = canCollapseOnQQS
this.listenForHeadsUp = listenForHeadsUp
this.allowExpandForSmallExpansion = allowExpandForSmallExpansion
this.touchSlopExceededBeforeDown = touchSlopExceededBeforeDown
this.lastEventSynthesized = lastEventSynthesized
}
}
/**
* Returns the content of the buffer (sorted from latest to newest).
*
* @see NPVCDownEventState.asStringList
*/
fun toList(): List<Row> {
return toArray().map { it.asStringList }
}
}
companion object {
/**
* Headers for dumping a table using [DumpsysTableLogger].
*/
@JvmField
val TABLE_HEADERS = listOf(
"Timestamp",
"X",
"Y",
"QSTouchAboveFalsingThreshold",
"Dozing",
"Collapsed",
"CanCollapseOnQQS",
"ListenForHeadsUp",
"AllowExpandForSmallExpansion",
"TouchSlopExceededBeforeDown",
"LastEventSynthesized"
)
}
}
private val DATE_FORMAT = SimpleDateFormat("MM-dd HH:mm:ss.SSS", Locale.US)

View File

@@ -36,6 +36,7 @@ import static com.android.systemui.statusbar.notification.stack.StackStateAnimat
import static com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManagerKt.STATE_CLOSED; import static com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManagerKt.STATE_CLOSED;
import static com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManagerKt.STATE_OPEN; import static com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManagerKt.STATE_OPEN;
import static com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManagerKt.STATE_OPENING; import static com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManagerKt.STATE_OPENING;
import static com.android.systemui.util.DumpUtilsKt.asIndenting;
import static java.lang.Float.isNaN; import static java.lang.Float.isNaN;
@@ -65,13 +66,13 @@ import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.SystemClock;
import android.os.Trace; import android.os.Trace;
import android.os.UserManager; import android.os.UserManager;
import android.os.VibrationEffect; import android.os.VibrationEffect;
import android.provider.Settings; import android.provider.Settings;
import android.transition.ChangeBounds; import android.transition.ChangeBounds;
import android.transition.TransitionManager; import android.transition.TransitionManager;
import android.util.IndentingPrintWriter;
import android.util.Log; import android.util.Log;
import android.util.MathUtils; import android.util.MathUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -121,6 +122,7 @@ 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;
import com.android.systemui.dump.DumpsysTableLogger;
import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags; import com.android.systemui.flags.Flags;
import com.android.systemui.fragments.FragmentHostManager.FragmentListener; import com.android.systemui.fragments.FragmentHostManager.FragmentListener;
@@ -193,6 +195,7 @@ import com.android.systemui.util.LargeScreenUtils;
import com.android.systemui.util.ListenerSet; import com.android.systemui.util.ListenerSet;
import com.android.systemui.util.Utils; import com.android.systemui.util.Utils;
import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.util.time.SystemClock;
import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.systemui.wallet.controller.QuickAccessWalletController;
import com.android.wm.shell.animation.FlingAnimationUtils; import com.android.wm.shell.animation.FlingAnimationUtils;
@@ -212,7 +215,7 @@ import javax.inject.Provider;
@CentralSurfacesComponent.CentralSurfacesScope @CentralSurfacesComponent.CentralSurfacesScope
public class NotificationPanelViewController extends PanelViewController { public class NotificationPanelViewController extends PanelViewController {
private static final boolean DEBUG = false; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
/** /**
* The parallax amount of the quick settings translation when dragging down the panel * The parallax amount of the quick settings translation when dragging down the panel
@@ -279,6 +282,8 @@ public class NotificationPanelViewController extends PanelViewController {
*/ */
private static final int MAX_TIME_TO_OPEN_WHEN_FLINGING_FROM_LAUNCHER = 300; private static final int MAX_TIME_TO_OPEN_WHEN_FLINGING_FROM_LAUNCHER = 300;
private static final int MAX_DOWN_EVENT_BUFFER_SIZE = 50;
private static final String COUNTER_PANEL_OPEN = "panel_open"; private static final String COUNTER_PANEL_OPEN = "panel_open";
private static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs"; private static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs";
private static final String COUNTER_PANEL_OPEN_PEEK = "panel_open_peek"; private static final String COUNTER_PANEL_OPEN_PEEK = "panel_open_peek";
@@ -653,6 +658,8 @@ public class NotificationPanelViewController extends PanelViewController {
private final NotificationListContainer mNotificationListContainer; private final NotificationListContainer mNotificationListContainer;
private final NotificationStackSizeCalculator mNotificationStackSizeCalculator; private final NotificationStackSizeCalculator mNotificationStackSizeCalculator;
private final NPVCDownEventState.Buffer mLastDownEvents;
private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() { private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() {
@Override @Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
@@ -755,7 +762,8 @@ public class NotificationPanelViewController extends PanelViewController {
PanelEventsEmitter panelEventsEmitter, PanelEventsEmitter panelEventsEmitter,
NotificationStackSizeCalculator notificationStackSizeCalculator, NotificationStackSizeCalculator notificationStackSizeCalculator,
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
ShadeTransitionController shadeTransitionController) { ShadeTransitionController shadeTransitionController,
SystemClock systemClock) {
super(view, super(view,
falsingManager, falsingManager,
dozeLog, dozeLog,
@@ -771,7 +779,8 @@ public class NotificationPanelViewController extends PanelViewController {
panelExpansionStateManager, panelExpansionStateManager,
ambientState, ambientState,
interactionJankMonitor, interactionJankMonitor,
keyguardUnlockAnimationController); keyguardUnlockAnimationController,
systemClock);
mView = view; mView = view;
mVibratorHelper = vibratorHelper; mVibratorHelper = vibratorHelper;
mKeyguardMediaController = keyguardMediaController; mKeyguardMediaController = keyguardMediaController;
@@ -860,6 +869,7 @@ public class NotificationPanelViewController extends PanelViewController {
mScreenOffAnimationController = screenOffAnimationController; mScreenOffAnimationController = screenOffAnimationController;
mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController;
mRemoteInputManager = remoteInputManager; mRemoteInputManager = remoteInputManager;
mLastDownEvents = new NPVCDownEventState.Buffer(MAX_DOWN_EVENT_BUFFER_SIZE);
int currentMode = navigationModeController.addListener( int currentMode = navigationModeController.addListener(
mode -> mIsGestureNavigation = QuickStepContract.isGesturalMode(mode)); mode -> mIsGestureNavigation = QuickStepContract.isGesturalMode(mode));
@@ -1709,6 +1719,7 @@ public class NotificationPanelViewController extends PanelViewController {
} }
private boolean onQsIntercept(MotionEvent event) { private boolean onQsIntercept(MotionEvent event) {
if (DEBUG) Log.d(TAG, "onQsIntercept");
int pointerIndex = event.findPointerIndex(mTrackingPointer); int pointerIndex = event.findPointerIndex(mTrackingPointer);
if (pointerIndex < 0) { if (pointerIndex < 0) {
pointerIndex = 0; pointerIndex = 0;
@@ -1763,6 +1774,7 @@ public class NotificationPanelViewController extends PanelViewController {
if ((h > getTouchSlop(event) || (h < -getTouchSlop(event) && mQsExpanded)) if ((h > getTouchSlop(event) || (h < -getTouchSlop(event) && mQsExpanded))
&& Math.abs(h) > Math.abs(x - mInitialTouchX) && Math.abs(h) > Math.abs(x - mInitialTouchX)
&& shouldQuickSettingsIntercept(mInitialTouchX, mInitialTouchY, h)) { && shouldQuickSettingsIntercept(mInitialTouchX, mInitialTouchY, h)) {
if (DEBUG) Log.d(TAG, "onQsIntercept - start tracking expansion");
mView.getParent().requestDisallowInterceptTouchEvent(true); mView.getParent().requestDisallowInterceptTouchEvent(true);
mQsTracking = true; mQsTracking = true;
traceQsJank(true /* startTracing */, false /* wasCancelled */); traceQsJank(true /* startTracing */, false /* wasCancelled */);
@@ -1832,6 +1844,19 @@ public class NotificationPanelViewController extends PanelViewController {
// down but not synthesized motion event. // down but not synthesized motion event.
mLastEventSynthesizedDown = false; mLastEventSynthesizedDown = false;
} }
mLastDownEvents.insert(
mSystemClock.currentTimeMillis(),
mDownX,
mDownY,
mQsTouchAboveFalsingThreshold,
mDozingOnDown,
mCollapsedOnDown,
mIsPanelCollapseOnQQS,
mListenForHeadsUp,
mAllowExpandForSmallExpansion,
mTouchSlopExceededBeforeDown,
mLastEventSynthesizedDown
);
} else { } else {
// not down event at all. // not down event at all.
mLastEventSynthesizedDown = false; mLastEventSynthesizedDown = false;
@@ -1925,7 +1950,7 @@ public class NotificationPanelViewController extends PanelViewController {
if (mAllowExpandForSmallExpansion) { if (mAllowExpandForSmallExpansion) {
// When we get a touch that came over from launcher, the velocity isn't always correct // When we get a touch that came over from launcher, the velocity isn't always correct
// Let's err on expanding if the gesture has been reasonably slow // Let's err on expanding if the gesture has been reasonably slow
long timeSinceDown = SystemClock.uptimeMillis() - mDownTime; long timeSinceDown = mSystemClock.uptimeMillis() - mDownTime;
return timeSinceDown <= MAX_TIME_TO_OPEN_WHEN_FLINGING_FROM_LAUNCHER; return timeSinceDown <= MAX_TIME_TO_OPEN_WHEN_FLINGING_FROM_LAUNCHER;
} }
return false; return false;
@@ -1952,8 +1977,8 @@ public class NotificationPanelViewController extends PanelViewController {
mConflictingQsExpansionGesture = true; mConflictingQsExpansionGesture = true;
onQsExpansionStarted(); onQsExpansionStarted();
mInitialHeightOnTouch = mQsExpansionHeight; mInitialHeightOnTouch = mQsExpansionHeight;
mInitialTouchY = event.getX(); mInitialTouchY = event.getY();
mInitialTouchX = event.getY(); mInitialTouchX = event.getX();
} }
if (!isFullyCollapsed()) { if (!isFullyCollapsed()) {
handleQsDown(event); handleQsDown(event);
@@ -2026,12 +2051,13 @@ public class NotificationPanelViewController extends PanelViewController {
private void handleQsDown(MotionEvent event) { private void handleQsDown(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN && shouldQuickSettingsIntercept( if (event.getActionMasked() == MotionEvent.ACTION_DOWN && shouldQuickSettingsIntercept(
event.getX(), event.getY(), -1)) { event.getX(), event.getY(), -1)) {
if (DEBUG) Log.d(TAG, "handleQsDown");
mFalsingCollector.onQsDown(); mFalsingCollector.onQsDown();
mQsTracking = true; mQsTracking = true;
onQsExpansionStarted(); onQsExpansionStarted();
mInitialHeightOnTouch = mQsExpansionHeight; mInitialHeightOnTouch = mQsExpansionHeight;
mInitialTouchY = event.getX(); mInitialTouchY = event.getY();
mInitialTouchX = event.getY(); mInitialTouchX = event.getX();
// If we interrupt an expansion gesture here, make sure to update the state correctly. // If we interrupt an expansion gesture here, make sure to update the state correctly.
notifyExpandingFinished(); notifyExpandingFinished();
@@ -2139,6 +2165,7 @@ public class NotificationPanelViewController extends PanelViewController {
break; break;
case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_MOVE:
if (DEBUG) Log.d(TAG, "onQSTouch move");
setQsExpansion(h + mInitialHeightOnTouch); setQsExpansion(h + mInitialHeightOnTouch);
if (h >= getFalsingThreshold()) { if (h >= getFalsingThreshold()) {
mQsTouchAboveFalsingThreshold = true; mQsTouchAboveFalsingThreshold = true;
@@ -3872,10 +3899,18 @@ public class NotificationPanelViewController extends PanelViewController {
@Override @Override
public void dump(PrintWriter pw, String[] args) { public void dump(PrintWriter pw, String[] args) {
super.dump(pw, args); super.dump(pw, args);
pw.println(" gestureExclusionRect: " + calculateGestureExclusionRect() IndentingPrintWriter ipw = asIndenting(pw);
+ " applyQSClippingImmediately: top(" + mQsClipTop + ") bottom(" + mQsClipBottom ipw.increaseIndent();
+ ") qsVisible(" + mQsVisible ipw.println("gestureExclusionRect:" + calculateGestureExclusionRect());
); ipw.println("applyQSClippingImmediately: top(" + mQsClipTop + ") bottom(" + mQsClipBottom
+ ")");
ipw.println("qsVisible:" + mQsVisible);
new DumpsysTableLogger(
TAG,
NPVCDownEventState.TABLE_HEADERS,
mLastDownEvents.toList()
).printTableData(ipw);
ipw.decreaseIndent();
if (mKeyguardStatusBarViewController != null) { if (mKeyguardStatusBarViewController != null) {
mKeyguardStatusBarViewController.dump(pw, args); mKeyguardStatusBarViewController.dump(pw, args);
} }
@@ -4042,6 +4077,7 @@ public class NotificationPanelViewController extends PanelViewController {
} }
if (!isFullyCollapsed() && onQsIntercept(event)) { if (!isFullyCollapsed() && onQsIntercept(event)) {
if (DEBUG) Log.d(TAG, "onQsIntercept true");
return true; return true;
} }
return super.onInterceptTouchEvent(event); return super.onInterceptTouchEvent(event);
@@ -4112,6 +4148,7 @@ public class NotificationPanelViewController extends PanelViewController {
handled |= mHeadsUpTouchHelper.onTouchEvent(event); handled |= mHeadsUpTouchHelper.onTouchEvent(event);
if (!mHeadsUpTouchHelper.isTrackingHeadsUp() && handleQsTouch(event)) { if (!mHeadsUpTouchHelper.isTrackingHeadsUp() && handleQsTouch(event)) {
if (DEBUG) Log.d(TAG, "handleQsTouch true");
return true; return true;
} }
if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) {

View File

@@ -32,7 +32,6 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.SystemClock;
import android.os.VibrationEffect; import android.os.VibrationEffect;
import android.util.Log; import android.util.Log;
import android.util.MathUtils; import android.util.MathUtils;
@@ -63,6 +62,7 @@ import com.android.systemui.statusbar.notification.stack.AmbientState;
import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent; import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.time.SystemClock;
import com.android.wm.shell.animation.FlingAnimationUtils; import com.android.wm.shell.animation.FlingAnimationUtils;
import java.io.PrintWriter; import java.io.PrintWriter;
@@ -194,6 +194,7 @@ public abstract class PanelViewController {
private final PanelExpansionStateManager mPanelExpansionStateManager; private final PanelExpansionStateManager mPanelExpansionStateManager;
private final TouchHandler mTouchHandler; private final TouchHandler mTouchHandler;
private final InteractionJankMonitor mInteractionJankMonitor; private final InteractionJankMonitor mInteractionJankMonitor;
protected final SystemClock mSystemClock;
protected abstract void onExpandingFinished(); protected abstract void onExpandingFinished();
@@ -237,7 +238,8 @@ public abstract class PanelViewController {
PanelExpansionStateManager panelExpansionStateManager, PanelExpansionStateManager panelExpansionStateManager,
AmbientState ambientState, AmbientState ambientState,
InteractionJankMonitor interactionJankMonitor, InteractionJankMonitor interactionJankMonitor,
KeyguardUnlockAnimationController keyguardUnlockAnimationController) { KeyguardUnlockAnimationController keyguardUnlockAnimationController,
SystemClock systemClock) {
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
keyguardStateController.addCallback(new KeyguardStateController.Callback() { keyguardStateController.addCallback(new KeyguardStateController.Callback() {
@Override @Override
@@ -297,6 +299,7 @@ public abstract class PanelViewController {
mVibrateOnOpening = mResources.getBoolean(R.bool.config_vibrateOnIconAnimation); mVibrateOnOpening = mResources.getBoolean(R.bool.config_vibrateOnIconAnimation);
mStatusBarTouchableRegionManager = statusBarTouchableRegionManager; mStatusBarTouchableRegionManager = statusBarTouchableRegionManager;
mInteractionJankMonitor = interactionJankMonitor; mInteractionJankMonitor = interactionJankMonitor;
mSystemClock = systemClock;
} }
protected void loadDimens() { protected void loadDimens() {
@@ -1228,7 +1231,7 @@ public abstract class PanelViewController {
mCentralSurfaces.userActivity(); mCentralSurfaces.userActivity();
mAnimatingOnDown = mHeightAnimator != null && !mIsSpringBackAnimation; mAnimatingOnDown = mHeightAnimator != null && !mIsSpringBackAnimation;
mMinExpandHeight = 0.0f; mMinExpandHeight = 0.0f;
mDownTime = SystemClock.uptimeMillis(); mDownTime = mSystemClock.uptimeMillis();
if (mAnimatingOnDown && mClosing && !mHintAnimationRunning) { if (mAnimatingOnDown && mClosing && !mHintAnimationRunning) {
cancelHeightAnimator(); cancelHeightAnimator();
mTouchSlopExceeded = true; mTouchSlopExceeded = true;
@@ -1341,7 +1344,7 @@ public abstract class PanelViewController {
mHasLayoutedSinceDown = false; mHasLayoutedSinceDown = false;
mUpdateFlingOnLayout = false; mUpdateFlingOnLayout = false;
mMotionAborted = false; mMotionAborted = false;
mDownTime = SystemClock.uptimeMillis(); mDownTime = mSystemClock.uptimeMillis();
mTouchAboveFalsingThreshold = false; mTouchAboveFalsingThreshold = false;
mCollapsedAndHeadsUpOnDown = mCollapsedAndHeadsUpOnDown =
isFullyCollapsed() && mHeadsUpManager.hasPinnedHeadsUp(); isFullyCollapsed() && mHeadsUpManager.hasPinnedHeadsUp();

View File

@@ -139,6 +139,7 @@ import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.SystemClock;
import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.systemui.wallet.controller.QuickAccessWalletController;
import com.android.wm.shell.animation.FlingAnimationUtils; import com.android.wm.shell.animation.FlingAnimationUtils;
@@ -357,10 +358,12 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
private Handler mMainHandler; private Handler mMainHandler;
private final PanelExpansionStateManager mPanelExpansionStateManager = private final PanelExpansionStateManager mPanelExpansionStateManager =
new PanelExpansionStateManager(); new PanelExpansionStateManager();
private SystemClock mSystemClock;
@Before @Before
public void setup() { public void setup() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mSystemClock = new FakeSystemClock();
mStatusBarStateController = new StatusBarStateControllerImpl(mUiEventLogger, mDumpManager, mStatusBarStateController = new StatusBarStateControllerImpl(mUiEventLogger, mDumpManager,
mInteractionJankMonitor); mInteractionJankMonitor);
@@ -533,7 +536,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
mPanelEventsEmitter, mPanelEventsEmitter,
mNotificationStackSizeCalculator, mNotificationStackSizeCalculator,
mUnlockedScreenOffAnimationController, mUnlockedScreenOffAnimationController,
mShadeTransitionController); mShadeTransitionController,
mSystemClock);
mNotificationPanelViewController.initDependencies( mNotificationPanelViewController.initDependencies(
mCentralSurfaces, mCentralSurfaces,
() -> {}, () -> {},