2/3 Remove SuperStatusBarViewFactory#getNotificationShelfController

Refactor its code to live in the StatusBarComponent and
StatusBarViewModule.

Bug: 190746471
Test: atest SystemUITests && manual
Change-Id: Id851da5accd9931d5646886f739c83f67e87179e
This commit is contained in:
Dave Mankoff
2021-08-19 11:29:56 -04:00
parent 0e2230c880
commit b00611cfd9
4 changed files with 58 additions and 48 deletions

View File

@@ -18,11 +18,9 @@ package com.android.systemui.statusbar;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent;
import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.util.InjectionInflationController;
@@ -37,18 +35,14 @@ public class SuperStatusBarViewFactory {
private final Context mContext;
private final InjectionInflationController mInjectionInflationController;
private final NotificationShelfComponent.Builder mNotificationShelfComponentBuilder;
private StatusBarWindowView mStatusBarWindowView;
private NotificationShelfController mNotificationShelfController;
@Inject
public SuperStatusBarViewFactory(Context context,
InjectionInflationController injectionInflationController,
NotificationShelfComponent.Builder notificationShelfComponentBuilder) {
InjectionInflationController injectionInflationController) {
mContext = context;
mInjectionInflationController = injectionInflationController;
mNotificationShelfComponentBuilder = notificationShelfComponentBuilder;
}
/**
@@ -70,36 +64,4 @@ public class SuperStatusBarViewFactory {
}
return mStatusBarWindowView;
}
/**
* Gets the inflated {@link NotificationShelf} from
* {@link R.layout#status_bar_notification_shelf}.
* Returns a cached instance, if it has already been inflated.
*
* @param container the expected container to hold the {@link NotificationShelf}. The view
* isn't immediately attached, but the layout params of this view is used
* during inflation.
*/
public NotificationShelfController getNotificationShelfController(ViewGroup container) {
if (mNotificationShelfController != null) {
return mNotificationShelfController;
}
NotificationShelf view = (NotificationShelf) LayoutInflater.from(mContext)
.inflate(R.layout.status_bar_notification_shelf, container, /* attachToRoot= */
false);
if (view == null) {
throw new IllegalStateException(
"R.layout.status_bar_notification_shelf could not be properly inflated");
}
NotificationShelfComponent component = mNotificationShelfComponentBuilder
.notificationShelf(view)
.build();
mNotificationShelfController = component.getNotificationShelfController();
mNotificationShelfController.init();
return mNotificationShelfController;
}
}

View File

@@ -1107,14 +1107,10 @@ public class StatusBar extends SystemUI implements
// TODO: Deal with the ugliness that comes from having some of the statusbar broken out
// into fragments, but the rest here, it leaves some awkward lifecycle and whatnot.
mStackScrollerController =
mNotificationPanelViewController.getNotificationStackScrollLayoutController();
mStackScroller = mStackScrollerController.getView();
NotificationListContainer notifListContainer =
mStackScrollerController.getNotificationListContainer();
mNotificationLogger.setUpWithContainer(notifListContainer);
inflateShelf();
mNotificationIconAreaController.setupShelf(mNotificationShelfController);
mNotificationPanelViewController.addExpansionListener(mWakeUpCoordinator);
mNotificationPanelViewController.addExpansionListener(
@@ -1526,11 +1522,6 @@ public class StatusBar extends SystemUI implements
};
}
private void inflateShelf() {
mNotificationShelfController = mSuperStatusBarViewFactory
.getNotificationShelfController(mStackScroller);
}
private void inflateStatusBarWindow() {
StatusBarComponent statusBarComponent = mStatusBarComponentFactory.create();
mNotificationShadeWindowView = statusBarComponent.getNotificationShadeWindowView();
@@ -1542,7 +1533,10 @@ public class StatusBar extends SystemUI implements
mPhoneStatusBarWindow = mSuperStatusBarViewFactory.getStatusBarWindowView();
mNotificationPanelViewController = statusBarComponent.getNotificationPanelViewController();
statusBarComponent.getLockIconViewController().init();
mStackScrollerController = statusBarComponent.getNotificationStackScrollLayoutController();
mStackScroller = mStackScrollerController.getView();
mNotificationShelfController = statusBarComponent.getNotificationShelfController();
mAuthRippleController = statusBarComponent.getAuthRippleController();
mAuthRippleController.init();

View File

@@ -20,6 +20,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
import com.android.keyguard.LockIconViewController;
import com.android.systemui.biometrics.AuthRippleController;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
import com.android.systemui.statusbar.phone.NotificationShadeWindowViewController;
@@ -65,6 +67,14 @@ public interface StatusBarComponent {
@StatusBarScope
NotificationShadeWindowView getNotificationShadeWindowView();
/** */
@StatusBarScope
NotificationShelfController getNotificationShelfController();
/** */
@StatusBarScope
NotificationStackScrollLayoutController getNotificationStackScrollLayoutController();
/**
* Creates a NotificationShadeWindowViewController.
*/

View File

@@ -25,6 +25,11 @@ import com.android.keyguard.LockIconView;
import com.android.systemui.R;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.biometrics.AuthRippleView;
import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.NotificationPanelView;
import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
import com.android.systemui.statusbar.phone.TapAgainView;
@@ -58,6 +63,45 @@ public abstract class StatusBarViewModule {
return notificationShadeWindowView;
}
/** */
@Provides
@StatusBarComponent.StatusBarScope
public static NotificationStackScrollLayout providesNotificationStackScrollLayout(
NotificationStackScrollLayoutController notificationStackScrollLayoutController) {
return notificationStackScrollLayoutController.getView();
}
/** */
@Provides
@StatusBarComponent.StatusBarScope
public static NotificationShelf providesNotificationShelf(LayoutInflater layoutInflater,
NotificationStackScrollLayout notificationStackScrollLayout) {
NotificationShelf view = (NotificationShelf) layoutInflater.inflate(
R.layout.status_bar_notification_shelf, notificationStackScrollLayout, false);
if (view == null) {
throw new IllegalStateException(
"R.layout.status_bar_notification_shelf could not be properly inflated");
}
return view;
}
/** */
@Provides
@StatusBarComponent.StatusBarScope
public static NotificationShelfController providesStatusBarWindowView(
NotificationShelfComponent.Builder notificationShelfComponentBuilder,
NotificationShelf notificationShelf) {
NotificationShelfComponent component = notificationShelfComponentBuilder
.notificationShelf(notificationShelf)
.build();
NotificationShelfController notificationShelfController =
component.getNotificationShelfController();
notificationShelfController.init();
return notificationShelfController;
}
/** */
@Provides
@StatusBarComponent.StatusBarScope