diff options
24 files changed, 130 insertions, 85 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.java index 5f7ad58ac035..f8bdaf60a103 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.java @@ -18,8 +18,6 @@ package com.android.systemui.flags; import android.content.Context; import android.util.FeatureFlagUtils; -import android.util.Log; -import android.widget.Toast; import com.android.systemui.dagger.SysUISingleton; @@ -33,12 +31,10 @@ import javax.inject.Inject; @SysUISingleton public class FeatureFlags { private final FlagReader mFlagReader; - private final Context mContext; @Inject - public FeatureFlags(FlagReader flagReader, Context context) { + public FeatureFlags(FlagReader flagReader) { mFlagReader = flagReader; - mContext = context; } /** @@ -49,22 +45,6 @@ public class FeatureFlags { return mFlagReader.isEnabled(flag); } - public void assertLegacyPipelineEnabled() { - if (isNewNotifPipelineRenderingEnabled()) { - throw new IllegalStateException("Old pipeline code running w/ new pipeline enabled"); - } - } - - public boolean checkLegacyPipelineEnabled() { - if (!isNewNotifPipelineRenderingEnabled()) { - return true; - } - Log.d("NotifPipeline", "Old pipeline code running w/ new pipeline enabled", - new Exception()); - Toast.makeText(mContext, "Old pipeline code running!", Toast.LENGTH_SHORT).show(); - return false; - } - public boolean isNewNotifPipelineRenderingEnabled() { return isEnabled(Flags.NEW_NOTIFICATION_PIPELINE_RENDERING); } @@ -129,8 +109,8 @@ public class FeatureFlags { } /** System setting for provider model behavior */ - public boolean isProviderModelSettingEnabled() { - return FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); + public boolean isProviderModelSettingEnabled(Context context) { + return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); } /** @@ -146,9 +126,4 @@ public class FeatureFlags { public boolean useCombinedQSHeaders() { return isEnabled(Flags.COMBINED_QS_HEADERS); } - - /** static method for the system setting */ - public static boolean isProviderModelSettingEnabled(Context context) { - return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); - } } diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java index ee24f45de756..c60e09889b15 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.java +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java @@ -92,6 +92,9 @@ public class Flags { /***************************************/ // 600- status bar + public static final BooleanFlag STATUS_BAR_PROVIDER_MODEL = + new BooleanFlag(600, false); + public static final BooleanFlag COMBINED_STATUS_BAR_SIGNAL_ICONS = new BooleanFlag(601, false); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 019676980259..af191a10a9e4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -536,7 +536,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D } } } - if (featureFlags.isProviderModelSettingEnabled()) { + if (featureFlags.isProviderModelSettingEnabled(context)) { if (!tiles.contains("internet")) { if (tiles.contains("wifi")) { // Replace the WiFi with Internet, and remove the Cell diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java index 993bbd039b60..eef3b4586443 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java @@ -121,7 +121,7 @@ public class TileQueryHelper { } final ArrayList<QSTile> tilesToAdd = new ArrayList<>(); - if (mFeatureFlags.isProviderModelSettingEnabled()) { + if (mFeatureFlags.isProviderModelSettingEnabled(mContext)) { possibleTiles.remove("cell"); possibleTiles.remove("wifi"); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java index ff3e97af72a7..18c8b7f5bde7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java @@ -33,6 +33,7 @@ import com.android.systemui.statusbar.dagger.StatusBarModule; import com.android.systemui.statusbar.notification.AssistantFeedbackController; import com.android.systemui.statusbar.notification.DynamicChildBindController; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.legacy.LowPriorityInflationHelper; @@ -91,6 +92,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle private final DynamicPrivacyController mDynamicPrivacyController; private final KeyguardBypassController mBypassController; private final ForegroundServiceSectionController mFgsSectionController; + private final NotifPipelineFlags mNotifPipelineFlags; private AssistantFeedbackController mAssistantFeedbackController; private final Context mContext; @@ -121,7 +123,8 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle ForegroundServiceSectionController fgsSectionController, DynamicChildBindController dynamicChildBindController, LowPriorityInflationHelper lowPriorityInflationHelper, - AssistantFeedbackController assistantFeedbackController) { + AssistantFeedbackController assistantFeedbackController, + NotifPipelineFlags notifPipelineFlags) { mContext = context; mHandler = mainHandler; mFeatureFlags = featureFlags; @@ -132,6 +135,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle mStatusBarStateController = (SysuiStatusBarStateController) statusBarStateController; mEntryManager = notificationEntryManager; mFgsSectionController = fgsSectionController; + mNotifPipelineFlags = notifPipelineFlags; Resources res = context.getResources(); mAlwaysExpandNonGroupedNotification = res.getBoolean(R.bool.config_alwaysExpandNonGroupedNotifications); @@ -157,7 +161,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle //TODO: Rewrite this to focus on Entries, or some other data object instead of views public void updateNotificationViews() { Assert.isMainThread(); - if (!mFeatureFlags.checkLegacyPipelineEnabled()) { + if (!mNotifPipelineFlags.checkLegacyPipelineEnabled()) { return; } @@ -435,7 +439,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle */ public void updateRowStates() { Assert.isMainThread(); - if (!mFeatureFlags.checkLegacyPipelineEnabled()) { + if (!mNotifPipelineFlags.checkLegacyPipelineEnabled()) { return; } @@ -524,7 +528,9 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle @Override public void onDynamicPrivacyChanged() { - mFeatureFlags.assertLegacyPipelineEnabled(); + if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) { + throw new IllegalStateException("Old pipeline code running w/ new pipeline enabled"); + } if (mPerformingUpdate) { Log.w(TAG, "onDynamicPrivacyChanged made a re-entrant call"); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/MobileSignalController.java index 9ae7ea2bdded..82e1cf877afe 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/MobileSignalController.java @@ -227,7 +227,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile mMobileStatusTracker = new MobileStatusTracker(mPhone, receiverLooper, info, mDefaults, mMobileCallback); mProviderModelBehavior = featureFlags.isCombinedStatusBarSignalIconsEnabled(); - mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(); + mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(mContext); } void setConfiguration(Config config) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java index 26780eb9d82c..a87efd7e10b1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java @@ -442,7 +442,7 @@ public class NetworkControllerImpl extends BroadcastReceiver mDemoModeController.addCallback(this); mProviderModelBehavior = mFeatureFlags.isCombinedStatusBarSignalIconsEnabled(); - mProviderModelSetting = mFeatureFlags.isProviderModelSettingEnabled(); + mProviderModelSetting = mFeatureFlags.isProviderModelSettingEnabled(mContext); mDumpManager.registerDumpable(TAG, this); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiSignalController.java index 103ca0ebc6ca..b5d36373fcf7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiSignalController.java @@ -68,7 +68,7 @@ public class WifiSignalController extends SignalController<WifiState, IconGroup> new WifiTrafficStateCallback()); } mCurrentState.iconGroup = mLastState.iconGroup = mUnmergedWifiIconGroup; - mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(); + mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(mContext); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java index d5cba72f99d3..77463fe825b5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java @@ -52,6 +52,7 @@ import com.android.systemui.statusbar.gesture.SwipeStatusBarAwayGestureHandler; import com.android.systemui.statusbar.notification.AssistantFeedbackController; import com.android.systemui.statusbar.notification.DynamicChildBindController; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotifCollection; import com.android.systemui.statusbar.notification.collection.NotifPipeline; @@ -211,7 +212,8 @@ public interface StatusBarDependenciesModule { ForegroundServiceSectionController fgsSectionController, DynamicChildBindController dynamicChildBindController, LowPriorityInflationHelper lowPriorityInflationHelper, - AssistantFeedbackController assistantFeedbackController) { + AssistantFeedbackController assistantFeedbackController, + NotifPipelineFlags notifPipelineFlags) { return new NotificationViewHierarchyManager( context, mainHandler, @@ -227,7 +229,8 @@ public interface StatusBarDependenciesModule { fgsSectionController, dynamicChildBindController, lowPriorityInflationHelper, - assistantFeedbackController); + assistantFeedbackController, + notifPipelineFlags); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt new file mode 100644 index 000000000000..914697b5296b --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * 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 + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification + +import android.content.Context +import android.util.Log +import android.widget.Toast +import com.android.systemui.flags.FeatureFlags +import javax.inject.Inject + +class NotifPipelineFlags @Inject constructor( + val context: Context, + val featureFlags: FeatureFlags +) { + fun checkLegacyPipelineEnabled(): Boolean { + if (!featureFlags.isNewNotifPipelineRenderingEnabled) { + return true + } + Log.d("NotifPipeline", "Old pipeline code running w/ new pipeline enabled", Exception()) + Toast.makeText(context, "Old pipeline code running!", Toast.LENGTH_SHORT).show() + return false + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java index 5c8e8b244abb..4c7b2bbfb6d9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java @@ -25,12 +25,12 @@ import android.view.ViewGroup; import com.android.internal.util.NotificationMessagingUtil; import com.android.systemui.dagger.SysUISingleton; -import com.android.systemui.flags.FeatureFlags; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.NotificationUiAdjustment; import com.android.systemui.statusbar.notification.InflationException; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationClicker; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.legacy.LowPriorityInflationHelper; @@ -55,7 +55,6 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { private static final String TAG = "NotificationViewManager"; private final Context mContext; - private final FeatureFlags mFeatureFlags; private final NotificationMessagingUtil mMessagingUtil; private final NotificationRemoteInputManager mNotificationRemoteInputManager; private final NotificationLockscreenUserManager mNotificationLockscreenUserManager; @@ -66,6 +65,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { mExpandableNotificationRowComponentBuilder; private final IconManager mIconManager; private final LowPriorityInflationHelper mLowPriorityInflationHelper; + private final NotifPipelineFlags mNotifPipelineFlags; private NotificationPresenter mPresenter; private NotificationListContainer mListContainer; @@ -75,7 +75,6 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { @Inject public NotificationRowBinderImpl( Context context, - FeatureFlags featureFlags, NotificationMessagingUtil notificationMessagingUtil, NotificationRemoteInputManager notificationRemoteInputManager, NotificationLockscreenUserManager notificationLockscreenUserManager, @@ -84,9 +83,9 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { Provider<RowInflaterTask> rowInflaterTaskProvider, ExpandableNotificationRowComponent.Builder expandableNotificationRowComponentBuilder, IconManager iconManager, - LowPriorityInflationHelper lowPriorityInflationHelper) { + LowPriorityInflationHelper lowPriorityInflationHelper, + NotifPipelineFlags notifPipelineFlags) { mContext = context; - mFeatureFlags = featureFlags; mNotifBindPipeline = notifBindPipeline; mRowContentBindStage = rowContentBindStage; mMessagingUtil = notificationMessagingUtil; @@ -96,6 +95,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { mExpandableNotificationRowComponentBuilder = expandableNotificationRowComponentBuilder; mIconManager = iconManager; mLowPriorityInflationHelper = lowPriorityInflationHelper; + mNotifPipelineFlags = notifPipelineFlags; } /** @@ -126,7 +126,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { throws InflationException { if (params == null) { // weak assert that the params should always be passed in the new pipeline - mFeatureFlags.checkLegacyPipelineEnabled(); + mNotifPipelineFlags.checkLegacyPipelineEnabled(); } ViewGroup parent = mListContainer.getViewParentForNotification(entry); @@ -187,7 +187,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { NotificationUiAdjustment oldAdjustment, NotificationUiAdjustment newAdjustment, NotificationRowContentBinder.InflationCallback callback) { - mFeatureFlags.checkLegacyPipelineEnabled(); + mNotifPipelineFlags.checkLegacyPipelineEnabled(); if (NotificationUiAdjustment.needReinflate(oldAdjustment, newAdjustment)) { if (entry.rowExists()) { ExpandableNotificationRow row = entry.getRow(); @@ -238,7 +238,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { isLowPriority = inflaterParams.isLowPriority(); } else { // LEGACY pipeline - mFeatureFlags.checkLegacyPipelineEnabled(); + mNotifPipelineFlags.checkLegacyPipelineEnabled(); // If this is our first time inflating, we don't actually know the groupings for real // yet, so we might actually inflate a low priority content view incorrectly here and // have to correct it later in the pipeline. On subsequent inflations (i.e. updates), diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/LowPriorityInflationHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/LowPriorityInflationHelper.java index dd1f9485a4f3..ae4f2bbc0453 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/LowPriorityInflationHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/LowPriorityInflationHelper.java @@ -17,7 +17,7 @@ package com.android.systemui.statusbar.notification.collection.legacy; import com.android.systemui.dagger.SysUISingleton; -import com.android.systemui.flags.FeatureFlags; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.RowContentBindParams; @@ -31,18 +31,18 @@ import javax.inject.Inject; */ @SysUISingleton public class LowPriorityInflationHelper { - private final FeatureFlags mFeatureFlags; private final NotificationGroupManagerLegacy mGroupManager; private final RowContentBindStage mRowContentBindStage; + private final NotifPipelineFlags mNotifPipelineFlags; @Inject LowPriorityInflationHelper( - FeatureFlags featureFlags, NotificationGroupManagerLegacy groupManager, - RowContentBindStage rowContentBindStage) { - mFeatureFlags = featureFlags; + RowContentBindStage rowContentBindStage, + NotifPipelineFlags notifPipelineFlags) { mGroupManager = groupManager; mRowContentBindStage = rowContentBindStage; + mNotifPipelineFlags = notifPipelineFlags; } /** @@ -59,7 +59,7 @@ public class LowPriorityInflationHelper { public void recheckLowPriorityViewAndInflate( NotificationEntry entry, ExpandableNotificationRow row) { - mFeatureFlags.checkLegacyPipelineEnabled(); + mNotifPipelineFlags.checkLegacyPipelineEnabled(); RowContentBindParams params = mRowContentBindStage.getStageParams(entry); final boolean shouldBeLowPriority = shouldUseLowPriorityView(entry); if (!row.isRemoved() && row.isLowPriority() != shouldBeLowPriority) { @@ -73,7 +73,7 @@ public class LowPriorityInflationHelper { * Whether the notification should inflate a low priority version of its content views. */ public boolean shouldUseLowPriorityView(NotificationEntry entry) { - mFeatureFlags.checkLegacyPipelineEnabled(); + mNotifPipelineFlags.checkLegacyPipelineEnabled(); return entry.isAmbient() && !mGroupManager.isChildInGroup(entry); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt index 408c457e259c..88198f394683 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt @@ -22,10 +22,10 @@ import android.view.LayoutInflater import android.view.View import com.android.internal.annotations.VisibleForTesting import com.android.systemui.R -import com.android.systemui.flags.FeatureFlags import com.android.systemui.media.KeyguardMediaController import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.statusbar.StatusBarState +import com.android.systemui.statusbar.notification.NotifPipelineFlags import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager import com.android.systemui.statusbar.notification.collection.render.SectionHeaderController import com.android.systemui.statusbar.notification.collection.render.ShadeViewManager @@ -54,12 +54,12 @@ import javax.inject.Inject * TODO: Move remaining sections logic from NSSL into this class. */ class NotificationSectionsManager @Inject internal constructor( - private val featureFlags: FeatureFlags, private val statusBarStateController: StatusBarStateController, private val configurationController: ConfigurationController, private val keyguardMediaController: KeyguardMediaController, private val sectionsFeatureManager: NotificationSectionsFeatureManager, private val logger: NotificationSectionsLogger, + private val notifPipelineFlags: NotifPipelineFlags, @IncomingHeader private val incomingHeaderController: SectionHeaderController, @PeopleHeader private val peopleHeaderController: SectionHeaderController, @AlertingHeader private val alertingHeaderController: SectionHeaderController, @@ -201,7 +201,7 @@ class NotificationSectionsManager @Inject internal constructor( override var targetPosition: Int? = null override fun adjustViewPosition() { - featureFlags.checkLegacyPipelineEnabled() + notifPipelineFlags.checkLegacyPipelineEnabled() val target = targetPosition val current = currentPosition if (target == null) { @@ -228,7 +228,7 @@ class NotificationSectionsManager @Inject internal constructor( private fun <T : StackScrollerDecorView> decorViewHeaderState( header: T ): SectionUpdateState<T> { - featureFlags.checkLegacyPipelineEnabled() + notifPipelineFlags.checkLegacyPipelineEnabled() val inner = expandableViewHeaderState(header) return object : SectionUpdateState<T> by inner { override fun adjustViewPosition() { @@ -245,7 +245,7 @@ class NotificationSectionsManager @Inject internal constructor( * bookkeeping and adds/moves/removes section headers if appropriate. */ fun updateSectionBoundaries(reason: String) { - featureFlags.checkLegacyPipelineEnabled() + notifPipelineFlags.checkLegacyPipelineEnabled() if (!isUsingMultipleSections) { return } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index b47e71aaccc2..338c7a2e904f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -200,6 +200,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.connectivity.NetworkController; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorControllerProvider; @@ -669,6 +670,7 @@ public class StatusBar extends CoreStartable implements private final Optional<Bubbles> mBubblesOptional; private final Bubbles.BubbleExpandListener mBubbleExpandListener; private final Optional<StartingSurface> mStartingSurfaceOptional; + private final NotifPipelineFlags mNotifPipelineFlags; private final ActivityIntentHelper mActivityIntentHelper; private NotificationStackScrollLayoutController mStackScrollerController; @@ -784,7 +786,8 @@ public class StatusBar extends CoreStartable implements Optional<StartingSurface> startingSurfaceOptional, TunerService tunerService, DumpManager dumpManager, - ActivityLaunchAnimator activityLaunchAnimator) { + ActivityLaunchAnimator activityLaunchAnimator, + NotifPipelineFlags notifPipelineFlags) { super(context); mNotificationsController = notificationsController; mLightBarController = lightBarController; @@ -881,6 +884,7 @@ public class StatusBar extends CoreStartable implements mLockscreenShadeTransitionController = lockscreenShadeTransitionController; mStartingSurfaceOptional = startingSurfaceOptional; + mNotifPipelineFlags = notifPipelineFlags; lockscreenShadeTransitionController.setStatusbar(this); mPanelExpansionStateManager.addExpansionListener(this::onPanelExpansionChanged); @@ -1478,7 +1482,8 @@ public class StatusBar extends CoreStartable implements mInitController, mNotificationInterruptStateProvider, mRemoteInputManager, - mConfigurationController); + mConfigurationController, + mNotifPipelineFlags); mNotificationShelfController.setOnActivatedListener(mPresenter); mRemoteInputManager.addControllerCallback(mNotificationShadeWindowController); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java index 7c0f923038b3..58a018c01d9e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java @@ -57,6 +57,7 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.AboveShelfObserver; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl; @@ -108,6 +109,7 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, private final AccessibilityManager mAccessibilityManager; private final KeyguardManager mKeyguardManager; private final NotificationShadeWindowController mNotificationShadeWindowController; + private final NotifPipelineFlags mNotifPipelineFlags; private final IStatusBarService mBarService; private final DynamicPrivacyController mDynamicPrivacyController; private boolean mReinflateNotificationsOnUserSwitched; @@ -144,7 +146,8 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, InitController initController, NotificationInterruptStateProvider notificationInterruptStateProvider, NotificationRemoteInputManager remoteInputManager, - ConfigurationController configurationController) { + ConfigurationController configurationController, + NotifPipelineFlags notifPipelineFlags) { mKeyguardStateController = keyguardStateController; mNotificationPanel = panel; mHeadsUpManager = headsUp; @@ -167,6 +170,7 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, mLockscreenGestureLogger = lockscreenGestureLogger; mAboveShelfObserver = new AboveShelfObserver(stackScrollerController.getView()); mNotificationShadeWindowController = notificationShadeWindowController; + mNotifPipelineFlags = notifPipelineFlags; mAboveShelfObserver.setListener(statusBarWindow.findViewById( R.id.notification_container_parent)); mAccessibilityManager = context.getSystemService(AccessibilityManager.class); @@ -305,7 +309,7 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, @Override public void updateNotificationViews(final String reason) { - if (!mFeatureFlags.checkLegacyPipelineEnabled()) { + if (!mNotifPipelineFlags.checkLegacyPipelineEnabled()) { return; } // The function updateRowStates depends on both of these being non-null, so check them here. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java index 3259f6b8027b..238a0f7ed3b8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java @@ -64,6 +64,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.connectivity.NetworkController; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager; @@ -237,7 +238,8 @@ public interface StatusBarPhoneModule { Optional<StartingSurface> startingSurfaceOptional, TunerService tunerService, DumpManager dumpManager, - ActivityLaunchAnimator activityLaunchAnimator) { + ActivityLaunchAnimator activityLaunchAnimator, + NotifPipelineFlags notifPipelineFlags) { return new StatusBar( context, notificationsController, @@ -336,7 +338,8 @@ public interface StatusBarPhoneModule { startingSurfaceOptional, tunerService, dumpManager, - activityLaunchAnimator + activityLaunchAnimator, + notifPipelineFlags ); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java index aba043b3c1e0..ce369359031d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java @@ -151,7 +151,7 @@ public class QSTileHostTest extends SysuiTestCase { mSecureSettings, mCustomTileStatePersister, mTileServiceRequestControllerBuilder, mFeatureFlags); setUpTileFactory(); - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(false); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(false); } private void setUpTileFactory() { @@ -200,7 +200,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testRemoveWifiAndCellularWithoutInternet() { - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true); mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "wifi, spec1, cell, spec2"); assertEquals("internet", mQSTileHost.mTileSpecs.get(0)); @@ -210,7 +210,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testRemoveWifiAndCellularWithInternet() { - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true); mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "wifi, spec1, cell, spec2, internet"); assertEquals("spec1", mQSTileHost.mTileSpecs.get(0)); @@ -220,7 +220,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testRemoveWifiWithoutInternet() { - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true); mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1, wifi, spec2"); assertEquals("spec1", mQSTileHost.mTileSpecs.get(0)); @@ -230,7 +230,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testRemoveCellWithInternet() { - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true); mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1, spec2, cell, internet"); assertEquals("spec1", mQSTileHost.mTileSpecs.get(0)); @@ -240,7 +240,7 @@ public class QSTileHostTest extends SysuiTestCase { @Test public void testNoWifiNoCellularNoInternet() { - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true); mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1,spec2"); assertEquals("spec1", mQSTileHost.mTileSpecs.get(0)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java index 018806e816d9..05db1eb0ed2b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java @@ -136,7 +136,7 @@ public class TileQueryHelperTest extends SysuiTestCase { } } ).when(mQSTileHost).createTile(anyString()); - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(false); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(false); FakeSystemClock clock = new FakeSystemClock(); mMainExecutor = new FakeExecutor(clock); mBgExecutor = new FakeExecutor(clock); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java index 9a23eb69f7ad..7210d9c15794 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java @@ -41,6 +41,7 @@ import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper; import com.android.systemui.statusbar.notification.AssistantFeedbackController; import com.android.systemui.statusbar.notification.DynamicChildBindController; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; @@ -77,6 +78,7 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { // Dependency mocks: @Mock private FeatureFlags mFeatureFlags; + @Mock private NotifPipelineFlags mNotifPipelineFlags; @Mock private NotificationEntryManager mEntryManager; @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private NotificationGroupManagerLegacy mGroupManager; @@ -103,7 +105,8 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { when(mVisualStabilityManager.areGroupChangesAllowed()).thenReturn(true); when(mVisualStabilityManager.isReorderingAllowed()).thenReturn(true); - when(mFeatureFlags.checkLegacyPipelineEnabled()).thenReturn(true); + when(mFeatureFlags.isNewNotifPipelineRenderingEnabled()).thenReturn(false); + when(mNotifPipelineFlags.checkLegacyPipelineEnabled()).thenReturn(true); mHelper = new NotificationTestHelper(mContext, mDependency, TestableLooper.get(this)); @@ -117,7 +120,8 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { mock(ForegroundServiceSectionController.class), mock(DynamicChildBindController.class), mock(LowPriorityInflationHelper.class), - mock(AssistantFeedbackController.class)); + mock(AssistantFeedbackController.class), + mNotifPipelineFlags); mViewHierarchyManager.setUpWithPresenter(mPresenter, mListContainer); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java index 47a11fcdcee4..344d6f469a17 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java @@ -158,11 +158,9 @@ public class NetworkControllerBaseTest extends SysuiTestCase { public void setUp() throws Exception { mMockingSession = ExtendedMockito.mockitoSession().strictness(Strictness.LENIENT) .mockStatic(FeatureFlags.class).startMocking(); - ExtendedMockito.doReturn(true).when(() -> - FeatureFlags.isProviderModelSettingEnabled(mContext)); mFeatureFlags = mock(FeatureFlags.class); when(mFeatureFlags.isCombinedStatusBarSignalIconsEnabled()).thenReturn(false); - when(mFeatureFlags.isProviderModelSettingEnabled()).thenReturn(true); + when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true); mInstrumentation = InstrumentationRegistry.getInstrumentation(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java index a53fb781ca8c..452161030e49 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java @@ -62,6 +62,7 @@ import com.android.systemui.statusbar.SbnBuilder; import com.android.systemui.statusbar.SmartReplyController; import com.android.systemui.statusbar.notification.ConversationNotificationProcessor; import com.android.systemui.statusbar.notification.ForegroundServiceDismissalFeatureController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationClicker; import com.android.systemui.statusbar.notification.NotificationEntryListener; import com.android.systemui.statusbar.notification.NotificationEntryManager; @@ -143,6 +144,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { @Mock private NotificationGroupManagerLegacy mGroupMembershipManager; @Mock private NotificationGroupManagerLegacy mGroupExpansionManager; @Mock private FeatureFlags mFeatureFlags; + @Mock private NotifPipelineFlags mNotifPipelineFlags; @Mock private LeakDetector mLeakDetector; @Mock private ActivatableNotificationViewController mActivatableNotificationViewController; @@ -179,6 +181,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { .setNotification(notification) .build(); + when(mNotifPipelineFlags.checkLegacyPipelineEnabled()).thenReturn(true); when(mFeatureFlags.isNewNotifPipelineRenderingEnabled()).thenReturn(false); mEntryManager = new NotificationEntryManager( @@ -282,7 +285,6 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { mRowBinder = new NotificationRowBinderImpl( mContext, - mFeatureFlags, new NotificationMessagingUtil(mContext), mRemoteInputManager, mLockscreenUserManager, @@ -294,7 +296,8 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { mEntryManager, mock(LauncherApps.class), new IconBuilder(mContext)), - mock(LowPriorityInflationHelper.class)); + mock(LowPriorityInflationHelper.class), + mNotifPipelineFlags); mEntryManager.setUpWithPresenter(mPresenter); mEntryManager.addNotificationEntryListener(mEntryListener); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java index 58e3cc8a50c9..276f246d89da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManagerTest.java @@ -52,6 +52,7 @@ import com.android.systemui.flags.FeatureFlags; import com.android.systemui.media.KeyguardMediaController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarState; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.render.SectionHeaderController; @@ -80,11 +81,8 @@ public class NotificationSectionsManagerTest extends SysuiTestCase { @Rule public final MockitoRule mockitoRule = MockitoJUnit.rule(); @Mock private NotificationStackScrollLayout mNssl; - @Mock private FeatureFlags mFeatureFlags; - @Mock private ActivityStarterDelegate mActivityStarterDelegate; @Mock private StatusBarStateController mStatusBarStateController; @Mock private ConfigurationController mConfigurationController; - @Mock private PeopleHubViewAdapter mPeopleHubAdapter; @Mock private KeyguardMediaController mKeyguardMediaController; @Mock private NotificationSectionsFeatureManager mSectionsFeatureManager; @Mock private NotificationRowComponent mNotificationRowComponent; @@ -94,6 +92,7 @@ public class NotificationSectionsManagerTest extends SysuiTestCase { @Mock private SectionHeaderController mPeopleHeaderController; @Mock private SectionHeaderController mAlertingHeaderController; @Mock private SectionHeaderController mSilentHeaderController; + @Mock private NotifPipelineFlags mNotifPipelineFlags; private NotificationSectionsManager mSectionsManager; @@ -122,12 +121,12 @@ public class NotificationSectionsManagerTest extends SysuiTestCase { when(mSilentHeaderController.getHeaderView()).thenReturn(mock(SectionHeaderView.class)); mSectionsManager = new NotificationSectionsManager( - mFeatureFlags, mStatusBarStateController, mConfigurationController, mKeyguardMediaController, mSectionsFeatureManager, mLogger, + mNotifPipelineFlags, mIncomingHeaderController, mPeopleHeaderController, mAlertingHeaderController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java index 4e6b0a26609b..ffef55bea467 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java @@ -49,6 +49,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.NotificationViewHierarchyManager; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; @@ -128,7 +129,8 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { mInitController, mNotificationInterruptStateProvider, mock(NotificationRemoteInputManager.class), - mock(ConfigurationController.class)); + mock(ConfigurationController.class), + mock(NotifPipelineFlags.class)); mInitController.executePostInitTasks(); ArgumentCaptor<NotificationInterruptSuppressor> suppressorCaptor = ArgumentCaptor.forClass(NotificationInterruptSuppressor.class); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index 371b91f17ce9..a2c3463f200f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -114,6 +114,7 @@ import com.android.systemui.statusbar.StatusBarStateControllerImpl; import com.android.systemui.statusbar.connectivity.NetworkController; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.notification.DynamicPrivacyController; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationFilter; import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; @@ -277,6 +278,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private OperatorNameViewController.Factory mOperatorNameViewControllerFactory; @Mock private PhoneStatusBarViewController.Factory mPhoneStatusBarViewControllerFactory; @Mock private ActivityLaunchAnimator mActivityLaunchAnimator; + @Mock private NotifPipelineFlags mNotifPipelineFlags; private ShadeController mShadeController; private final FakeSystemClock mFakeSystemClock = new FakeSystemClock(); private FakeExecutor mMainExecutor = new FakeExecutor(mFakeSystemClock); @@ -464,7 +466,8 @@ public class StatusBarTest extends SysuiTestCase { Optional.of(mStartingSurface), mTunerService, mDumpManager, - mActivityLaunchAnimator); + mActivityLaunchAnimator, + mNotifPipelineFlags); when(mKeyguardViewMediator.registerStatusBar( any(StatusBar.class), any(NotificationPanelViewController.class), |