Merge "Convert FeatureFlags to interface."
This commit is contained in:
@@ -20,16 +20,23 @@ import android.content.Context
|
||||
import android.os.Handler
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.util.settings.SettingsUtilModule
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
|
||||
@Module(includes = [
|
||||
SettingsUtilModule::class
|
||||
])
|
||||
object FlagsModule {
|
||||
@JvmStatic
|
||||
@Provides
|
||||
fun provideFlagManager(context: Context, @Main handler: Handler): FlagManager {
|
||||
return FlagManager(context, handler)
|
||||
abstract class FlagsModule {
|
||||
@Binds
|
||||
abstract fun bindsFeatureFlagDebug(impl: FeatureFlagsDebug): FeatureFlags
|
||||
|
||||
@Module
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@Provides
|
||||
fun provideFlagManager(context: Context, @Main handler: Handler): FlagManager {
|
||||
return FlagManager(context, handler)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,11 @@
|
||||
|
||||
package com.android.systemui.flags
|
||||
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
|
||||
@Module
|
||||
object FlagsModule
|
||||
abstract class FlagsModule {
|
||||
@Binds
|
||||
abstract fun bindsFeatureFlagRelease(impl: FeatureFlagsRelease): FeatureFlags
|
||||
}
|
||||
@@ -38,10 +38,7 @@ import com.android.systemui.demomode.dagger.DemoModeModule;
|
||||
import com.android.systemui.doze.dagger.DozeComponent;
|
||||
import com.android.systemui.dreams.dagger.DreamModule;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FeatureFlagManager;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.flags.FlagReader;
|
||||
import com.android.systemui.flags.FlagWriter;
|
||||
import com.android.systemui.flags.FlagsModule;
|
||||
import com.android.systemui.fragments.FragmentService;
|
||||
import com.android.systemui.log.dagger.LogModule;
|
||||
@@ -161,12 +158,6 @@ public abstract class SystemUIModule {
|
||||
return state;
|
||||
}
|
||||
|
||||
@Binds
|
||||
abstract FlagReader provideFlagReader(FeatureFlagManager impl);
|
||||
|
||||
@Binds
|
||||
abstract FlagWriter provideFlagWriter(FeatureFlagManager impl);
|
||||
|
||||
@BindsOptionalOf
|
||||
abstract CommandQueue optionalCommandQueue();
|
||||
|
||||
|
||||
@@ -16,114 +16,86 @@
|
||||
|
||||
package com.android.systemui.flags;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Class to manage simple DeviceConfig-based feature flags.
|
||||
*
|
||||
* See {@link Flags} for instructions on defining new flags.
|
||||
*/
|
||||
@SysUISingleton
|
||||
public class FeatureFlags {
|
||||
private final FlagReader mFlagReader;
|
||||
|
||||
@Inject
|
||||
public FeatureFlags(FlagReader flagReader) {
|
||||
mFlagReader = flagReader;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param flag The {@link BooleanFlag} of interest.
|
||||
* @return The value of the flag.
|
||||
*/
|
||||
public boolean isEnabled(BooleanFlag flag) {
|
||||
return mFlagReader.isEnabled(flag);
|
||||
}
|
||||
|
||||
public boolean isNewNotifPipelineRenderingEnabled() {
|
||||
public interface FeatureFlags extends FlagReader {
|
||||
default boolean isNewNotifPipelineRenderingEnabled() {
|
||||
return isEnabled(Flags.NEW_NOTIFICATION_PIPELINE_RENDERING);
|
||||
}
|
||||
|
||||
/** */
|
||||
public boolean useNewLockscreenAnimations() {
|
||||
default boolean useNewLockscreenAnimations() {
|
||||
return isEnabled(Flags.LOCKSCREEN_ANIMATIONS);
|
||||
}
|
||||
|
||||
public boolean isPeopleTileEnabled() {
|
||||
default boolean isPeopleTileEnabled() {
|
||||
return isEnabled(Flags.PEOPLE_TILE);
|
||||
}
|
||||
|
||||
public boolean isMonetEnabled() {
|
||||
default boolean isMonetEnabled() {
|
||||
return isEnabled(Flags.MONET);
|
||||
}
|
||||
|
||||
public boolean isPMLiteEnabled() {
|
||||
default boolean isPMLiteEnabled() {
|
||||
return isEnabled(Flags.POWER_MENU_LITE);
|
||||
}
|
||||
|
||||
public boolean isChargingRippleEnabled() {
|
||||
default boolean isChargingRippleEnabled() {
|
||||
return isEnabled(Flags.CHARGING_RIPPLE);
|
||||
}
|
||||
|
||||
public boolean isOngoingCallStatusBarChipEnabled() {
|
||||
default boolean isOngoingCallStatusBarChipEnabled() {
|
||||
return isEnabled(Flags.ONGOING_CALL_STATUS_BAR_CHIP);
|
||||
}
|
||||
|
||||
public boolean isOngoingCallInImmersiveEnabled() {
|
||||
default boolean isOngoingCallInImmersiveEnabled() {
|
||||
return isOngoingCallStatusBarChipEnabled() && isEnabled(Flags.ONGOING_CALL_IN_IMMERSIVE);
|
||||
}
|
||||
|
||||
public boolean isOngoingCallInImmersiveChipTapEnabled() {
|
||||
default boolean isOngoingCallInImmersiveChipTapEnabled() {
|
||||
return isOngoingCallInImmersiveEnabled()
|
||||
&& isEnabled(Flags.ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP);
|
||||
}
|
||||
|
||||
public boolean isSmartspaceEnabled() {
|
||||
default boolean isSmartspaceEnabled() {
|
||||
return isEnabled(Flags.SMARTSPACE);
|
||||
}
|
||||
|
||||
public boolean isSmartspaceDedupingEnabled() {
|
||||
default boolean isSmartspaceDedupingEnabled() {
|
||||
return isSmartspaceEnabled() && isEnabled(Flags.SMARTSPACE_DEDUPING);
|
||||
}
|
||||
|
||||
public boolean isNewKeyguardSwipeAnimationEnabled() {
|
||||
default boolean isNewKeyguardSwipeAnimationEnabled() {
|
||||
return isEnabled(Flags.NEW_UNLOCK_SWIPE_ANIMATION);
|
||||
}
|
||||
|
||||
public boolean isKeyguardQsUserDetailsShortcutEnabled() {
|
||||
default boolean isKeyguardQsUserDetailsShortcutEnabled() {
|
||||
return isEnabled(Flags.QS_USER_DETAIL_SHORTCUT);
|
||||
}
|
||||
|
||||
public boolean isSmartSpaceSharedElementTransitionEnabled() {
|
||||
default boolean isSmartSpaceSharedElementTransitionEnabled() {
|
||||
return isEnabled(Flags.SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED);
|
||||
}
|
||||
|
||||
/** Whether or not to use the provider model behavior for the status bar icons */
|
||||
public boolean isCombinedStatusBarSignalIconsEnabled() {
|
||||
default boolean isCombinedStatusBarSignalIconsEnabled() {
|
||||
return isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS);
|
||||
}
|
||||
|
||||
/** System setting for provider model behavior */
|
||||
public boolean isProviderModelSettingEnabled(Context context) {
|
||||
return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the new version of the user switcher
|
||||
*/
|
||||
public boolean useNewUserSwitcher() {
|
||||
default boolean useNewUserSwitcher() {
|
||||
return isEnabled(Flags.NEW_USER_SWITCHER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the new single view QS headers
|
||||
*/
|
||||
public boolean useCombinedQSHeaders() {
|
||||
default boolean useCombinedQSHeaders() {
|
||||
return isEnabled(Flags.COMBINED_QS_HEADERS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ import javax.inject.Inject;
|
||||
* To restore a flag back to its default, leave the `--ez value <0|1>` off of the command.
|
||||
*/
|
||||
@SysUISingleton
|
||||
public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
|
||||
public class FeatureFlagsDebug implements FeatureFlags, FlagWriter, Dumpable {
|
||||
private static final String TAG = "SysUIFlags";
|
||||
|
||||
private final FlagManager mFlagManager;
|
||||
@@ -69,7 +69,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
|
||||
private final Map<Integer, Boolean> mBooleanFlagCache = new HashMap<>();
|
||||
|
||||
@Inject
|
||||
public FeatureFlagManager(
|
||||
public FeatureFlagsDebug(
|
||||
FlagManager flagManager,
|
||||
Context context,
|
||||
SecureSettings secureSettings,
|
||||
@@ -36,10 +36,10 @@ import javax.inject.Inject;
|
||||
* how to set flags.
|
||||
*/
|
||||
@SysUISingleton
|
||||
public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
|
||||
public class FeatureFlagsRelease implements FeatureFlags, FlagWriter, Dumpable {
|
||||
SparseBooleanArray mAccessedFlags = new SparseBooleanArray();
|
||||
@Inject
|
||||
public FeatureFlagManager(DumpManager dumpManager) {
|
||||
public FeatureFlagsRelease(DumpManager dumpManager) {
|
||||
dumpManager.registerDumpable("SysUIFlags", this);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import java.util.Map;
|
||||
* On public release builds, flags will always return their default value. There is no way to
|
||||
* change their value on release builds.
|
||||
*
|
||||
* See {@link FeatureFlagManager} for instructions on flipping the flags via adb.
|
||||
* See {@link FeatureFlagsDebug} for instructions on flipping the flags via adb.
|
||||
*/
|
||||
public class Flags {
|
||||
public static final BooleanFlag TEAMFOOD = new BooleanFlag(1, false);
|
||||
|
||||
@@ -53,6 +53,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.connectivity.StatusBarFlags;
|
||||
import com.android.systemui.statusbar.phone.AutoTileManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
@@ -110,6 +111,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
private SecureSettings mSecureSettings;
|
||||
|
||||
private final TileServiceRequestController mTileServiceRequestController;
|
||||
private final StatusBarFlags mStatusBarFlags;
|
||||
|
||||
@Inject
|
||||
public QSTileHost(Context context,
|
||||
@@ -129,7 +131,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
SecureSettings secureSettings,
|
||||
CustomTileStatePersister customTileStatePersister,
|
||||
TileServiceRequestController.Builder tileServiceRequestControllerBuilder,
|
||||
FeatureFlags featureFlags
|
||||
FeatureFlags featureFlags,
|
||||
StatusBarFlags statusBarFlags
|
||||
) {
|
||||
mIconController = iconController;
|
||||
mContext = context;
|
||||
@@ -141,6 +144,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
mUiEventLogger = uiEventLogger;
|
||||
mBroadcastDispatcher = broadcastDispatcher;
|
||||
mTileServiceRequestController = tileServiceRequestControllerBuilder.create(this);
|
||||
mStatusBarFlags = statusBarFlags;
|
||||
|
||||
mInstanceIdSequence = new InstanceIdSequence(MAX_QS_INSTANCE_ID);
|
||||
mServices = new TileServices(this, bgLooper, mBroadcastDispatcher, userTracker);
|
||||
@@ -276,7 +280,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
if (newValue == null && UserManager.isDeviceInDemoMode(mContext)) {
|
||||
newValue = mContext.getResources().getString(R.string.quick_settings_tiles_retail_mode);
|
||||
}
|
||||
final List<String> tileSpecs = loadTileSpecs(mContext, newValue, mFeatureFlags);
|
||||
final List<String> tileSpecs = loadTileSpecs(mContext, newValue, mStatusBarFlags);
|
||||
int currentUser = mUserTracker.getUserId();
|
||||
if (currentUser != mCurrentUser) {
|
||||
mUserContext = mUserTracker.getUserContext();
|
||||
@@ -345,7 +349,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
if (newTiles.isEmpty() && !tileSpecs.isEmpty()) {
|
||||
// If we didn't manage to create any tiles, set it to empty (default)
|
||||
Log.d(TAG, "No valid tiles on tuning changed. Setting to default.");
|
||||
changeTiles(currentSpecs, loadTileSpecs(mContext, "", mFeatureFlags));
|
||||
changeTiles(currentSpecs, loadTileSpecs(mContext, "", mStatusBarFlags));
|
||||
} else {
|
||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||
mCallbacks.get(i).onTilesChanged();
|
||||
@@ -413,7 +417,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
|
||||
private void changeTileSpecs(Predicate<List<String>> changeFunction) {
|
||||
final String setting = mSecureSettings.getStringForUser(TILES_SETTING, mCurrentUser);
|
||||
final List<String> tileSpecs = loadTileSpecs(mContext, setting, mFeatureFlags);
|
||||
final List<String> tileSpecs = loadTileSpecs(mContext, setting, mStatusBarFlags);
|
||||
if (changeFunction.test(tileSpecs)) {
|
||||
saveTilesToSettings(tileSpecs);
|
||||
}
|
||||
@@ -503,7 +507,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
}
|
||||
|
||||
protected static List<String> loadTileSpecs(
|
||||
Context context, String tileList, FeatureFlags featureFlags) {
|
||||
Context context, String tileList, StatusBarFlags statusBarFlags) {
|
||||
final Resources res = context.getResources();
|
||||
|
||||
if (TextUtils.isEmpty(tileList)) {
|
||||
@@ -536,7 +540,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
}
|
||||
}
|
||||
}
|
||||
if (featureFlags.isProviderModelSettingEnabled(context)) {
|
||||
if (statusBarFlags.isProviderModelSettingEnabled()) {
|
||||
if (!tiles.contains("internet")) {
|
||||
if (tiles.contains("wifi")) {
|
||||
// Replace the WiFi with Internet, and remove the Cell
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.android.systemui.qs.dagger.QSScope;
|
||||
import com.android.systemui.qs.external.CustomTile;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl.DrawableIcon;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.statusbar.connectivity.StatusBarFlags;
|
||||
import com.android.systemui.util.leak.GarbageMonitor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -64,6 +65,7 @@ public class TileQueryHelper {
|
||||
private final Context mContext;
|
||||
private final UserTracker mUserTracker;
|
||||
private final FeatureFlags mFeatureFlags;
|
||||
private final StatusBarFlags mStatusBarFlags;
|
||||
private TileStateListener mListener;
|
||||
|
||||
private boolean mFinished;
|
||||
@@ -74,13 +76,15 @@ public class TileQueryHelper {
|
||||
UserTracker userTracker,
|
||||
@Main Executor mainExecutor,
|
||||
@Background Executor bgExecutor,
|
||||
FeatureFlags featureFlags
|
||||
FeatureFlags featureFlags,
|
||||
StatusBarFlags statusBarFlags
|
||||
) {
|
||||
mContext = context;
|
||||
mMainExecutor = mainExecutor;
|
||||
mBgExecutor = bgExecutor;
|
||||
mUserTracker = userTracker;
|
||||
mFeatureFlags = featureFlags;
|
||||
mStatusBarFlags = statusBarFlags;
|
||||
}
|
||||
|
||||
public void setListener(TileStateListener listener) {
|
||||
@@ -121,7 +125,7 @@ public class TileQueryHelper {
|
||||
}
|
||||
|
||||
final ArrayList<QSTile> tilesToAdd = new ArrayList<>();
|
||||
if (mFeatureFlags.isProviderModelSettingEnabled(mContext)) {
|
||||
if (mStatusBarFlags.isProviderModelSettingEnabled()) {
|
||||
possibleTiles.remove("cell");
|
||||
possibleTiles.remove("wifi");
|
||||
}
|
||||
|
||||
@@ -192,7 +192,8 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
||||
SubscriptionDefaults defaults,
|
||||
Looper receiverLooper,
|
||||
CarrierConfigTracker carrierConfigTracker,
|
||||
FeatureFlags featureFlags
|
||||
FeatureFlags featureFlags,
|
||||
StatusBarFlags statusBarFlags
|
||||
) {
|
||||
super("MobileSignalController(" + info.getSubscriptionId() + ")", context,
|
||||
NetworkCapabilities.TRANSPORT_CELLULAR, callbackHandler,
|
||||
@@ -227,7 +228,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile
|
||||
mMobileStatusTracker = new MobileStatusTracker(mPhone, receiverLooper,
|
||||
info, mDefaults, mMobileCallback);
|
||||
mProviderModelBehavior = featureFlags.isCombinedStatusBarSignalIconsEnabled();
|
||||
mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(mContext);
|
||||
mProviderModelSetting = statusBarFlags.isProviderModelSettingEnabled();
|
||||
}
|
||||
|
||||
void setConfiguration(Config config) {
|
||||
|
||||
@@ -135,6 +135,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
private Config mConfig;
|
||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||
private final FeatureFlags mFeatureFlags;
|
||||
private final StatusBarFlags mStatusBarFlags;
|
||||
private final DumpManager mDumpManager;
|
||||
|
||||
private TelephonyCallback.ActiveDataSubscriptionIdListener mPhoneStateListener;
|
||||
@@ -210,6 +211,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mReceiverHandler.post(() -> handleConfigurationChanged());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Construct this controller object and register for updates.
|
||||
*/
|
||||
@@ -233,6 +235,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
@Main Handler handler,
|
||||
InternetDialogFactory internetDialogFactory,
|
||||
FeatureFlags featureFlags,
|
||||
StatusBarFlags statusBarFlags,
|
||||
DumpManager dumpManager) {
|
||||
this(context, connectivityManager,
|
||||
telephonyManager,
|
||||
@@ -252,6 +255,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
demoModeController,
|
||||
carrierConfigTracker,
|
||||
featureFlags,
|
||||
statusBarFlags,
|
||||
dumpManager);
|
||||
mReceiverHandler.post(mRegisterListeners);
|
||||
mMainHandler = handler;
|
||||
@@ -275,6 +279,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
DemoModeController demoModeController,
|
||||
CarrierConfigTracker carrierConfigTracker,
|
||||
FeatureFlags featureFlags,
|
||||
StatusBarFlags statusBarFlags,
|
||||
DumpManager dumpManager
|
||||
) {
|
||||
mContext = context;
|
||||
@@ -294,6 +299,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mDemoModeController = demoModeController;
|
||||
mCarrierConfigTracker = carrierConfigTracker;
|
||||
mFeatureFlags = featureFlags;
|
||||
mStatusBarFlags = statusBarFlags;
|
||||
mDumpManager = dumpManager;
|
||||
|
||||
// telephony
|
||||
@@ -316,7 +322,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
});
|
||||
mWifiSignalController = new WifiSignalController(mContext, mHasMobileDataFeature,
|
||||
mCallbackHandler, this, mWifiManager, mConnectivityManager, networkScoreManager,
|
||||
mFeatureFlags);
|
||||
mStatusBarFlags);
|
||||
|
||||
mEthernetSignalController = new EthernetSignalController(mContext, mCallbackHandler, this);
|
||||
|
||||
@@ -442,7 +448,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
|
||||
mDemoModeController.addCallback(this);
|
||||
mProviderModelBehavior = mFeatureFlags.isCombinedStatusBarSignalIconsEnabled();
|
||||
mProviderModelSetting = mFeatureFlags.isProviderModelSettingEnabled(mContext);
|
||||
mProviderModelSetting = mStatusBarFlags.isProviderModelSettingEnabled();
|
||||
|
||||
mDumpManager.registerDumpable(TAG, this);
|
||||
}
|
||||
@@ -958,7 +964,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mHasMobileDataFeature, mPhone.createForSubscriptionId(subId),
|
||||
mCallbackHandler, this, subscriptions.get(i),
|
||||
mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker,
|
||||
mFeatureFlags);
|
||||
mFeatureFlags, mStatusBarFlags);
|
||||
controller.setUserSetupComplete(mUserSetup);
|
||||
mMobileSignalControllers.put(subId, controller);
|
||||
if (subscriptions.get(i).getSimSlotIndex() == 0) {
|
||||
@@ -1436,7 +1442,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mConfig, mHasMobileDataFeature,
|
||||
mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this,
|
||||
info, mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker,
|
||||
mFeatureFlags);
|
||||
mFeatureFlags, mStatusBarFlags);
|
||||
mMobileSignalControllers.put(id, controller);
|
||||
controller.getState().userSetup = true;
|
||||
return info;
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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.connectivity;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Class for providing StatusBar specific logic around {@link FeatureFlags}.
|
||||
*/
|
||||
@SysUISingleton
|
||||
public class StatusBarFlags {
|
||||
private final Context mContext;
|
||||
|
||||
@Inject
|
||||
public StatusBarFlags(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/** System setting for provider model behavior */
|
||||
public boolean isProviderModelSettingEnabled() {
|
||||
return FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,6 @@ 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.flags.FeatureFlags;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -55,7 +54,7 @@ public class WifiSignalController extends SignalController<WifiState, IconGroup>
|
||||
WifiManager wifiManager,
|
||||
ConnectivityManager connectivityManager,
|
||||
NetworkScoreManager networkScoreManager,
|
||||
FeatureFlags featureFlags) {
|
||||
StatusBarFlags statusBarFlags) {
|
||||
super("WifiSignalController", context, NetworkCapabilities.TRANSPORT_WIFI,
|
||||
callbackHandler, networkController);
|
||||
mWifiManager = wifiManager;
|
||||
@@ -68,7 +67,7 @@ public class WifiSignalController extends SignalController<WifiState, IconGroup>
|
||||
new WifiTrafficStateCallback());
|
||||
}
|
||||
mCurrentState.iconGroup = mLastState.iconGroup = mUnmergedWifiIconGroup;
|
||||
mProviderModelSetting = featureFlags.isProviderModelSettingEnabled(mContext);
|
||||
mProviderModelSetting = statusBarFlags.isProviderModelSettingEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,7 +25,6 @@ import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@@ -33,7 +32,6 @@ import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.util.settings.SecureSettings;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -50,8 +48,8 @@ import java.io.StringWriter;
|
||||
* overriding, and should never return any value other than the one provided as the default.
|
||||
*/
|
||||
@SmallTest
|
||||
public class FeatureFlagManagerTest extends SysuiTestCase {
|
||||
FeatureFlagManager mFeatureFlagManager;
|
||||
public class FeatureFlagsReleaseTest extends SysuiTestCase {
|
||||
FeatureFlagsRelease mFeatureFlagsRelease;
|
||||
|
||||
@Mock private Context mContext;
|
||||
@Mock private DumpManager mDumpManager;
|
||||
@@ -60,7 +58,7 @@ public class FeatureFlagManagerTest extends SysuiTestCase {
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mFeatureFlagManager = new FeatureFlagManager(mDumpManager);
|
||||
mFeatureFlagsRelease = new FeatureFlagsRelease(mDumpManager);
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -72,22 +70,22 @@ public class FeatureFlagManagerTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testIsEnabled() {
|
||||
mFeatureFlagManager.setEnabled(1, true);
|
||||
mFeatureFlagsRelease.setEnabled(1, true);
|
||||
// Again, nothing changes.
|
||||
assertThat(mFeatureFlagManager.isEnabled(1, false)).isFalse();
|
||||
assertThat(mFeatureFlagsRelease.isEnabled(1, false)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDump() {
|
||||
// Even if a flag is set before
|
||||
mFeatureFlagManager.setEnabled(1, true);
|
||||
mFeatureFlagsRelease.setEnabled(1, true);
|
||||
|
||||
// WHEN the flags have been accessed
|
||||
assertFalse(mFeatureFlagManager.isEnabled(1, false));
|
||||
assertTrue(mFeatureFlagManager.isEnabled(2, true));
|
||||
assertFalse(mFeatureFlagsRelease.isEnabled(1, false));
|
||||
assertTrue(mFeatureFlagsRelease.isEnabled(2, true));
|
||||
|
||||
// Even if a flag is set after
|
||||
mFeatureFlagManager.setEnabled(2, false);
|
||||
mFeatureFlagsRelease.setEnabled(2, false);
|
||||
|
||||
// THEN the dump contains the flags and the default values
|
||||
String dump = dumpToString();
|
||||
@@ -98,7 +96,7 @@ public class FeatureFlagManagerTest extends SysuiTestCase {
|
||||
private String dumpToString() {
|
||||
StringWriter sw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
mFeatureFlagManager.dump(mock(FileDescriptor.class), pw, new String[0]);
|
||||
mFeatureFlagsRelease.dump(mock(FileDescriptor.class), pw, new String[0]);
|
||||
pw.flush();
|
||||
String dump = sw.toString();
|
||||
return dump;
|
||||
@@ -54,6 +54,7 @@ import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.connectivity.StatusBarFlags;
|
||||
import com.android.systemui.statusbar.phone.AutoTileManager;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
@@ -101,6 +102,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
private TileServiceRequestController mTileServiceRequestController;
|
||||
@Mock
|
||||
private FeatureFlags mFeatureFlags;
|
||||
@Mock
|
||||
private StatusBarFlags mStatusBarFlags;
|
||||
|
||||
public QSFragmentTest() {
|
||||
super(QSFragment.class);
|
||||
@@ -146,7 +149,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)),
|
||||
mock(QSLogger.class), mock(UiEventLogger.class), mock(UserTracker.class),
|
||||
mock(SecureSettings.class), mock(CustomTileStatePersister.class),
|
||||
mTileServiceRequestControllerBuilder, mFeatureFlags);
|
||||
mTileServiceRequestControllerBuilder, mFeatureFlags, mStatusBarFlags);
|
||||
qs.setHost(host);
|
||||
|
||||
qs.setListening(true);
|
||||
|
||||
@@ -63,6 +63,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.connectivity.StatusBarFlags;
|
||||
import com.android.systemui.statusbar.phone.AutoTileManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
@@ -129,6 +130,8 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
private TileServiceRequestController mTileServiceRequestController;
|
||||
@Mock
|
||||
private FeatureFlags mFeatureFlags;
|
||||
@Mock
|
||||
private StatusBarFlags mStatusBarFlags;
|
||||
|
||||
private Handler mHandler;
|
||||
private TestableLooper mLooper;
|
||||
@@ -149,9 +152,9 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
mLooper.getLooper(), mPluginManager, mTunerService, mAutoTiles, mDumpManager,
|
||||
mBroadcastDispatcher, mStatusBar, mQSLogger, mUiEventLogger, mUserTracker,
|
||||
mSecureSettings, mCustomTileStatePersister, mTileServiceRequestControllerBuilder,
|
||||
mFeatureFlags);
|
||||
mFeatureFlags, mStatusBarFlags);
|
||||
setUpTileFactory();
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(false);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(false);
|
||||
}
|
||||
|
||||
private void setUpTileFactory() {
|
||||
@@ -179,13 +182,13 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testLoadTileSpecs_emptySetting() {
|
||||
List<String> tiles = QSTileHost.loadTileSpecs(mContext, "", mFeatureFlags);
|
||||
List<String> tiles = QSTileHost.loadTileSpecs(mContext, "", mStatusBarFlags);
|
||||
assertFalse(tiles.isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoadTileSpecs_nullSetting() {
|
||||
List<String> tiles = QSTileHost.loadTileSpecs(mContext, null, mFeatureFlags);
|
||||
List<String> tiles = QSTileHost.loadTileSpecs(mContext, null, mStatusBarFlags);
|
||||
assertFalse(tiles.isEmpty());
|
||||
}
|
||||
|
||||
@@ -200,7 +203,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testRemoveWifiAndCellularWithoutInternet() {
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(true);
|
||||
mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "wifi, spec1, cell, spec2");
|
||||
|
||||
assertEquals("internet", mQSTileHost.mTileSpecs.get(0));
|
||||
@@ -210,7 +213,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testRemoveWifiAndCellularWithInternet() {
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(true);
|
||||
mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "wifi, spec1, cell, spec2, internet");
|
||||
|
||||
assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
|
||||
@@ -220,7 +223,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testRemoveWifiWithoutInternet() {
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(true);
|
||||
mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1, wifi, spec2");
|
||||
|
||||
assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
|
||||
@@ -230,7 +233,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testRemoveCellWithInternet() {
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(true);
|
||||
mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1, spec2, cell, internet");
|
||||
|
||||
assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
|
||||
@@ -240,7 +243,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testNoWifiNoCellularNoInternet() {
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(true);
|
||||
mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1,spec2");
|
||||
|
||||
assertEquals("spec1", mQSTileHost.mTileSpecs.get(0));
|
||||
@@ -380,7 +383,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testLoadTileSpec_repeated() {
|
||||
List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2", mFeatureFlags);
|
||||
List<String> specs = QSTileHost.loadTileSpecs(mContext, "spec1,spec1,spec2", mStatusBarFlags);
|
||||
|
||||
assertEquals(2, specs.size());
|
||||
assertEquals("spec1", specs.get(0));
|
||||
@@ -391,7 +394,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
public void testLoadTileSpec_repeatedInDefault() {
|
||||
mContext.getOrCreateTestableResources()
|
||||
.addOverride(R.string.quick_settings_tiles_default, "spec1,spec1");
|
||||
List<String> specs = QSTileHost.loadTileSpecs(mContext, "default", mFeatureFlags);
|
||||
List<String> specs = QSTileHost.loadTileSpecs(mContext, "default", mStatusBarFlags);
|
||||
|
||||
// Remove spurious tiles, like dbg:mem
|
||||
specs.removeIf(spec -> !"spec1".equals(spec));
|
||||
@@ -402,7 +405,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
public void testLoadTileSpec_repeatedDefaultAndSetting() {
|
||||
mContext.getOrCreateTestableResources()
|
||||
.addOverride(R.string.quick_settings_tiles_default, "spec1");
|
||||
List<String> specs = QSTileHost.loadTileSpecs(mContext, "default,spec1", mFeatureFlags);
|
||||
List<String> specs = QSTileHost.loadTileSpecs(mContext, "default,spec1", mStatusBarFlags);
|
||||
|
||||
// Remove spurious tiles, like dbg:mem
|
||||
specs.removeIf(spec -> !"spec1".equals(spec));
|
||||
@@ -442,11 +445,12 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
UiEventLogger uiEventLogger, UserTracker userTracker,
|
||||
SecureSettings secureSettings, CustomTileStatePersister customTileStatePersister,
|
||||
TileServiceRequestController.Builder tileServiceRequestControllerBuilder,
|
||||
FeatureFlags featureFlags) {
|
||||
FeatureFlags featureFlags, StatusBarFlags statusBarFlags) {
|
||||
super(context, iconController, defaultFactory, mainHandler, bgLooper, pluginManager,
|
||||
tunerService, autoTiles, dumpManager, broadcastDispatcher,
|
||||
Optional.of(statusBar), qsLogger, uiEventLogger, userTracker, secureSettings,
|
||||
customTileStatePersister, tileServiceRequestControllerBuilder, featureFlags);
|
||||
customTileStatePersister, tileServiceRequestControllerBuilder, featureFlags,
|
||||
statusBarFlags);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -59,6 +59,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.connectivity.StatusBarFlags;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
@@ -111,6 +112,8 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
private UserTracker mUserTracker;
|
||||
@Mock
|
||||
private FeatureFlags mFeatureFlags;
|
||||
@Mock
|
||||
private StatusBarFlags mStatusBarFlags;
|
||||
@Captor
|
||||
private ArgumentCaptor<List<TileQueryHelper.TileInfo>> mCaptor;
|
||||
|
||||
@@ -136,12 +139,12 @@ public class TileQueryHelperTest extends SysuiTestCase {
|
||||
}
|
||||
}
|
||||
).when(mQSTileHost).createTile(anyString());
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(false);
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(false);
|
||||
FakeSystemClock clock = new FakeSystemClock();
|
||||
mMainExecutor = new FakeExecutor(clock);
|
||||
mBgExecutor = new FakeExecutor(clock);
|
||||
mTileQueryHelper = new TileQueryHelper(
|
||||
mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags);
|
||||
mContext, mUserTracker, mMainExecutor, mBgExecutor, mFeatureFlags, mStatusBarFlags);
|
||||
mTileQueryHelper.setListener(mListener);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.statusbar.connectivity.StatusBarFlags;
|
||||
import com.android.systemui.statusbar.phone.AutoTileManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
@@ -107,6 +108,8 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
private TileServiceRequestController mTileServiceRequestController;
|
||||
@Mock
|
||||
private FeatureFlags mFeatureFlags;
|
||||
@Mock
|
||||
private StatusBarFlags mStatusBarFlags;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -134,7 +137,8 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
mSecureSettings,
|
||||
mock(CustomTileStatePersister.class),
|
||||
mTileServiceRequestControllerBuilder,
|
||||
mFeatureFlags);
|
||||
mFeatureFlags,
|
||||
mStatusBarFlags);
|
||||
mTileService = new TestTileServices(host, Looper.getMainLooper(), mBroadcastDispatcher,
|
||||
mUserTracker);
|
||||
}
|
||||
|
||||
@@ -127,6 +127,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
protected CarrierConfigTracker mCarrierConfigTracker;
|
||||
protected FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
protected FeatureFlags mFeatureFlags;
|
||||
protected StatusBarFlags mStatusBarFlags;
|
||||
|
||||
protected int mSubId;
|
||||
|
||||
@@ -156,12 +157,10 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
mMockingSession = ExtendedMockito.mockitoSession().strictness(Strictness.LENIENT)
|
||||
.mockStatic(FeatureFlags.class).startMocking();
|
||||
mFeatureFlags = mock(FeatureFlags.class);
|
||||
mStatusBarFlags = mock(StatusBarFlags.class);
|
||||
when(mFeatureFlags.isCombinedStatusBarSignalIconsEnabled()).thenReturn(false);
|
||||
when(mFeatureFlags.isProviderModelSettingEnabled(mContext)).thenReturn(true);
|
||||
|
||||
when(mStatusBarFlags.isProviderModelSettingEnabled()).thenReturn(true);
|
||||
|
||||
mInstrumentation = InstrumentationRegistry.getInstrumentation();
|
||||
Settings.Global.putInt(mContext.getContentResolver(), Global.AIRPLANE_MODE_ON, 0);
|
||||
@@ -239,6 +238,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
mDemoModeController,
|
||||
mCarrierConfigTracker,
|
||||
mFeatureFlags,
|
||||
mStatusBarFlags,
|
||||
mock(DumpManager.class)
|
||||
);
|
||||
setupNetworkController();
|
||||
@@ -308,7 +308,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(DataUsageController.class), mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class), mMockBd, mDemoModeController,
|
||||
mCarrierConfigTracker, mFeatureFlags,
|
||||
mCarrierConfigTracker, mFeatureFlags, mStatusBarFlags,
|
||||
mock(DumpManager.class));
|
||||
|
||||
setupNetworkController();
|
||||
|
||||
@@ -130,7 +130,8 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(DataUsageController.class), mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class), mMockBd, mDemoModeController,
|
||||
mock(CarrierConfigTracker.class), mFeatureFlags, mock(DumpManager.class));
|
||||
mock(CarrierConfigTracker.class), mFeatureFlags, mStatusBarFlags,
|
||||
mock(DumpManager.class));
|
||||
setupNetworkController();
|
||||
|
||||
setupDefaultSignal();
|
||||
|
||||
@@ -70,7 +70,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
|
||||
mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd,
|
||||
mDemoModeController, mock(CarrierConfigTracker.class), mFeatureFlags,
|
||||
mock(DumpManager.class));
|
||||
mStatusBarFlags, mock(DumpManager.class));
|
||||
setupNetworkController();
|
||||
|
||||
verifyLastMobileDataIndicators(false, -1, 0);
|
||||
@@ -91,7 +91,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
|
||||
mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd,
|
||||
mDemoModeController, mock(CarrierConfigTracker.class), mFeatureFlags,
|
||||
mock(DumpManager.class));
|
||||
mStatusBarFlags, mock(DumpManager.class));
|
||||
mNetworkController.registerListeners();
|
||||
|
||||
// Wait for the main looper to execute the previous command
|
||||
@@ -160,7 +160,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
|
||||
mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd,
|
||||
mDemoModeController, mock(CarrierConfigTracker.class), mFeatureFlags,
|
||||
mock(DumpManager.class));
|
||||
mStatusBarFlags, mock(DumpManager.class));
|
||||
setupNetworkController();
|
||||
|
||||
// No Subscriptions.
|
||||
|
||||
Reference in New Issue
Block a user