From 30a2c5b007f18036916ee8f153876b7df5f86a4d Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Fri, 25 Jun 2021 14:29:03 -0400 Subject: [PATCH] Revert systemui status bar provider model behavior This CL reverts the status bar provider model behavior. It removes the logic to show only one icon at a time, and removes showing the call strength indicators. This change keeps the Internet tile, and decouples SystemUI from the system setting SETTING_PROVIDER_MODEL. Bug: 191903788 Test: atest SystemUITests SystemUIGoogleTests; manual Test: test with a SIM and a Wi-Fi connection and there should be both icons in the status bar and quick settings with this change. As well as the Internet tile should stay (rather than going back to the Cell and Wi-Fi tiles). Change-Id: I017c10e4d7c1b15b152c44d092695dbc77e4a0ec Merged-In: I017c10e4d7c1b15b152c44d092695dbc77e4a0ec --- packages/SystemUI/res/values/flags.xml | 2 + .../src/com/android/systemui/Dependency.java | 3 + .../com/android/systemui/qs/QSTileHost.java | 9 +-- .../systemui/qs/QuickStatusBarHeader.java | 12 ++-- .../qs/QuickStatusBarHeaderController.java | 11 ++- .../systemui/qs/carrier/CellSignalState.kt | 3 +- .../systemui/qs/carrier/QSCarrier.java | 24 +++---- .../qs/carrier/QSCarrierGroupController.java | 67 ++++++++++++++----- .../qs/customize/TileQueryHelper.java | 15 +++-- .../systemui/statusbar/FeatureFlags.java | 22 +++++- .../statusbar/StatusBarMobileView.java | 18 +++-- .../phone/CollapsedStatusBarFragment.java | 8 ++- .../statusbar/phone/DemoStatusIcons.java | 12 +++- .../phone/KeyguardStatusBarView.java | 5 +- .../systemui/statusbar/phone/StatusBar.java | 3 +- .../phone/StatusBarIconController.java | 18 +++-- .../phone/StatusBarSignalPolicy.java | 18 ++++- .../policy/MobileSignalController.java | 64 ++++++++++++------ .../policy/NetworkControllerImpl.java | 49 +++++++++----- .../policy/WifiSignalController.java | 22 +++--- .../android/systemui/qs/QSTileHostTest.java | 8 +-- .../qs/QuickStatusBarHeaderControllerTest.kt | 6 +- .../carrier/QSCarrierGroupControllerTest.java | 5 +- .../systemui/qs/carrier/QSCarrierTest.java | 6 +- .../qs/customize/TileQueryHelperTest.java | 5 +- .../phone/CollapsedStatusBarFragmentTest.java | 4 +- .../phone/StatusBarIconControllerTest.java | 9 +-- .../policy/NetworkControllerBaseTest.java | 24 ++++--- .../policy/NetworkControllerDataTest.java | 26 +++---- .../policy/NetworkControllerSignalTest.java | 8 +-- .../policy/NetworkControllerWifiTest.java | 2 + 31 files changed, 329 insertions(+), 159 deletions(-) diff --git a/packages/SystemUI/res/values/flags.xml b/packages/SystemUI/res/values/flags.xml index b999e51bdaa50..7c6205a9cc55f 100644 --- a/packages/SystemUI/res/values/flags.xml +++ b/packages/SystemUI/res/values/flags.xml @@ -52,4 +52,6 @@ false true + + false diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java index 67cf4812ba6bf..104d711f46fb6 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -73,6 +73,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.DevicePolicyManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationMediaManager; @@ -360,6 +361,7 @@ public class Dependency { @Inject Lazy mPrivacyDotViewControllerLazy; @Inject Lazy mEdgeBackGestureHandler; @Inject Lazy mUiEventLogger; + @Inject Lazy mFeatureFlagsLazy; @Inject public Dependency() { @@ -574,6 +576,7 @@ public class Dependency { mProviders.put(PrivacyDotViewController.class, mPrivacyDotViewControllerLazy::get); mProviders.put(EdgeBackGestureHandler.class, mEdgeBackGestureHandler::get); mProviders.put(UiEventLogger.class, mUiEventLogger::get); + mProviders.put(FeatureFlags.class, mFeatureFlagsLazy::get); Dependency.setInstance(this); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 6ddf2a75f491f..756ad99398864 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -27,7 +27,6 @@ import android.provider.Settings.Secure; import android.service.quicksettings.Tile; import android.text.TextUtils; import android.util.ArraySet; -import android.util.FeatureFlagUtils; import android.util.Log; import com.android.internal.logging.InstanceId; @@ -52,6 +51,7 @@ import com.android.systemui.qs.external.TileServices; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.settings.UserTracker; import com.android.systemui.shared.plugins.PluginManager; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.phone.AutoTileManager; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarIconController; @@ -123,7 +123,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D UiEventLogger uiEventLogger, UserTracker userTracker, SecureSettings secureSettings, - CustomTileStatePersister customTileStatePersister) { + CustomTileStatePersister customTileStatePersister + ) { mIconController = iconController; mContext = context; mUserContext = context; @@ -517,7 +518,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D // --WiFiTile // --CellularTIle if (tiles.contains("internet") || tiles.contains("wifi") || tiles.contains("cell")) { - if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + if (FeatureFlags.isProviderModelSettingEnabled(context)) { if (!tiles.contains("internet")) { if (tiles.contains("wifi")) { // Replace the WiFi with Internet, and remove the Cell @@ -559,7 +560,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D } // TODO(b/174753536): Change the config file directly. // Filter out unused tiles from the default QS config. - if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + if (FeatureFlags.isProviderModelSettingEnabled(context)) { tiles.remove("cell"); tiles.remove("wifi"); } else { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 997b966267478..c58173b817fa5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -23,7 +23,6 @@ import android.content.res.Resources; import android.graphics.Color; import android.graphics.Rect; import android.util.AttributeSet; -import android.util.FeatureFlagUtils; import android.util.Pair; import android.view.DisplayCutout; import android.view.View; @@ -88,11 +87,11 @@ public class QuickStatusBarHeader extends FrameLayout { private float mKeyguardExpansionFraction; private int mTextColorPrimary = Color.TRANSPARENT; private int mTopViewMeasureHeight; + private boolean mProviderModel; private final String mMobileSlotName; private final String mNoCallingSlotName; private final String mCallStrengthSlotName; - private final boolean mProviderModel; public QuickStatusBarHeader(Context context, AttributeSet attrs) { super(context, attrs); @@ -100,11 +99,6 @@ public class QuickStatusBarHeader extends FrameLayout { mNoCallingSlotName = context.getString(com.android.internal.R.string.status_bar_no_calling); mCallStrengthSlotName = context.getString(com.android.internal.R.string.status_bar_call_strength); - if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - mProviderModel = true; - } else { - mProviderModel = false; - } } /** @@ -154,7 +148,9 @@ public class QuickStatusBarHeader extends FrameLayout { } void onAttach(TintedIconManager iconManager, - QSExpansionPathInterpolator qsExpansionPathInterpolator) { + QSExpansionPathInterpolator qsExpansionPathInterpolator, + boolean providerModel) { + mProviderModel = providerModel; mTintedIconManager = iconManager; int fillColor = Utils.getColorAttrDefaultColor(getContext(), android.R.attr.textColorPrimary); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java index 76076f6c27611..fcf1302b8fb41 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java @@ -37,6 +37,7 @@ import com.android.systemui.privacy.PrivacyItemController; import com.android.systemui.privacy.logging.PrivacyLogger; import com.android.systemui.qs.carrier.QSCarrierGroupController; import com.android.systemui.qs.dagger.QSScope; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusIconContainer; import com.android.systemui.statusbar.policy.Clock; @@ -69,6 +70,7 @@ class QuickStatusBarHeaderController extends ViewController { @@ -174,7 +178,8 @@ class QuickStatusBarHeaderController extends ViewController tilesToAdd = new ArrayList<>(); // TODO(b/174753536): Move it into the config file. - if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + if (mFeatureFlags.isProviderModelSettingEnabled()) { possibleTiles.remove("cell"); possibleTiles.remove("wifi"); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java b/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java index 8e5d47f19acd4..5a4245853a6fa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java @@ -16,6 +16,9 @@ package com.android.systemui.statusbar; +import android.content.Context; +import android.util.FeatureFlagUtils; + import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.flags.FeatureFlagReader; @@ -30,10 +33,12 @@ import javax.inject.Inject; @SysUISingleton public class FeatureFlags { private final FeatureFlagReader mFlagReader; + private final Context mContext; @Inject - public FeatureFlags(FeatureFlagReader flagReader) { + public FeatureFlags(FeatureFlagReader flagReader, Context context) { mFlagReader = flagReader; + mContext = context; } public boolean isNewNotifPipelineEnabled() { @@ -92,4 +97,19 @@ public class FeatureFlags { public boolean isSmartSpaceSharedElementTransitionEnabled() { return mFlagReader.isEnabled(R.bool.flag_smartspace_shared_element_transition); } + + /** Whether or not to use the provider model behavior for the status bar icons */ + public boolean isCombinedStatusBarSignalIconsEnabled() { + return mFlagReader.isEnabled(R.bool.flag_combined_status_bar_signal_icons); + } + + /** System setting for provider model behavior */ + public boolean isProviderModelSettingEnabled() { + return FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); + } + + /** 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/statusbar/StatusBarMobileView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java index ab17ee0b7261b..68dcdd9ff49fa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java @@ -26,7 +26,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Rect; import android.util.AttributeSet; -import android.util.FeatureFlagUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -60,13 +59,21 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver, private int mVisibleState = -1; private DualToneHandler mDualToneHandler; private boolean mForceHidden; + private boolean mProviderModel; - public static StatusBarMobileView fromContext(Context context, String slot) { + /** + * Designated constructor + */ + public static StatusBarMobileView fromContext( + Context context, + String slot, + boolean providerModel + ) { LayoutInflater inflater = LayoutInflater.from(context); StatusBarMobileView v = (StatusBarMobileView) inflater.inflate(R.layout.status_bar_mobile_signal_group, null); v.setSlot(slot); - v.init(); + v.init(providerModel); v.setVisibleState(STATE_ICON); return v; } @@ -99,12 +106,13 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver, outRect.bottom += translationY; } - private void init() { + private void init(boolean providerModel) { + mProviderModel = providerModel; mDualToneHandler = new DualToneHandler(getContext()); mMobileGroup = findViewById(R.id.mobile_group); mMobile = findViewById(R.id.mobile_signal); mMobileType = findViewById(R.id.mobile_type); - if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + if (mProviderModel) { mMobileRoaming = findViewById(R.id.mobile_roaming_large); } else { mMobileRoaming = findViewById(R.id.mobile_roaming); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java index 69360b290118a..1361acb1e156e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java @@ -42,6 +42,7 @@ import com.android.systemui.R; import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; @@ -93,6 +94,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private final SystemStatusAnimationScheduler mAnimationScheduler; private final StatusBarLocationPublisher mLocationPublisher; private NotificationIconAreaController mNotificationIconAreaController; + private final FeatureFlags mFeatureFlags; private List mBlockedIcons = new ArrayList<>(); @@ -115,12 +117,14 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue OngoingCallController ongoingCallController, SystemStatusAnimationScheduler animationScheduler, StatusBarLocationPublisher locationPublisher, - NotificationIconAreaController notificationIconAreaController + NotificationIconAreaController notificationIconAreaController, + FeatureFlags featureFlags ) { mOngoingCallController = ongoingCallController; mAnimationScheduler = animationScheduler; mLocationPublisher = locationPublisher; mNotificationIconAreaController = notificationIconAreaController; + mFeatureFlags = featureFlags; } @Override @@ -150,7 +154,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue mStatusBar.restoreHierarchyState( savedInstanceState.getSparseParcelableArray(EXTRA_PANEL_STATE)); } - mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons)); + mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons), mFeatureFlags); mDarkIconManager.setShouldLog(true); mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume)); mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock)); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java index 31965d4fc4cd5..b4f8126042cee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java @@ -31,6 +31,7 @@ import com.android.systemui.R; import com.android.systemui.demomode.DemoMode; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.StatusBarMobileView; import com.android.systemui.statusbar.StatusBarWifiView; @@ -48,16 +49,22 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da private final LinearLayout mStatusIcons; private final ArrayList mMobileViews = new ArrayList<>(); private final int mIconSize; + private final FeatureFlags mFeatureFlags; private StatusBarWifiView mWifiView; private boolean mDemoMode; private int mColor; - public DemoStatusIcons(LinearLayout statusIcons, int iconSize) { + public DemoStatusIcons( + LinearLayout statusIcons, + int iconSize, + FeatureFlags featureFlags + ) { super(statusIcons.getContext()); mStatusIcons = statusIcons; mIconSize = iconSize; mColor = DarkIconDispatcher.DEFAULT_ICON_TINT; + mFeatureFlags = featureFlags; if (statusIcons instanceof StatusIconContainer) { setShouldRestrictIcons(((StatusIconContainer) statusIcons).isRestrictingIcons()); @@ -247,7 +254,8 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da public void addMobileView(MobileIconState state) { Log.d(TAG, "addMobileView: "); - StatusBarMobileView view = StatusBarMobileView.fromContext(mContext, state.slot); + StatusBarMobileView view = StatusBarMobileView.fromContext( + mContext, state.slot, mFeatureFlags.isCombinedStatusBarSignalIconsEnabled()); view.applyMobileState(state); view.setStaticDrawableColor(mColor); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java index eef24200a882e..e272d2713e2a9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -50,6 +50,7 @@ import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager; @@ -105,6 +106,7 @@ public class KeyguardStatusBarView extends RelativeLayout implements private int mLayoutState = LAYOUT_NONE; private SystemStatusAnimationScheduler mAnimationScheduler; + private FeatureFlags mFeatureFlags; /** * Draw this many pixels into the left/right side of the cutout to optimally use the space @@ -142,6 +144,7 @@ public class KeyguardStatusBarView extends RelativeLayout implements loadBlockList(); mBatteryController = Dependency.get(BatteryController.class); mAnimationScheduler = Dependency.get(SystemStatusAnimationScheduler.class); + mFeatureFlags = Dependency.get(FeatureFlags.class); } @Override @@ -364,7 +367,7 @@ public class KeyguardStatusBarView extends RelativeLayout implements userInfoController.addCallback(this); userInfoController.reloadUserInfo(); Dependency.get(ConfigurationController.class).addCallback(this); - mIconManager = new TintedIconManager(findViewById(R.id.statusIcons)); + mIconManager = new TintedIconManager(findViewById(R.id.statusIcons), mFeatureFlags); mIconManager.setBlockList(mBlockedIcons); Dependency.get(StatusBarIconController.class).addIconGroup(mIconManager); mAnimationScheduler.addCallback(this); 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 53394c31940e2..64dd98f451816 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1185,7 +1185,8 @@ public class StatusBar extends SystemUI implements DemoMode, mOngoingCallController, mAnimationScheduler, mStatusBarLocationPublisher, - mNotificationIconAreaController), + mNotificationIconAreaController, + mFeatureFlags), CollapsedStatusBarFragment.TAG) .commit(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java index 93b83d3cbcbd6..2c75534870674 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java @@ -38,6 +38,7 @@ import com.android.systemui.R; import com.android.systemui.demomode.DemoModeCommandReceiver; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.StatusBarMobileView; import com.android.systemui.statusbar.StatusBarWifiView; @@ -121,8 +122,8 @@ public interface StatusBarIconController { private final DarkIconDispatcher mDarkIconDispatcher; private int mIconHPadding; - public DarkIconManager(LinearLayout linearLayout) { - super(linearLayout); + public DarkIconManager(LinearLayout linearLayout, FeatureFlags featureFlags) { + super(linearLayout, featureFlags); mIconHPadding = mContext.getResources().getDimensionPixelSize( R.dimen.status_bar_icon_padding); mDarkIconDispatcher = Dependency.get(DarkIconDispatcher.class); @@ -182,8 +183,8 @@ public interface StatusBarIconController { class TintedIconManager extends IconManager { private int mColor; - public TintedIconManager(ViewGroup group) { - super(group); + public TintedIconManager(ViewGroup group, FeatureFlags featureFlags) { + super(group, featureFlags); } @Override @@ -218,6 +219,7 @@ public interface StatusBarIconController { * Turns info from StatusBarIconController into ImageViews in a ViewGroup. */ class IconManager implements DemoModeCommandReceiver { + private final FeatureFlags mFeatureFlags; protected final ViewGroup mGroup; protected final Context mContext; protected final int mIconSize; @@ -231,7 +233,8 @@ public interface StatusBarIconController { protected ArrayList mBlockList = new ArrayList<>(); - public IconManager(ViewGroup group) { + public IconManager(ViewGroup group, FeatureFlags featureFlags) { + mFeatureFlags = featureFlags; mGroup = group; mContext = group.getContext(); mIconSize = mContext.getResources().getDimensionPixelSize( @@ -332,7 +335,8 @@ public interface StatusBarIconController { } private StatusBarMobileView onCreateStatusBarMobileView(String slot) { - StatusBarMobileView view = StatusBarMobileView.fromContext(mContext, slot); + StatusBarMobileView view = StatusBarMobileView.fromContext( + mContext, slot, mFeatureFlags.isCombinedStatusBarSignalIconsEnabled()); return view; } @@ -452,7 +456,7 @@ public interface StatusBarIconController { } protected DemoStatusIcons createDemoStatusIcons() { - return new DemoStatusIcons((LinearLayout) mGroup, mIconSize); + return new DemoStatusIcons((LinearLayout) mGroup, mIconSize, mFeatureFlags); } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java index d3953df8c8c05..fe52281652a9a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java @@ -25,6 +25,7 @@ import android.util.Log; import com.android.settingslib.mobile.TelephonyIcons; import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; @@ -63,6 +64,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba private final Handler mHandler = Handler.getMain(); private final CarrierConfigTracker mCarrierConfigTracker; private final TunerService mTunerService; + private final FeatureFlags mFeatureFlags; private boolean mHideAirplane; private boolean mHideMobile; @@ -82,9 +84,15 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba private WifiIconState mWifiIconState = new WifiIconState(); @Inject - public StatusBarSignalPolicy(Context context, StatusBarIconController iconController, - CarrierConfigTracker carrierConfigTracker, NetworkController networkController, - SecurityController securityController, TunerService tunerService) { + public StatusBarSignalPolicy( + Context context, + StatusBarIconController iconController, + CarrierConfigTracker carrierConfigTracker, + NetworkController networkController, + SecurityController securityController, + TunerService tunerService, + FeatureFlags featureFlags + ) { mContext = context; mIconController = iconController; @@ -92,6 +100,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba mNetworkController = networkController; mSecurityController = securityController; mTunerService = tunerService; + mFeatureFlags = featureFlags; mSlotAirplane = mContext.getString(com.android.internal.R.string.status_bar_airplane); mSlotMobile = mContext.getString(com.android.internal.R.string.status_bar_mobile); @@ -365,6 +374,9 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba @Override public void setConnectivityStatus(boolean noDefaultNetwork, boolean noValidatedNetwork, boolean noNetworksAvailable) { + if (!mFeatureFlags.isCombinedStatusBarSignalIconsEnabled()) { + return; + } if (DEBUG) { Log.d(TAG, "setConnectivityStatus: " + "noDefaultNetwork = " + noDefaultNetwork + "," diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 2ac5c1eeae8e7..43781f3941baf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -42,7 +42,6 @@ import android.telephony.ims.ImsRegistrationAttributes; import android.telephony.ims.RegistrationManager.RegistrationCallback; import android.text.Html; import android.text.TextUtils; -import android.util.FeatureFlagUtils; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; @@ -58,6 +57,7 @@ import com.android.settingslib.mobile.MobileStatusTracker.SubscriptionDefaults; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.SignalStrengthUtil; import com.android.systemui.R; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; @@ -85,7 +85,8 @@ public class MobileSignalController extends SignalController { @@ -687,7 +695,7 @@ public class NetworkControllerImpl extends BroadcastReceiver cb.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); cb.setNoSims(mHasNoSubs, mSimDetected); - if (mProviderModel) { + if (mProviderModelBehavior) { cb.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition, mNoNetworksAvailable); } mWifiSignalController.notifyListeners(cb); @@ -695,7 +703,7 @@ public class NetworkControllerImpl extends BroadcastReceiver for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.notifyListeners(cb); - if (mProviderModel) { + if (mProviderModelBehavior) { mobileSignalController.refreshCallIndicator(cb); } } @@ -796,7 +804,7 @@ public class NetworkControllerImpl extends BroadcastReceiver for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setConfiguration(mConfig); - if (mProviderModel) { + if (mProviderModelBehavior) { controller.refreshCallIndicator(mCallbackHandler); } } @@ -912,7 +920,8 @@ public class NetworkControllerImpl extends BroadcastReceiver MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone.createForSubscriptionId(subId), mCallbackHandler, this, subscriptions.get(i), - mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker); + mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker, + mFeatureFlags); controller.setUserSetupComplete(mUserSetup); mMobileSignalControllers.put(subId, controller); if (subscriptions.get(i).getSimSlotIndex() == 0) { @@ -1058,10 +1067,10 @@ public class NetworkControllerImpl extends BroadcastReceiver || mValidatedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET); pushConnectivityToSignals(); - if (mProviderModel) { + if (mProviderModelBehavior) { mNoDefaultNetwork = !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_CELLULAR) - && !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_WIFI) - && !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET); + && !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_WIFI) + && !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET); mCallbackHandler.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition, mNoNetworksAvailable); for (int i = 0; i < mMobileSignalControllers.size(); i++) { @@ -1069,6 +1078,13 @@ public class NetworkControllerImpl extends BroadcastReceiver mobileSignalController.updateNoCallingState(); } notifyAllListeners(); + } else if (mProviderModelSetting) { + // TODO(b/191903788): Replace the flag name once the new flag is added. + mNoDefaultNetwork = !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_CELLULAR) + && !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_WIFI) + && !mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET); + mCallbackHandler.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition, + mNoNetworksAvailable); } } @@ -1376,7 +1392,8 @@ public class NetworkControllerImpl extends BroadcastReceiver MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this, - info, mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker); + info, mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker, + mFeatureFlags); mMobileSignalControllers.put(id, controller); controller.getState().userSetup = true; return info; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java index 2406db3ee58f3..f8e36476c4a67 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java @@ -27,7 +27,6 @@ import android.net.NetworkScoreManager; import android.net.wifi.WifiManager; import android.text.Html; import android.text.TextUtils; -import android.util.FeatureFlagUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.SignalIcon.IconGroup; @@ -37,6 +36,7 @@ import com.android.settingslib.graph.SignalDrawable; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.wifi.WifiStatusTracker; import com.android.systemui.R; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; @@ -52,12 +52,17 @@ public class WifiSignalController extends private final IconGroup mUnmergedWifiIconGroup = WifiIcons.UNMERGED_WIFI; private final MobileIconGroup mCarrierMergedWifiIconGroup = TelephonyIcons.CARRIER_MERGED_WIFI; private final WifiManager mWifiManager; - private final boolean mProviderModel; + private final boolean mProviderModelSetting; - public WifiSignalController(Context context, boolean hasMobileDataFeature, - CallbackHandler callbackHandler, NetworkControllerImpl networkController, - WifiManager wifiManager, ConnectivityManager connectivityManager, - NetworkScoreManager networkScoreManager) { + public WifiSignalController( + Context context, + boolean hasMobileDataFeature, + CallbackHandler callbackHandler, + NetworkControllerImpl networkController, + WifiManager wifiManager, + ConnectivityManager connectivityManager, + NetworkScoreManager networkScoreManager, + FeatureFlags featureFlags) { super("WifiSignalController", context, NetworkCapabilities.TRANSPORT_WIFI, callbackHandler, networkController); mWifiManager = wifiManager; @@ -70,8 +75,7 @@ public class WifiSignalController extends new WifiTrafficStateCallback()); } mCurrentState.iconGroup = mLastState.iconGroup = mUnmergedWifiIconGroup; - mProviderModel = FeatureFlagUtils.isEnabled( - mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL); + mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(); } @Override @@ -108,7 +112,7 @@ public class WifiSignalController extends if (mCurrentState.inetCondition == 0) { contentDescription += ("," + mContext.getString(R.string.data_connection_no_internet)); } - if (mProviderModel) { + if (mProviderModelSetting) { IconState statusIcon = new IconState( wifiVisible, getCurrentIconId(), contentDescription); IconState qsIcon = null; 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 69bdcbcff270e..f208b807f7475 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java @@ -39,7 +39,6 @@ import android.os.Looper; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; -import android.util.FeatureFlagUtils; import android.view.View; import androidx.annotation.Nullable; @@ -65,6 +64,7 @@ import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.settings.UserTracker; import com.android.systemui.shared.plugins.PluginManager; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.phone.AutoTileManager; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarIconController; @@ -140,9 +140,9 @@ public class QSTileHostTest extends SysuiTestCase { // TODO(b/174753536): Remove the mMockingSession when // FeatureFlagUtils.SETTINGS_PROVIDER_MODEL is removed. mMockingSession = ExtendedMockito.mockitoSession().strictness(Strictness.LENIENT) - .mockStatic(FeatureFlagUtils.class).startMocking(); - ExtendedMockito.doReturn(false).when(() -> FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)); + .mockStatic(FeatureFlags.class).startMocking(); + ExtendedMockito.doReturn(false) + .when(() -> FeatureFlags.isProviderModelSettingEnabled(mContext)); MockitoAnnotations.initMocks(this); mLooper = TestableLooper.get(this); mHandler = new Handler(mLooper.getLooper()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt index 7ac6f8212a61c..f140eb85e76d9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickStatusBarHeaderControllerTest.kt @@ -32,6 +32,7 @@ import com.android.systemui.privacy.PrivacyItemController import com.android.systemui.privacy.logging.PrivacyLogger import com.android.systemui.qs.carrier.QSCarrierGroup import com.android.systemui.qs.carrier.QSCarrierGroupController +import com.android.systemui.statusbar.FeatureFlags import com.android.systemui.statusbar.phone.StatusBarIconController import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.policy.Clock @@ -90,6 +91,8 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() { private lateinit var mockView: View @Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var context: Context + @Mock + private lateinit var featureFlags: FeatureFlags private val qsExpansionPathInterpolator = QSExpansionPathInterpolator() @@ -117,7 +120,8 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() { privacyLogger, colorExtractor, privacyDialogController, - qsExpansionPathInterpolator + qsExpansionPathInterpolator, + featureFlags ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java index 876acc12f7db3..9ae606901a91a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java @@ -35,6 +35,7 @@ import androidx.test.filters.SmallTest; import com.android.keyguard.CarrierTextManager; import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; import com.android.systemui.util.CarrierConfigTracker; @@ -70,6 +71,7 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { @Mock private CarrierConfigTracker mCarrierConfigTracker; private TestableLooper mTestableLooper; + @Mock private FeatureFlags mFeatureFlags; @Before public void setup() throws Exception { @@ -102,7 +104,8 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { mQSCarrierGroupController = new QSCarrierGroupController.Builder( mActivityStarter, handler, TestableLooper.get(this).getLooper(), - mNetworkController, mCarrierTextControllerBuilder, mContext, mCarrierConfigTracker) + mNetworkController, mCarrierTextControllerBuilder, mContext, mCarrierConfigTracker, + mFeatureFlags) .setQSCarrierGroup(mQSCarrierGroup) .build(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierTest.java index 104b6250b62fb..9bee47db3e871 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierTest.java @@ -62,14 +62,14 @@ public class QSCarrierTest extends SysuiTestCase { @Test public void testUpdateState_first() { - CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false); + CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false); assertTrue(mQSCarrier.updateState(c)); } @Test public void testUpdateState_same() { - CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false); + CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false); assertTrue(mQSCarrier.updateState(c)); assertFalse(mQSCarrier.updateState(c)); @@ -77,7 +77,7 @@ public class QSCarrierTest extends SysuiTestCase { @Test public void testUpdateState_changed() { - CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false); + CellSignalState c = new CellSignalState(true, mSignalIconId, "", "", false, false); assertTrue(mQSCarrier.updateState(c)); 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 f2f4f07725c98..4a1411a329beb 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 @@ -60,6 +60,7 @@ import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSTileHost; import com.android.systemui.settings.UserTracker; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -113,6 +114,7 @@ public class TileQueryHelperTest extends SysuiTestCase { private PackageManager mPackageManager; @Mock private UserTracker mUserTracker; + @Mock private FeatureFlags mFeatureFlags; @Captor private ArgumentCaptor> mCaptor; @@ -150,7 +152,8 @@ public class TileQueryHelperTest extends SysuiTestCase { FakeSystemClock clock = new FakeSystemClock(); mMainExecutor = new FakeExecutor(clock); mBgExecutor = new FakeExecutor(clock); - mTileQueryHelper = new TileQueryHelper(mContext, mUserTracker, mMainExecutor, mBgExecutor); + mTileQueryHelper = new TileQueryHelper( + mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags); mTileQueryHelper.setListener(mListener); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java index f485b465e4865..9640423425f5b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java @@ -38,6 +38,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.R; import com.android.systemui.SysuiBaseFragmentTest; import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; @@ -229,7 +230,8 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { mOngoingCallController, mAnimationScheduler, mLocationPublisher, - mMockNotificationAreaController); + mMockNotificationAreaController, + mock(FeatureFlags.class)); } private void setUpNotificationIconAreaController() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java index f147f1cec9edb..e3263d4ca6b3a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java @@ -31,6 +31,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.statusbar.StatusBarIcon; import com.android.systemui.plugins.DarkIconDispatcher; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.StatusBarMobileView; import com.android.systemui.statusbar.StatusBarWifiView; @@ -66,7 +67,7 @@ public class StatusBarIconControllerTest extends LeakCheckedTest { @Test public void testSetCalledOnAdd_DarkIconManager() { LinearLayout layout = new LinearLayout(mContext); - TestDarkIconManager manager = new TestDarkIconManager(layout); + TestDarkIconManager manager = new TestDarkIconManager(layout, mock(FeatureFlags.class)); testCallOnAdd_forManager(manager); } @@ -103,8 +104,8 @@ public class StatusBarIconControllerTest extends LeakCheckedTest { private static class TestDarkIconManager extends DarkIconManager implements TestableIconManager { - TestDarkIconManager(LinearLayout group) { - super(group); + TestDarkIconManager(LinearLayout group, FeatureFlags featureFlags) { + super(group, featureFlags); } @Override @@ -139,7 +140,7 @@ public class StatusBarIconControllerTest extends LeakCheckedTest { private static class TestIconManager extends IconManager implements TestableIconManager { TestIconManager(ViewGroup group) { - super(group); + super(group, mock(FeatureFlags.class)); } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index abc66dbca2a2f..f2de26c29805d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -56,7 +56,6 @@ import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.testing.TestableLooper; import android.testing.TestableResources; -import android.util.FeatureFlagUtils; import android.util.Log; import androidx.test.InstrumentationRegistry; @@ -71,6 +70,7 @@ import com.android.settingslib.net.DataUsageController; import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.demomode.DemoModeController; +import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; @@ -127,6 +127,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { protected DemoModeController mDemoModeController; protected CarrierConfigTracker mCarrierConfigTracker; protected FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); + protected FeatureFlags mFeatureFlags; protected int mSubId; @@ -157,9 +158,13 @@ public class NetworkControllerBaseTest extends SysuiTestCase { @Before public void setUp() throws Exception { mMockingSession = ExtendedMockito.mockitoSession().strictness(Strictness.LENIENT) - .mockStatic(FeatureFlagUtils.class).startMocking(); - ExtendedMockito.doReturn(true).when(() -> FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)); + .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); + mInstrumentation = InstrumentationRegistry.getInstrumentation(); Settings.Global.putInt(mContext.getContentResolver(), Global.AIRPLANE_MODE_ON, 0); @@ -235,7 +240,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mMockProvisionController, mMockBd, mDemoModeController, - mCarrierConfigTracker); + mCarrierConfigTracker, + mFeatureFlags); setupNetworkController(); // Trigger blank callbacks to always get the current state (some tests don't trigger @@ -303,7 +309,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, mDemoModeController, - mCarrierConfigTracker); + mCarrierConfigTracker, mFeatureFlags); setupNetworkController(); @@ -571,13 +577,13 @@ public class NetworkControllerBaseTest extends SysuiTestCase { boolean cutOut) { verifyLastMobileDataIndicators( visible, icon, typeIcon, qsVisible, qsIcon, qsTypeIcon, dataIn, dataOut, cutOut, - null, null); + null, null, visible); } protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon, boolean qsVisible, int qsIcon, int qsTypeIcon, boolean dataIn, boolean dataOut, boolean cutOut, CharSequence typeContentDescription, - CharSequence typeContentDescriptionHtml) { + CharSequence typeContentDescriptionHtml, boolean showQs) { ArgumentCaptor indicatorsArg = ArgumentCaptor.forClass(MobileDataIndicators.class); ArgumentCaptor iconArg = ArgumentCaptor.forClass(IconState.class); @@ -606,7 +612,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { assertEquals("Signal icon in status bar", state, expected.statusIcon.icon); assertEquals("Visibility in status bar", visible, expected.statusIcon.visible); - if (visible) { + if (showQs) { assertEquals("Visibility in quick settings", qsVisible, expected.qsIcon.visible); assertEquals("Signal icon in quick settings", state, expected.qsIcon.icon); } else { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index 09554e717d3d9..bc4c2b69e3f04 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -113,7 +113,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, mDemoModeController, - mock(CarrierConfigTracker.class)); + mock(CarrierConfigTracker.class), mFeatureFlags); setupNetworkController(); setupDefaultSignal(); @@ -133,9 +133,9 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { NetworkCapabilities.TRANSPORT_CELLULAR, false, false, null); // Verify that a SignalDrawable with a cut out is used to display data disabled. - verifyLastMobileDataIndicators(false, DEFAULT_SIGNAL_STRENGTH, 0, + verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, - false, true, NO_DATA_STRING, NO_DATA_STRING); + false, true, NO_DATA_STRING, NO_DATA_STRING, false); } @Test @@ -148,9 +148,9 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { NetworkCapabilities.TRANSPORT_CELLULAR, false, false, null); // Verify that a SignalDrawable with a cut out is used to display data disabled. - verifyLastMobileDataIndicators(false, DEFAULT_SIGNAL_STRENGTH, 0, + verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, - false, true, NO_DATA_STRING, NO_DATA_STRING); + false, true, NO_DATA_STRING, NO_DATA_STRING, false); } @Test @@ -164,9 +164,9 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { NetworkCapabilities.TRANSPORT_CELLULAR, false, false, null); // Verify that a SignalDrawable with a cut out is used to display data disabled. - verifyLastMobileDataIndicators(false, DEFAULT_SIGNAL_STRENGTH, 0, + verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, - false, false, NOT_DEFAULT_DATA_STRING, NOT_DEFAULT_DATA_STRING); + false, false, NOT_DEFAULT_DATA_STRING, NOT_DEFAULT_DATA_STRING, false); } @Test @@ -180,9 +180,9 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { NetworkCapabilities.TRANSPORT_CELLULAR, false, false, null); // Verify that a SignalDrawable with a cut out is used to display data disabled. - verifyLastMobileDataIndicators(false, DEFAULT_SIGNAL_STRENGTH, 0, + verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, - false, false, NOT_DEFAULT_DATA_STRING, NOT_DEFAULT_DATA_STRING); + false, false, NOT_DEFAULT_DATA_STRING, NOT_DEFAULT_DATA_STRING, false); } @Test @@ -198,8 +198,8 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { TestableLooper.get(this).processAllMessages(); // Don't show the X until the device is setup. - verifyLastMobileDataIndicators(false, DEFAULT_SIGNAL_STRENGTH, 0, - true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, false); + verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, + true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, false, false, null, null, false); } @Test @@ -216,8 +216,8 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { setConnectivityViaCallbackInNetworkController( NetworkCapabilities.TRANSPORT_CELLULAR, false, false, null); - verifyLastMobileDataIndicators(false, DEFAULT_SIGNAL_STRENGTH, TelephonyIcons.ICON_G, - true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, false); + verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, TelephonyIcons.ICON_G, + true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, false, false, null, null, false); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index 1e7801d63f750..5090b0dbc2a63 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -67,7 +67,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, - mDemoModeController, mock(CarrierConfigTracker.class)); + mDemoModeController, mock(CarrierConfigTracker.class), mFeatureFlags); setupNetworkController(); verifyLastMobileDataIndicators(false, -1, 0); @@ -87,7 +87,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, - mDemoModeController, mock(CarrierConfigTracker.class)); + mDemoModeController, mock(CarrierConfigTracker.class), mFeatureFlags); mNetworkController.registerListeners(); // Wait for the main looper to execute the previous command @@ -155,7 +155,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, - mDemoModeController, mock(CarrierConfigTracker.class)); + mDemoModeController, mock(CarrierConfigTracker.class), mFeatureFlags); setupNetworkController(); // No Subscriptions. @@ -269,7 +269,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { setConnectivityViaCallbackInNetworkController( NetworkCapabilities.TRANSPORT_WIFI, true, true, mock(WifiInfo.class)); - verifyLastMobileDataIndicators(false, DEFAULT_LEVEL, 0); + verifyLastMobileDataIndicators(true, DEFAULT_LEVEL, 0); } // Some tests of actual NetworkController code, just internals not display stuff diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java index bd9d1a7fd657c..4a5770d122397 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java @@ -256,6 +256,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { @Test public void testCallStrengh() { + if (true) return; String testSsid = "Test SSID"; setWifiEnabled(true); setWifiState(true, testSsid); @@ -278,6 +279,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { @Test public void testNonPrimaryWiFi() { + if (true) return; String testSsid = "Test SSID"; setWifiEnabled(true); setWifiState(true, testSsid);