Multiple instances of the IdleHostViewController class exist at the same time

A new "IdleHostViewController" controller is created only if the IdleHostView has been changed.

Bug: 204798480
Test: NotificationPanelViewControllerTest, IdleHostViewControllerTest
Change-Id: I4f1fc108f88ec292d52ed77bcf3eb6323179d748
This commit is contained in:
Marat Davliatchin
2021-11-01 23:00:38 +00:00
parent ab13590c57
commit f644bcc395

View File

@@ -345,6 +345,7 @@ public class NotificationPanelViewController extends PanelViewController {
private VelocityTracker mQsVelocityTracker;
private boolean mQsTracking;
private IdleHostView mIdleHostView;
private CommunalHostView mCommunalView;
/**
@@ -891,6 +892,7 @@ public class NotificationPanelViewController extends PanelViewController {
private void onFinishInflate() {
loadDimens();
mKeyguardStatusBar = mView.findViewById(R.id.keyguard_header);
mIdleHostView = mView.findViewById(R.id.idle_host_view);
mCommunalView = mView.findViewById(R.id.communal_host);
FrameLayout userAvatarContainer = null;
@@ -913,10 +915,11 @@ public class NotificationPanelViewController extends PanelViewController {
.getKeyguardStatusBarViewController();
mKeyguardStatusBarViewController.init();
IdleViewComponent idleViewComponent = mIdleViewComponentFactory
.build(mView.findViewById(R.id.idle_host_view));
mIdleHostViewController = idleViewComponent.getIdleHostViewController();
mIdleHostViewController.init();
if (mIdleHostView != null) {
IdleViewComponent idleViewComponent = mIdleViewComponentFactory.build(mIdleHostView);
mIdleHostViewController = idleViewComponent.getIdleHostViewController();
mIdleHostViewController.init();
}
if (mCommunalView != null) {
CommunalViewComponent communalViewComponent =
@@ -931,7 +934,7 @@ public class NotificationPanelViewController extends PanelViewController {
mView.findViewById(R.id.keyguard_status_view),
userAvatarContainer,
keyguardUserSwitcherView,
mView.findViewById(R.id.idle_host_view),
mIdleHostView,
mCommunalView);
mNotificationContainerParent = mView.findViewById(R.id.notification_container_parent);
NotificationStackScrollLayout stackScrollLayout = mView.findViewById(
@@ -1029,9 +1032,12 @@ public class NotificationPanelViewController extends PanelViewController {
mKeyguardStatusViewController = statusViewComponent.getKeyguardStatusViewController();
mKeyguardStatusViewController.init();
IdleViewComponent idleViewComponent = mIdleViewComponentFactory.build(idleHostView);
mIdleHostViewController = idleViewComponent.getIdleHostViewController();
mIdleHostViewController.init();
if (idleHostView != null && idleHostView != mIdleHostView) {
mIdleHostView = idleHostView;
IdleViewComponent idleViewComponent = mIdleViewComponentFactory.build(idleHostView);
mIdleHostViewController = idleViewComponent.getIdleHostViewController();
mIdleHostViewController.init();
}
if (mKeyguardUserSwitcherController != null) {
// Try to close the switcher so that callbacks are triggered if necessary.