Move mNotificationActivityStarter + logic to Controller

Part of an effort to refactor NSSL for uni-directional data flow.

Bug: 193539698
Test: manual
Change-Id: I314e5e09037ee37ee32d0dcbbb44dec4758ddc94
This commit is contained in:
Steve Elliott
2021-07-03 21:11:01 -04:00
parent be6c2fd0ad
commit 62f32f9a2e
3 changed files with 37 additions and 10 deletions

View File

@@ -89,7 +89,6 @@ import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.ExpandAnimationParameters;
import com.android.systemui.statusbar.notification.FakeShadowView;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorController;
import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.notification.ShadeViewRefactor;
@@ -212,7 +211,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
private GroupMembershipManager mGroupMembershipManager;
private GroupExpansionManager mGroupExpansionManager;
private NotificationActivityStarter mNotificationActivityStarter;
private HashSet<ExpandableView> mChildrenToAddAnimated = new HashSet<>();
private ArrayList<View> mAddedHeadsUpChildren = new ArrayList<>();
private ArrayList<ExpandableView> mChildrenToRemoveAnimated = new ArrayList<>();
@@ -564,6 +562,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
};
@Nullable
private OnClickListener mManageButtonClickListener;
@Inject
public NotificationStackScrollLayout(
@Named(VIEW_CONTEXT) Context context,
@@ -4361,6 +4362,14 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
return -1;
}
/**
* Returns whether or not a History button is shown in the footer. If there is no footer, then
* this will return false.
**/
public boolean isHistoryShown() {
return mFooterView != null && mFooterView.isHistoryShown();
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
void setFooterView(@NonNull FooterView footerView) {
int index = -1;
@@ -4370,6 +4379,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
mFooterView = footerView;
addView(mFooterView, index);
if (mManageButtonClickListener != null) {
mFooterView.setManageButtonClickListener(mManageButtonClickListener);
}
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
@@ -5073,9 +5085,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
}
public void setNotificationActivityStarter(
NotificationActivityStarter notificationActivityStarter) {
mNotificationActivityStarter = notificationActivityStarter;
/** Register a {@link View.OnClickListener} to be invoked when the Manage button is clicked. */
public void setManageButtonClickListener(@Nullable OnClickListener listener) {
mManageButtonClickListener = listener;
if (mFooterView != null) {
mFooterView.setManageButtonClickListener(mManageButtonClickListener);
}
}
@VisibleForTesting
@@ -5089,9 +5104,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
clearNotifications(ROWS_ALL, true /* closeShade */);
});
footerView.setManageButtonClickListener(v -> {
mNotificationActivityStarter.startHistoryIntent(v, mFooterView.isHistoryShown());
});
setFooterView(footerView);
}

View File

@@ -48,6 +48,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.colorextraction.ColorExtractor;
import com.android.internal.jank.InteractionJankMonitor;
@@ -184,6 +186,9 @@ public class NotificationStackScrollLayoutController {
private final NotificationListContainerImpl mNotificationListContainer =
new NotificationListContainerImpl();
@Nullable
private NotificationActivityStarter mNotificationActivityStarter;
private ColorExtractor.OnColorsChangedListener mOnColorsChangedListener;
/**
@@ -712,6 +717,11 @@ public class NotificationStackScrollLayoutController {
mView.setKeyguardBypassEnabled(mKeyguardBypassController.getBypassEnabled());
mKeyguardBypassController
.registerOnBypassStateChangedListener(mView::setKeyguardBypassEnabled);
mView.setManageButtonClickListener(v -> {
if (mNotificationActivityStarter != null) {
mNotificationActivityStarter.startHistoryIntent(v, mView.isHistoryShown());
}
});
mHeadsUpManager.addListener(mOnHeadsUpChangedListener);
mHeadsUpManager.setAnimationStateHandler(mView::setHeadsUpGoingAwayAnimationsAllowed);
@@ -1472,6 +1482,10 @@ public class NotificationStackScrollLayoutController {
mView.animateNextTopPaddingChange();
}
public void setNotificationActivityStarter(NotificationActivityStarter activityStarter) {
mNotificationActivityStarter = activityStarter;
}
/**
* Enum for UiEvent logged from this class
*/
@@ -1543,7 +1557,8 @@ public class NotificationStackScrollLayoutController {
@Override
public void setNotificationActivityStarter(
NotificationActivityStarter notificationActivityStarter) {
mView.setNotificationActivityStarter(notificationActivityStarter);
NotificationStackScrollLayoutController.this
.setNotificationActivityStarter(notificationActivityStarter);
}
@Override

View File

@@ -1447,7 +1447,7 @@ public class StatusBar extends SystemUI implements DemoMode,
.setNotificationPresenter(mPresenter)
.setNotificationPanelViewController(mNotificationPanelViewController)
.build();
mStackScroller.setNotificationActivityStarter(mNotificationActivityStarter);
mStackScrollerController.setNotificationActivityStarter(mNotificationActivityStarter);
mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter);
mNotificationsController.initialize(