Merge changes I2eeaee62,I4957fa91,I29f068ad

* changes:
  Remove ShadeController from NSSL
  Remove NotifBlockingHelperManager from rom NSSL
  Remove VisualStabilityManager from rom NSSL
This commit is contained in:
Steve Elliott
2020-09-17 17:34:41 +00:00
committed by Android (Google) Code Review
4 changed files with 101 additions and 57 deletions

View File

@@ -106,7 +106,6 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.notification.row.FooterView;
import com.android.systemui.statusbar.notification.row.ForegroundServiceDungeonView;
import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
import com.android.systemui.statusbar.notification.row.StackScrollerDecorView;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.HeadsUpTouchHelper;
@@ -449,12 +448,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
private DismissListener mDismissListener;
private DismissAllAnimationListener mDismissAllAnimationListener;
private NotificationRemoteInputManager mRemoteInputManager;
private ShadeController mShadeController;
private final DisplayMetrics mDisplayMetrics = Dependency.get(DisplayMetrics.class);
private final LockscreenGestureLogger mLockscreenGestureLogger =
Dependency.get(LockscreenGestureLogger.class);
private final VisualStabilityManager mVisualStabilityManager =
Dependency.get(VisualStabilityManager.class);
protected boolean mClearAllEnabled;
private Interpolator mHideXInterpolator = Interpolators.FAST_OUT_SLOW_IN;
@@ -553,13 +551,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
res.getBoolean(R.bool.config_drawNotificationBackground);
setOutlineProvider(mOutlineProvider);
// Blocking helper manager wants to know the expanded state, update as well.
NotificationBlockingHelperManager blockingHelperManager =
Dependency.get(NotificationBlockingHelperManager.class);
addOnExpandedHeightChangedListener((height, unused) -> {
blockingHelperManager.setNotificationShadeExpanded(height);
});
boolean willDraw = mShouldDrawNotificationBackground || DEBUG;
setWillNotDraw(!willDraw);
mBackgroundPaint.setAntiAlias(true);
@@ -580,9 +571,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
if (mFgsSectionView != null) {
return;
}
mFgsSectionView = fgsSectionView;
addView(mFgsSectionView, -1);
}
@@ -603,7 +592,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
inflateEmptyShadeView();
inflateFooterView();
mVisualStabilityManager.setVisibilityLocationProvider(this::isInVisibleLocation);
}
/**
@@ -1020,23 +1008,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
mScrollAnchorView = scrollAnchorView;
}
@ShadeViewRefactor(RefactorComponent.LAYOUT_ALGORITHM)
public boolean isInVisibleLocation(NotificationEntry entry) {
ExpandableNotificationRow row = entry.getRow();
ExpandableViewState childViewState = row.getViewState();
if (childViewState == null) {
return false;
}
if ((childViewState.location & ExpandableViewState.VISIBLE_LOCATIONS) == 0) {
return false;
}
if (row.getVisibility() != View.VISIBLE) {
return false;
}
return true;
}
@ShadeViewRefactor(RefactorComponent.LAYOUT_ALGORITHM)
private void setMaxLayoutHeight(int maxLayoutHeight) {
mMaxLayoutHeight = maxLayoutHeight;
@@ -5371,9 +5342,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
if (viewsToRemove.isEmpty()) {
if (closeShade) {
Dependency.get(ShadeController.class).animateCollapsePanels(
CommandQueue.FLAG_EXCLUDE_NONE);
if (closeShade && mShadeController != null) {
mShadeController.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
}
return;
}
@@ -5409,11 +5379,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
final Runnable onSlideAwayAnimationComplete = () -> {
if (closeShade) {
Dependency.get(ShadeController.class).addPostCollapseAction(() -> {
mShadeController.addPostCollapseAction(() -> {
setDismissAllInProgress(false);
onAnimationComplete.run();
});
Dependency.get(ShadeController.class).animateCollapsePanels(
mShadeController.animateCollapsePanels(
CommandQueue.FLAG_EXCLUDE_NONE);
} else {
setDismissAllInProgress(false);
@@ -5697,6 +5667,10 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
mRemoteInputManager = remoteInputManager;
}
void setShadeController(ShadeController shadeController) {
mShadeController = shadeController;
}
/**
* A listener that is notified when the empty space below the notifications is clicked on
*/
@@ -6096,7 +6070,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
if (!mAmbientState.isDozing() || startingChild != null) {
// We have notifications, go to locked shade.
Dependency.get(ShadeController.class).goToLockedShade(startingChild);
mShadeController.goToLockedShade(startingChild);
if (startingChild instanceof ExpandableNotificationRow) {
ExpandableNotificationRow row = (ExpandableNotificationRow) startingChild;
row.onExpandedByGesture(true /* drag down is always an open */);

View File

@@ -21,11 +21,11 @@ import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_N
import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_GENTLE;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_HIGH_PRIORITY;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.OnEmptySpaceClickListener;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.OnOverscrollTopChangedListener;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_ALL;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_GENTLE;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_HIGH_PRIORITY;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.SelectedRows;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.canChildBeDismissed;
import static com.android.systemui.statusbar.phone.NotificationIconAreaController.HIGH_PRIORITY;
@@ -85,6 +85,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy.NotificationGroup;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy.OnGroupChangeListener;
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager;
@@ -95,6 +96,7 @@ import com.android.systemui.statusbar.notification.row.ActivatableNotificationVi
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.notification.row.ForegroundServiceDungeonView;
import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
import com.android.systemui.statusbar.notification.row.NotificationGuts;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.row.NotificationSnooze;
@@ -104,6 +106,7 @@ import com.android.systemui.statusbar.phone.HeadsUpTouchHelper;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -139,7 +142,6 @@ public class NotificationStackScrollLayoutController {
private final ZenModeController mZenModeController;
private final MetricsLogger mMetricsLogger;
private final FalsingManager mFalsingManager;
private final NotificationSectionsManager mNotificationSectionsManager;
private final Resources mResources;
private final NotificationSwipeHelper.Builder mNotificationSwipeHelperBuilder;
private final ScrimController mScrimController;
@@ -153,6 +155,9 @@ public class NotificationStackScrollLayoutController {
private final ForegroundServiceSectionController mFgServicesSectionController;
private final LayoutInflater mLayoutInflater;
private final NotificationRemoteInputManager mRemoteInputManager;
private final VisualStabilityManager mVisualStabilityManager;
private final NotificationBlockingHelperManager mNotificationBlockingHelperManager;
private final ShadeController mShadeController;
private final KeyguardMediaController mKeyguardMediaController;
private final SysuiStatusBarStateController mStatusBarStateController;
private final KeyguardBypassController mKeyguardBypassController;
@@ -559,7 +564,6 @@ public class NotificationStackScrollLayoutController {
NotificationLockscreenUserManager lockscreenUserManager,
MetricsLogger metricsLogger,
FalsingManager falsingManager,
NotificationSectionsManager notificationSectionsManager,
@Main Resources resources,
NotificationSwipeHelper.Builder notificationSwipeHelperBuilder,
StatusBar statusBar,
@@ -576,7 +580,10 @@ public class NotificationStackScrollLayoutController {
ForegroundServiceDismissalFeatureController fgFeatureController,
ForegroundServiceSectionController fgServicesSectionController,
LayoutInflater layoutInflater,
NotificationRemoteInputManager remoteInputManager) {
NotificationRemoteInputManager remoteInputManager,
VisualStabilityManager visualStabilityManager,
NotificationBlockingHelperManager notificationBlockingHelperManager,
ShadeController shadeController) {
mAllowLongPress = allowLongPress;
mNotificationGutsManager = notificationGutsManager;
mHeadsUpManager = headsUpManager;
@@ -592,14 +599,12 @@ public class NotificationStackScrollLayoutController {
mLockscreenUserManager = lockscreenUserManager;
mMetricsLogger = metricsLogger;
mFalsingManager = falsingManager;
mNotificationSectionsManager = notificationSectionsManager;
mResources = resources;
mNotificationSwipeHelperBuilder = notificationSwipeHelperBuilder;
mStatusBar = statusBar;
mScrimController = scrimController;
groupManager.registerGroupExpansionChangeListener((changedRow, expanded) -> {
mView.onGroupExpandChanged(changedRow, expanded);
});
groupManager.registerGroupExpansionChangeListener(
(changedRow, expanded) -> mView.onGroupExpandChanged(changedRow, expanded));
legacyGroupManager.registerGroupChangeListener(new OnGroupChangeListener() {
@Override
public void onGroupCreatedFromChildren(NotificationGroup group) {
@@ -622,6 +627,9 @@ public class NotificationStackScrollLayoutController {
mFgServicesSectionController = fgServicesSectionController;
mLayoutInflater = layoutInflater;
mRemoteInputManager = remoteInputManager;
mVisualStabilityManager = visualStabilityManager;
mNotificationBlockingHelperManager = notificationBlockingHelperManager;
mShadeController = shadeController;
}
public void attach(NotificationStackScrollLayout view) {
@@ -635,6 +643,7 @@ public class NotificationStackScrollLayoutController {
mView.setFooterDismissListener(() ->
mMetricsLogger.action(MetricsEvent.ACTION_DISMISS_ALL_NOTES));
mView.setRemoteInputManager(mRemoteInputManager);
mView.setShadeController(mShadeController);
if (mFgFeatureController.isForegroundServiceDismissalEnabled()) {
mView.initializeForegroundServiceSection(
@@ -681,6 +690,12 @@ public class NotificationStackScrollLayoutController {
mNotificationRoundnessManager.setOnRoundingChangedCallback(mView::invalidate);
mView.addOnExpandedHeightChangedListener(mNotificationRoundnessManager::setExpanded);
mVisualStabilityManager.setVisibilityLocationProvider(this::isInVisibleLocation);
// Blocking helper manager wants to know the expanded state, update as well.
mView.addOnExpandedHeightChangedListener((height, unused) ->
mNotificationBlockingHelperManager.setNotificationShadeExpanded(height)
);
mTunerService.addTunable(
(key, newValue) -> {
switch (key) {
@@ -723,6 +738,22 @@ public class NotificationStackScrollLayoutController {
mSilentHeaderController.setOnClearAllClickListener(v -> clearSilentNotifications());
}
private boolean isInVisibleLocation(NotificationEntry entry) {
ExpandableNotificationRow row = entry.getRow();
ExpandableViewState childViewState = row.getViewState();
if (childViewState == null) {
return false;
}
if ((childViewState.location & ExpandableViewState.VISIBLE_LOCATIONS) == 0) {
return false;
}
if (row.getVisibility() != View.VISIBLE) {
return false;
}
return true;
}
public void addOnExpandedHeightChangedListener(BiConsumer<Float, Float> listener) {
mView.addOnExpandedHeightChangedListener(listener);
}
@@ -1459,7 +1490,7 @@ public class NotificationStackScrollLayoutController {
@Override
public boolean isInVisibleLocation(NotificationEntry entry) {
return mView.isInVisibleLocation(entry);
return NotificationStackScrollLayoutController.this.isInVisibleLocation(entry);
}
@Override

View File

@@ -3,7 +3,10 @@
*
* 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 *
* 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.
@@ -31,7 +34,6 @@ import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -65,6 +67,7 @@ import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -117,7 +120,6 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
1, UserHandle.USER_CURRENT);
// Inject dependencies before initializing the layout
mDependency.injectMockDependency(VisualStabilityManager.class);
mDependency.injectTestDependency(
NotificationBlockingHelperManager.class,
mBlockingHelperManager);
@@ -217,12 +219,20 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
@Test
@UiThreadTest
public void testSetExpandedHeight_blockingHelperManagerReceivedCallbacks() {
mStackScroller.setExpandedHeight(0f);
verify(mBlockingHelperManager).setNotificationShadeExpanded(0f);
reset(mBlockingHelperManager);
final float expectedHeight[] = {0f};
final float expectedAppear[] = {0f};
mStackScroller.setExpandedHeight(100f);
verify(mBlockingHelperManager).setNotificationShadeExpanded(100f);
mStackScroller.addOnExpandedHeightChangedListener((height, appear) -> {
Assert.assertEquals(expectedHeight[0], height, 0);
Assert.assertEquals(expectedAppear[0], appear, .1);
});
expectedHeight[0] = 1f;
expectedAppear[0] = 1f;
mStackScroller.setExpandedHeight(expectedHeight[0]);
expectedHeight[0] = 100f;
expectedAppear[0] = 0f;
mStackScroller.setExpandedHeight(expectedHeight[0]);
}
@Test

View File

@@ -27,6 +27,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -60,14 +61,17 @@ import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.render.SectionHeaderController;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ForegroundServiceDungeonView;
import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController.NotificationPanelEvent;
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ZenModeController;
@@ -83,6 +87,8 @@ import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.function.BiConsumer;
/**
* Tests for {@link NotificationStackScrollLayoutController}.
*/
@@ -105,7 +111,6 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
@Mock private NotificationLockscreenUserManager mNotificationLockscreenUserManager;
@Mock private MetricsLogger mMetricsLogger;
@Mock private FalsingManager mFalsingManager;
@Mock private NotificationSectionsManager mNotificationSectionsManager;
@Mock private Resources mResources;
@Mock(answer = Answers.RETURNS_SELF)
private NotificationSwipeHelper.Builder mNotificationSwipeHelperBuilder;
@@ -126,6 +131,9 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
@Mock private LayoutInflater mLayoutInflater;
@Mock private NotificationRemoteInputManager mRemoteInputManager;
@Mock private RemoteInputController mRemoteInputController;
@Mock private VisualStabilityManager mVisualStabilityManager;
@Mock private NotificationBlockingHelperManager mNotificationBlockingHelperManager;
@Mock private ShadeController mShadeController;
@Captor
private ArgumentCaptor<StatusBarStateController.StateListener> mStateListenerArgumentCaptor;
@@ -158,7 +166,6 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
mNotificationLockscreenUserManager,
mMetricsLogger,
mFalsingManager,
mNotificationSectionsManager,
mResources,
mNotificationSwipeHelperBuilder,
mStatusBar,
@@ -175,7 +182,10 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
mFgFeatureController,
mFgServicesSectionController,
mLayoutInflater,
mRemoteInputManager
mRemoteInputManager,
mVisualStabilityManager,
mNotificationBlockingHelperManager,
mShadeController
);
when(mNotificationStackScrollLayout.isAttachedToWindow()).thenReturn(true);
@@ -368,6 +378,25 @@ public class NotificationStackScrollerControllerTest extends SysuiTestCase {
any(ForegroundServiceDungeonView.class));
}
@Test
public void testSetExpandedHeight_blockingHelperManagerReceivedCallbacks() {
ArgumentCaptor<BiConsumer<Float, Float>>
onExpandedHeightChangeListenerCaptor = ArgumentCaptor.forClass(
BiConsumer.class);
mController.attach(mNotificationStackScrollLayout);
verify(mNotificationStackScrollLayout, times(2)).addOnExpandedHeightChangedListener(
onExpandedHeightChangeListenerCaptor.capture());
for (BiConsumer<Float, Float> listener :
onExpandedHeightChangeListenerCaptor.getAllValues()) {
listener.accept(1f, 2f);
}
verify(mNotificationBlockingHelperManager).setNotificationShadeExpanded(1f);
}
private LogMaker logMatcher(int category, int type) {
return argThat(new LogMatcher(category, type));
}