diff options
7 files changed, 51 insertions, 85 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index 58e9bb85503a..e36b67e4168a 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -44,7 +44,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.annotation.NonNull; -import android.app.ActivityManager; import android.app.Fragment; import android.app.StatusBarManager; import android.content.ContentResolver; @@ -288,7 +287,6 @@ public final class NotificationPanelViewController extends PanelViewController { private final NotificationPanelView mView; private final VibratorHelper mVibratorHelper; private final MetricsLogger mMetricsLogger; - private final ActivityManager mActivityManager; private final ConfigurationController mConfigurationController; private final Provider<FlingAnimationUtils.Builder> mFlingAnimationUtilsBuilder; private final NotificationStackScrollLayoutController mNotificationStackScrollLayoutController; @@ -341,14 +339,14 @@ public final class NotificationPanelViewController extends PanelViewController { private final RecordingController mRecordingController; private final PanelEventsEmitter mPanelEventsEmitter; private boolean mSplitShadeEnabled; - // The bottom padding reserved for elements of the keyguard measuring notifications + /** The bottom padding reserved for elements of the keyguard measuring notifications. */ private float mKeyguardNotificationBottomPadding; /** * The top padding from where notification should start in lockscreen. * Should be static also during animations and should match the Y of the first notification. */ private float mKeyguardNotificationTopPadding; - // Current max allowed keyguard notifications determined by measuring the panel + /** Current max allowed keyguard notifications determined by measuring the panel. */ private int mMaxAllowedKeyguardNotifications; private KeyguardQsUserSwitchController mKeyguardQsUserSwitchController; @@ -728,7 +726,6 @@ public final class NotificationPanelViewController extends PanelViewController { AccessibilityManager accessibilityManager, @DisplayId int displayId, KeyguardUpdateMonitor keyguardUpdateMonitor, MetricsLogger metricsLogger, - ActivityManager activityManager, ConfigurationController configurationController, Provider<FlingAnimationUtils.Builder> flingAnimationUtilsBuilder, StatusBarTouchableRegionManager statusBarTouchableRegionManager, @@ -798,7 +795,6 @@ public final class NotificationPanelViewController extends PanelViewController { panelExpansionStateManager, ambientState, interactionJankMonitor, - keyguardUnlockAnimationController, systemClock); mView = view; mVibratorHelper = vibratorHelper; @@ -808,7 +804,6 @@ public final class NotificationPanelViewController extends PanelViewController { mQRCodeScannerController = qrCodeScannerController; mControlsComponent = controlsComponent; mMetricsLogger = metricsLogger; - mActivityManager = activityManager; mConfigurationController = configurationController; mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; mMediaHierarchyManager = mediaHierarchyManager; @@ -3969,7 +3964,7 @@ public final class NotificationPanelViewController extends PanelViewController { * notification data being displayed. In the new notification pipeline, this is handled in * {@link ShadeViewManager}. */ - public void updateNotificationViews(String reason) { + public void updateNotificationViews() { mNotificationStackScrollLayoutController.updateFooter(); mNotificationIconAreaController.updateNotificationIcons(createVisibleEntriesList()); @@ -4426,7 +4421,7 @@ public final class NotificationPanelViewController extends PanelViewController { NotificationStackScrollLayout.OnEmptySpaceClickListener { @Override public void onEmptySpaceClicked(float x, float y) { - onEmptySpaceClick(x); + onEmptySpaceClick(); } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java index 15e1129e43b5..1d9210592b78 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java @@ -89,7 +89,6 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW Dumpable, ConfigurationListener { private static final String TAG = "NotificationShadeWindowController"; - private static final boolean DEBUG = false; private final Context mContext; private final WindowManager mWindowManager; @@ -190,7 +189,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW return; } } - mCallbacks.add(new WeakReference<StatusBarWindowCallback>(callback)); + mCallbacks.add(new WeakReference<>(callback)); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java index 121d69d34678..e52170e13292 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java @@ -18,6 +18,8 @@ package com.android.systemui.shade; import static android.view.WindowInsets.Type.systemBars; +import static com.android.systemui.statusbar.phone.CentralSurfaces.DEBUG; + import android.annotation.ColorInt; import android.annotation.DrawableRes; import android.annotation.LayoutRes; @@ -52,14 +54,12 @@ import android.widget.FrameLayout; import com.android.internal.view.FloatingActionMode; import com.android.internal.widget.floatingtoolbar.FloatingToolbar; import com.android.systemui.R; -import com.android.systemui.statusbar.phone.CentralSurfaces; /** * Combined keyguard and notification panel view. Also holding backdrop and scrims. */ public class NotificationShadeWindowView extends FrameLayout { public static final String TAG = "NotificationShadeWindowView"; - public static final boolean DEBUG = CentralSurfaces.DEBUG; private int mRightInset = 0; private int mLeftInset = 0; @@ -221,7 +221,7 @@ public class NotificationShadeWindowView extends FrameLayout { } } - class LayoutParams extends FrameLayout.LayoutParams { + private static class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; @@ -243,7 +243,7 @@ public class NotificationShadeWindowView extends FrameLayout { public ActionMode startActionModeForChild(View originalView, ActionMode.Callback callback, int type) { if (type == ActionMode.TYPE_FLOATING) { - return startActionMode(originalView, callback, type); + return startActionMode(originalView, callback); } return super.startActionModeForChild(originalView, callback, type); } @@ -258,14 +258,10 @@ public class NotificationShadeWindowView extends FrameLayout { final FloatingActionMode mode = new FloatingActionMode(mContext, callback, originatingView, mFloatingToolbar); mFloatingActionModeOriginatingView = originatingView; - mFloatingToolbarPreDrawListener = - new ViewTreeObserver.OnPreDrawListener() { - @Override - public boolean onPreDraw() { - mode.updateViewLocationInWindow(); - return true; - } - }; + mFloatingToolbarPreDrawListener = () -> { + mode.updateViewLocationInWindow(); + return true; + }; return mode; } @@ -292,10 +288,10 @@ public class NotificationShadeWindowView extends FrameLayout { } private ActionMode startActionMode( - View originatingView, ActionMode.Callback callback, int type) { + View originatingView, ActionMode.Callback callback) { ActionMode.Callback2 wrappedCallback = new ActionModeCallback2Wrapper(callback); ActionMode mode = createFloatingActionMode(originatingView, wrappedCallback); - if (mode != null && wrappedCallback.onCreateActionMode(mode, mode.getMenu())) { + if (wrappedCallback.onCreateActionMode(mode, mode.getMenu())) { setHandledFloatingActionMode(mode); } else { mode = null; @@ -382,7 +378,7 @@ public class NotificationShadeWindowView extends FrameLayout { /** * Minimal window to satisfy FloatingToolbar. */ - private Window mFakeWindow = new Window(mContext) { + private final Window mFakeWindow = new Window(mContext) { @Override public void takeSurface(SurfaceHolder.Callback2 callback) { } diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java index 587e0e6dd834..02316b7965ca 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java @@ -48,13 +48,12 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout private View mStackScroller; private View mKeyguardStatusBar; - private ArrayList<View> mDrawingOrderedChildren = new ArrayList<>(); - private ArrayList<View> mLayoutDrawingOrder = new ArrayList<>(); + private final ArrayList<View> mDrawingOrderedChildren = new ArrayList<>(); + private final ArrayList<View> mLayoutDrawingOrder = new ArrayList<>(); private final Comparator<View> mIndexComparator = Comparator.comparingInt(this::indexOfChild); private Consumer<WindowInsets> mInsetsChangedListener = insets -> {}; private Consumer<QS> mQSFragmentAttachedListener = qs -> {}; private QS mQs; - private View mQSScrollView; private View mQSContainer; @Nullable @@ -76,7 +75,6 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout public void onFragmentViewCreated(String tag, Fragment fragment) { mQs = (QS) fragment; mQSFragmentAttachedListener.accept(mQs); - mQSScrollView = mQs.getView().findViewById(R.id.expanded_qs_scroll_view); mQSContainer = mQs.getView().findViewById(R.id.quick_settings_container); } diff --git a/packages/SystemUI/src/com/android/systemui/shade/PanelView.java b/packages/SystemUI/src/com/android/systemui/shade/PanelView.java index 1082967d3b5f..efff0db742d7 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/shade/PanelView.java @@ -49,10 +49,6 @@ public abstract class PanelView extends FrameLayout { super(context, attrs, defStyleAttr); } - public PanelView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - public void setOnTouchListener(PanelViewController.TouchHandler touchHandler) { super.setOnTouchListener(touchHandler); mTouchHandler = touchHandler; diff --git a/packages/SystemUI/src/com/android/systemui/shade/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/PanelViewController.java index 229acf4ed061..1a8a6d113320 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/PanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/PanelViewController.java @@ -19,11 +19,11 @@ package com.android.systemui.shade; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; -import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE; import static com.android.systemui.classifier.Classifier.BOUNCER_UNLOCK; import static com.android.systemui.classifier.Classifier.GENERIC; import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; import static com.android.systemui.classifier.Classifier.UNLOCK; +import static com.android.systemui.shade.PanelView.DEBUG; import static java.lang.Float.isNaN; @@ -53,7 +53,6 @@ import com.android.systemui.R; import com.android.systemui.animation.Interpolators; import com.android.systemui.classifier.Classifier; import com.android.systemui.doze.DozeLog; -import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.StatusBarState; @@ -77,7 +76,6 @@ import java.io.PrintWriter; import java.util.List; public abstract class PanelViewController { - public static final boolean DEBUG = PanelView.DEBUG; public static final String TAG = PanelView.class.getSimpleName(); public static final float FLING_MAX_LENGTH_SECONDS = 0.6f; public static final float FLING_SPEED_UP_FACTOR = 0.6f; @@ -97,7 +95,7 @@ public abstract class PanelViewController { protected boolean mTouchSlopExceededBeforeDown; private float mMinExpandHeight; private boolean mPanelUpdateWhenAnimatorEnds; - private boolean mVibrateOnOpening; + private final boolean mVibrateOnOpening; protected boolean mIsLaunchAnimationRunning; private int mFixedDuration = NO_FIXED_DURATION; protected float mOverExpansion; @@ -144,7 +142,6 @@ public abstract class PanelViewController { private int mTouchSlop; private float mSlopMultiplier; protected boolean mHintAnimationRunning; - private boolean mOverExpandedBeforeFling; private boolean mTouchAboveFalsingThreshold; private int mUnlockFalsingThreshold; private boolean mTouchStartedInEmptyArea; @@ -155,9 +152,9 @@ public abstract class PanelViewController { private ValueAnimator mHeightAnimator; private final VelocityTracker mVelocityTracker = VelocityTracker.obtain(); - private FlingAnimationUtils mFlingAnimationUtils; - private FlingAnimationUtils mFlingAnimationUtilsClosing; - private FlingAnimationUtils mFlingAnimationUtilsDismissing; + private final FlingAnimationUtils mFlingAnimationUtils; + private final FlingAnimationUtils mFlingAnimationUtilsClosing; + private final FlingAnimationUtils mFlingAnimationUtilsDismissing; private final LatencyTracker mLatencyTracker; private final FalsingManager mFalsingManager; private final DozeLog mDozeLog; @@ -178,9 +175,9 @@ public abstract class PanelViewController { /** * Whether or not the PanelView can be expanded or collapsed with a drag. */ - private boolean mNotificationsDragEnabled; + private final boolean mNotificationsDragEnabled; - private Interpolator mBounceInterpolator; + private final Interpolator mBounceInterpolator; protected KeyguardBottomAreaView mKeyguardBottomArea; /** @@ -201,7 +198,6 @@ public abstract class PanelViewController { protected final AmbientState mAmbientState; protected final LockscreenGestureLogger mLockscreenGestureLogger; private final PanelExpansionStateManager mPanelExpansionStateManager; - private final TouchHandler mTouchHandler; private final InteractionJankMonitor mInteractionJankMonitor; protected final SystemClock mSystemClock; @@ -229,8 +225,6 @@ public abstract class PanelViewController { return mAmbientState; } - private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; - public PanelViewController( PanelView view, FalsingManager falsingManager, @@ -247,9 +241,7 @@ public abstract class PanelViewController { PanelExpansionStateManager panelExpansionStateManager, AmbientState ambientState, InteractionJankMonitor interactionJankMonitor, - KeyguardUnlockAnimationController keyguardUnlockAnimationController, SystemClock systemClock) { - mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; keyguardStateController.addCallback(new KeyguardStateController.Callback() { @Override public void onKeyguardFadingAwayChanged() { @@ -261,7 +253,7 @@ public abstract class PanelViewController { mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mLockscreenGestureLogger = lockscreenGestureLogger; mPanelExpansionStateManager = panelExpansionStateManager; - mTouchHandler = createTouchHandler(); + TouchHandler touchHandler = createTouchHandler(); mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { @@ -274,7 +266,7 @@ public abstract class PanelViewController { }); mView.addOnLayoutChangeListener(createLayoutChangeListener()); - mView.setOnTouchListener(mTouchHandler); + mView.setOnTouchListener(touchHandler); mView.setOnConfigurationChangedListener(createOnConfigurationChangedListener()); mResources = mView.getResources(); @@ -398,7 +390,7 @@ public abstract class PanelViewController { public void startExpandMotion(float newX, float newY, boolean startTracking, float expandedHeight) { if (!mHandlingPointerUp && !mStatusBarStateController.isDozing()) { - beginJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + beginJankMonitoring(); } mInitialOffsetOnTouch = expandedHeight; mInitialTouchY = newY; @@ -475,7 +467,7 @@ public abstract class PanelViewController { } else if (!mCentralSurfaces.isBouncerShowing() && !mStatusBarKeyguardViewManager.isShowingAlternateAuthOrAnimating() && !mKeyguardStateController.isKeyguardGoingAway()) { - boolean expands = onEmptySpaceClick(mInitialTouchX); + boolean expands = onEmptySpaceClick(); onTrackingStopped(expands); } mVelocityTracker.clear(); @@ -670,7 +662,7 @@ public abstract class PanelViewController { @Override public void onAnimationStart(Animator animation) { if (!mStatusBarStateController.isDozing()) { - beginJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + beginJankMonitoring(); } } @@ -702,10 +694,8 @@ public abstract class PanelViewController { mIsSpringBackAnimation = true; ValueAnimator animator = ValueAnimator.ofFloat(mOverExpansion, 0); animator.addUpdateListener( - animation -> { - setOverExpansionInternal((float) animation.getAnimatedValue(), - false /* isFromGesture */); - }); + animation -> setOverExpansionInternal((float) animation.getAnimatedValue(), + false /* isFromGesture */)); animator.setDuration(SHADE_OPEN_SPRING_BACK_DURATION); animator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); animator.addListener(new AnimatorListenerAdapter() { @@ -731,10 +721,10 @@ public abstract class PanelViewController { setAnimator(null); mKeyguardStateController.notifyPanelFlingEnd(); if (!cancelled) { - endJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + endJankMonitoring(); notifyExpandingFinished(); } else { - cancelJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + cancelJankMonitoring(); } updatePanelExpansionAndVisibility(); } @@ -773,13 +763,6 @@ public abstract class PanelViewController { setExpandedHeight(currentMaxPanelHeight); } - private float getStackHeightFraction(float height) { - final float gestureFraction = height / getMaxPanelHeight(); - final float stackHeightFraction = Interpolators.ACCELERATE_DECELERATE - .getInterpolation(gestureFraction); - return stackHeightFraction; - } - public void setExpandedHeightInternal(float h) { if (isNaN(h)) { Log.wtf(TAG, "ExpandedHeight set to NaN"); @@ -911,13 +894,8 @@ public abstract class PanelViewController { return !isFullyCollapsed() && !mTracking && !mClosing; } - private final Runnable mFlingCollapseRunnable = new Runnable() { - @Override - public void run() { - fling(0, false /* expand */, mNextCollapseSpeedUpFactor, - false /* expandBecauseOfFalsing */); - } - }; + private final Runnable mFlingCollapseRunnable = () -> fling(0, false /* expand */, + mNextCollapseSpeedUpFactor, false /* expandBecauseOfFalsing */); public void expand(final boolean animate) { if (!isFullyCollapsed() && !isCollapsing()) { @@ -950,7 +928,7 @@ public abstract class PanelViewController { mView.getViewTreeObserver().removeOnGlobalLayoutListener(this); if (mAnimateAfterExpanding) { notifyExpandingStarted(); - beginJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + beginJankMonitoring(); fling(0, true /* expand */); } else { setExpandedFraction(1f); @@ -1150,7 +1128,7 @@ public abstract class PanelViewController { * * @return whether the panel will be expanded after the action performed by this method */ - protected boolean onEmptySpaceClick(float x) { + protected boolean onEmptySpaceClick() { if (mHintAnimationRunning) { return true; } @@ -1432,9 +1410,9 @@ public abstract class PanelViewController { // mHeightAnimator is null, there is no remaining frame, ends instrumenting. if (mHeightAnimator == null) { if (event.getActionMasked() == MotionEvent.ACTION_UP) { - endJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + endJankMonitoring(); } else { - cancelJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + cancelJankMonitoring(); } } break; @@ -1465,28 +1443,32 @@ public abstract class PanelViewController { } } - private void beginJankMonitoring(int cuj) { + private void beginJankMonitoring() { if (mInteractionJankMonitor == null) { return; } InteractionJankMonitor.Configuration.Builder builder = - InteractionJankMonitor.Configuration.Builder.withView(cuj, mView) + InteractionJankMonitor.Configuration.Builder.withView( + InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, + mView) .setTag(isFullyCollapsed() ? "Expand" : "Collapse"); mInteractionJankMonitor.begin(builder); } - private void endJankMonitoring(int cuj) { + private void endJankMonitoring() { if (mInteractionJankMonitor == null) { return; } - InteractionJankMonitor.getInstance().end(cuj); + InteractionJankMonitor.getInstance().end( + InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); } - private void cancelJankMonitoring(int cuj) { + private void cancelJankMonitoring() { if (mInteractionJankMonitor == null) { return; } - InteractionJankMonitor.getInstance().cancel(cuj); + InteractionJankMonitor.getInstance().cancel( + InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); } protected float getExpansionFraction() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java index c9405c890278..3efdf2eb2d0a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java @@ -527,7 +527,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { mNotificationShadeWindowController, mDozeLog, mDozeParameters, mCommandQueue, mVibratorHelper, mLatencyTracker, mPowerManager, mAccessibilityManager, 0, mUpdateMonitor, - mMetricsLogger, mActivityManager, mConfigurationController, + mMetricsLogger, mConfigurationController, () -> flingAnimationUtilsBuilder, mStatusBarTouchableRegionManager, mConversationNotificationManager, mMediaHiearchyManager, mStatusBarKeyguardViewManager, |