Remove non-flag specific code from FeatureFlags.

Bug: 203548827
Test: manual
Change-Id: Iee4e779269e32c516bf1066f6d0c3bf2e4cae0d5
This commit is contained in:
Dave Mankoff
2021-11-08 14:09:42 -05:00
parent b76a7f7f1d
commit f2dec93a99
24 changed files with 130 additions and 85 deletions

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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");
}

View File

@@ -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");
}

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);
}
/**

View File

@@ -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
}
}

View File

@@ -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),

View File

@@ -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);
}
}

View File

@@ -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
}

View File

@@ -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);

View File

@@ -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.

View File

@@ -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
);
}
}

View File

@@ -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));

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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,

View File

@@ -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);

View File

@@ -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),