From fc8e8991c939d19ed386dcac51a517a4f347ded7 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 29 Aug 2024 15:55:44 +0800 Subject: [PATCH] Clean up InternetPreferenceController And also the flag. Bug: 339884322 Flag: com.android.settings.flags.internet_preference_controller_v2 Test: manual - Network & internet Change-Id: Icb3427f6624db0442c05f5e149dbe522d1497e83 --- ...tings_experience_flag_declarations.aconfig | 10 - res/xml/network_provider_internet.xml | 3 +- .../network/InternetPreferenceController.java | 316 ------------------ .../network/NetworkDashboardFragment.java | 9 - .../settings/wifi/WifiSummaryUpdater.java | 110 ------ .../settings/wifi/WifiSummaryUpdaterTest.java | 152 --------- .../InternetPreferenceControllerTest.java | 297 ---------------- 7 files changed, 2 insertions(+), 895 deletions(-) delete mode 100644 src/com/android/settings/network/InternetPreferenceController.java delete mode 100644 src/com/android/settings/wifi/WifiSummaryUpdater.java delete mode 100644 tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java delete mode 100644 tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java diff --git a/aconfig/settings_experience_flag_declarations.aconfig b/aconfig/settings_experience_flag_declarations.aconfig index e79b51560ed..d5caccfbb5c 100644 --- a/aconfig/settings_experience_flag_declarations.aconfig +++ b/aconfig/settings_experience_flag_declarations.aconfig @@ -17,13 +17,3 @@ flag { purpose: PURPOSE_BUGFIX } } - -flag { - name: "internet_preference_controller_v2" - namespace: "settings_experience" - description: "New InternetPreferenceControllerV2." - bug: "339884322" - metadata { - purpose: PURPOSE_BUGFIX - } -} diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml index 2a08aae892d..e4ebe788b0c 100644 --- a/res/xml/network_provider_internet.xml +++ b/res/xml/network_provider_internet.xml @@ -29,7 +29,8 @@ android:order="-30" settings:allowDividerAbove="true" settings:keywords="@string/keywords_internet" - settings:useAdminDisabledSummary="true" /> + settings:useAdminDisabledSummary="true" + settings:controller="com.android.settings.network.InternetPreferenceControllerV2" /> mSubInfoEntityList = new ArrayList<>(); - private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; - private DefaultSubscriptionReceiver mDataSubscriptionChangedReceiver; - private boolean mIsHotspotNetworkEnabled = SharedConnectivityRepository.isDeviceConfigEnabled(); - @VisibleForTesting - WifiPickerTrackerHelper mWifiPickerTrackerHelper; - - @VisibleForTesting - static Map sIconMap = new HashMap<>(); - static { - sIconMap.put(INTERNET_OFF, R.drawable.ic_no_internet_unavailable); - sIconMap.put(INTERNET_NETWORKS_AVAILABLE, R.drawable.ic_no_internet_available); - sIconMap.put(INTERNET_WIFI, R.drawable.ic_wifi_signal_4); - sIconMap.put(INTERNET_CELLULAR, R.drawable.ic_network_cell); - sIconMap.put(INTERNET_ETHERNET, R.drawable.ic_settings_ethernet); - } - - private static Map sSummaryMap = new HashMap<>(); - static { - sSummaryMap.put(INTERNET_OFF, R.string.condition_airplane_title); - sSummaryMap.put(INTERNET_NETWORKS_AVAILABLE, R.string.networks_available); - sSummaryMap.put(INTERNET_WIFI, 0); - sSummaryMap.put(INTERNET_CELLULAR, 0); - sSummaryMap.put(INTERNET_ETHERNET, R.string.to_switch_networks_disconnect_ethernet); - } - - public InternetPreferenceController(Context context, Lifecycle lifecycle, - LifecycleOwner lifecycleOwner) { - super(context); - if (lifecycle == null) { - throw new IllegalArgumentException("Lifecycle must be set"); - } - mSummaryHelper = new WifiSummaryUpdater(mContext, this); - mInternetUpdater = new InternetUpdater(context, lifecycle, this); - mInternetType = mInternetUpdater.getInternetType(); - mLifecycleOwner = lifecycleOwner; - mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); - mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); - if (mIsHotspotNetworkEnabled) { - mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(lifecycle, context, this); - } - lifecycle.addObserver(this); - } - - @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - mPreference = screen.findPreference(KEY); - } - - private void drawIcon(int iconResId) { - Drawable drawable = mContext.getDrawable(iconResId); - if (drawable != null) { - drawable.setTintList(Utils.getColorAttr(mContext, android.R.attr.colorControlNormal)); - mPreference.setIcon(drawable); - } - } - - @Override - public void updateState(Preference preference) { - if (mPreference == null) { - return; - } - - if (mInternetType == INTERNET_WIFI && updateHotspotNetwork()) { - return; - } - - final @IdRes int icon = sIconMap.get(mInternetType); - if (icon != 0) { - drawIcon(icon); - } - - if (mInternetType == INTERNET_WIFI) { - mPreference.setSummary(mSummaryHelper.getSummary()); - return; - } - - if (mInternetType == INTERNET_CELLULAR) { - updateCellularSummary(); - return; - } - - final @IdRes int summary = sSummaryMap.get(mInternetType); - if (summary != 0) { - mPreference.setSummary(summary); - } - } - - @VisibleForTesting - boolean updateHotspotNetwork() { - if (mWifiPickerTrackerHelper == null) { - return false; - } - WifiEntry entry = mWifiPickerTrackerHelper.getWifiPickerTracker().getConnectedWifiEntry(); - if (!(entry instanceof HotspotNetworkEntry)) { - return false; - } - drawIcon(getHotspotIconResource(((HotspotNetworkEntry) entry).getDeviceType())); - mPreference.setSummary(((HotspotNetworkEntry) entry).getAlternateSummary()); - return true; - } - - @Override - public boolean isAvailable() { - return mContext.getResources().getBoolean(R.bool.config_show_internet_settings); - } - - @Override - public String getPreferenceKey() { - return KEY; - } - - /** @OnLifecycleEvent(ON_RESUME) */ - @OnLifecycleEvent(ON_RESUME) - public void onResume() { - mMobileNetworkRepository.addRegister(mLifecycleOwner, this, - SubscriptionManager.INVALID_SUBSCRIPTION_ID); - mMobileNetworkRepository.updateEntity(); - mSummaryHelper.register(true); - mDataSubscriptionChangedReceiver.registerReceiver(); - mDefaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId(); - } - - /** @OnLifecycleEvent(ON_PAUSE) */ - @OnLifecycleEvent(ON_PAUSE) - public void onPause() { - mMobileNetworkRepository.removeRegister(this); - mSummaryHelper.register(false); - mDataSubscriptionChangedReceiver.unRegisterReceiver(); - } - - /** - * Called when internet type is changed. - * - * @param internetType the internet type - */ - @Override - public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { - final boolean needUpdate = (internetType != mInternetType); - mInternetType = internetType; - if (needUpdate) { - ThreadUtils.postOnMainThread(() -> { - updateState(mPreference); - }); - } - } - - /** - * Called when airplane mode state is changed. - */ - @Override - public void onAirplaneModeChanged(boolean isAirplaneModeOn) { - ThreadUtils.postOnMainThread(() -> { - updateState(mPreference); - }); - } - - @Override - public void onSummaryChanged(String summary) { - if (mInternetType == INTERNET_WIFI) { - updateState(mPreference); - } - } - - @VisibleForTesting - void updateCellularSummary() { - CharSequence summary = null; - SubscriptionInfoEntity activeSubInfo = null; - SubscriptionInfoEntity defaultSubInfo = null; - - for (SubscriptionInfoEntity subInfo : getSubscriptionInfoList()) { - if (subInfo.isActiveDataSubscriptionId) { - activeSubInfo = subInfo; - } - if (subInfo.getSubId() == getDefaultDataSubscriptionId()) { - defaultSubInfo = subInfo; - } - } - if (activeSubInfo == null || defaultSubInfo == null) { - return; - } - activeSubInfo = activeSubInfo.isSubscriptionVisible ? activeSubInfo : defaultSubInfo; - - if (activeSubInfo.equals(defaultSubInfo)) { - // DDS is active - summary = activeSubInfo.uniqueName; - } else { - summary = mContext.getString( - R.string.mobile_data_temp_using, activeSubInfo.uniqueName); - } - - mPreference.setSummary(summary); - } - - @VisibleForTesting - protected List getSubscriptionInfoList() { - return mSubInfoEntityList; - } - - @VisibleForTesting - protected int getDefaultDataSubscriptionId() { - return mDefaultDataSubId; - } - - @Override - public void onAvailableSubInfoChanged(List subInfoEntityList) { - mSubInfoEntityList = subInfoEntityList; - updateState(mPreference); - } - - @Override - public void onDefaultDataChanged(int defaultDataSubId) { - mDefaultDataSubId = defaultDataSubId; - updateState(mPreference); - } - - @Override - public void onWifiEntriesChanged() { - if (mInternetType == INTERNET_WIFI) { - updateState(mPreference); - } - } - - @Override - public void onWifiStateChanged() { - // Do nothing - } - - @Override - public void onNumSavedNetworksChanged() { - // Do nothing - } - - @Override - public void onNumSavedSubscriptionsChanged() { - // Do nothing - } -} diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java index 3bc535845c1..aff91308e94 100644 --- a/src/com/android/settings/network/NetworkDashboardFragment.java +++ b/src/com/android/settings/network/NetworkDashboardFragment.java @@ -25,7 +25,6 @@ import com.android.settings.R; import com.android.settings.SettingsDumpService; import com.android.settings.core.OnActivityResultListener; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.flags.Flags; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -90,14 +89,6 @@ public class NetworkDashboardFragment extends DashboardFragment implements controllers.add(new MobileNetworkSummaryController(context, lifecycle, lifecycleOwner)); controllers.add(vpnPreferenceController); - - if (Flags.internetPreferenceControllerV2()) { - controllers.add( - new InternetPreferenceControllerV2(context, InternetPreferenceController.KEY)); - } else { - controllers.add(new InternetPreferenceController(context, lifecycle, lifecycleOwner)); - } - controllers.add(privateDnsPreferenceController); // Start SettingsDumpService after the MobileNetworkRepository is created. diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java deleted file mode 100644 index 645d2eaf57a..00000000000 --- a/src/com/android/settings/wifi/WifiSummaryUpdater.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2017 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.settings.wifi; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.net.ConnectivityManager; -import android.net.NetworkScoreManager; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; -import android.text.TextUtils; - -import androidx.annotation.VisibleForTesting; - -import com.android.settings.R; -import com.android.settings.widget.SummaryUpdater; -import com.android.settingslib.wifi.WifiStatusTracker; - -/** - * Helper class that listeners to wifi callback and notify client when there is update in - * wifi summary info. - */ -public class WifiSummaryUpdater extends SummaryUpdater { - - private final WifiStatusTracker mWifiTracker; - private final BroadcastReceiver mReceiver; - - private static final IntentFilter INTENT_FILTER; - static { - INTENT_FILTER = new IntentFilter(); - INTENT_FILTER.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); - INTENT_FILTER.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); - INTENT_FILTER.addAction(WifiManager.RSSI_CHANGED_ACTION); - } - - public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener) { - this(context, listener, null); - } - - @VisibleForTesting - public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener, - WifiStatusTracker wifiTracker) { - super(context, listener); - mWifiTracker = wifiTracker != null ? wifiTracker : - new WifiStatusTracker(context, context.getSystemService(WifiManager.class), - context.getSystemService(NetworkScoreManager.class), - context.getSystemService(ConnectivityManager.class), - this::notifyChangeIfNeeded); - mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - mWifiTracker.handleBroadcast(intent); - notifyChangeIfNeeded(); - } - }; - } - - @Override - public void register(boolean register) { - if (register) { - mWifiTracker.fetchInitialState(); - notifyChangeIfNeeded(); - mContext.registerReceiver(mReceiver, INTENT_FILTER, - Context.RECEIVER_EXPORTED_UNAUDITED); - } else { - mContext.unregisterReceiver(mReceiver); - } - mWifiTracker.setListening(register); - } - - @Override - public String getSummary() { - if (!mWifiTracker.enabled) { - return mContext.getString(R.string.switch_off_text); - } - if (!mWifiTracker.connected) { - return mContext.getString(R.string.disconnected); - } - String ssid = WifiInfo.sanitizeSsid(mWifiTracker.ssid); - if (TextUtils.isEmpty(mWifiTracker.statusLabel)) { - return ssid; - } - return mContext.getResources().getString( - com.android.settingslib.R.string.preference_summary_default_combination, - ssid, mWifiTracker.statusLabel); - } - - /** - * return true if Wi-Fi connected. - */ - public boolean isWifiConnected() { - return mWifiTracker.connected; - } -} diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java deleted file mode 100644 index 99040dba951..00000000000 --- a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (C) 2017 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.settings.wifi; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.net.wifi.WifiManager; - -import com.android.settings.R; -import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener; -import com.android.settingslib.wifi.WifiStatusTracker; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class WifiSummaryUpdaterTest { - @Mock private WifiStatusTracker mWifiTracker; - @Mock private SummaryListener mListener; - - private Context mContext; - private WifiSummaryUpdater mSummaryUpdater; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - doReturn(mock(Intent.class)).when(mContext).registerReceiver(any(), any(), anyInt()); - doNothing().when(mContext).unregisterReceiver(any(BroadcastReceiver.class)); - - mSummaryUpdater = new WifiSummaryUpdater(mContext, mListener, mWifiTracker); - } - - @Test - public void register_true_shouldRegisterListenerAndTracker() { - mSummaryUpdater.register(true); - - verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class), - anyInt()); - verify(mWifiTracker).setListening(true); - } - - @Test - public void register_true_shouldFetchInitialStateAndSendSummaryChange() { - mSummaryUpdater.register(true); - - verify(mWifiTracker).fetchInitialState(); - verify(mListener).onSummaryChanged(anyString()); - } - - @Test - public void register_false_shouldUnregisterListenerAndTracker() { - mSummaryUpdater.register(true); - mSummaryUpdater.register(false); - - verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); - verify(mWifiTracker).setListening(false); - } - - @Test - public void onReceive_networkStateChanged_shouldSendSummaryChange() { - mSummaryUpdater.register(true); - mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)); - - verify(mListener).onSummaryChanged(anyString()); - } - - @Test - public void onReceive_rssiChanged_shouldSendSummaryChange() { - mSummaryUpdater.register(true); - mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION)); - - verify(mListener).onSummaryChanged(anyString()); - } - - @Test - public void getSummary_wifiDisabled_shouldReturnDisabled() { - mWifiTracker.enabled = false; - - assertThat(mSummaryUpdater.getSummary()) - .isEqualTo(mContext.getString(R.string.switch_off_text)); - } - - @Test - public void getSummary_wifiDisconnected_shouldReturnDisconnected() { - mWifiTracker.enabled = true; - mWifiTracker.connected = false; - - assertThat(mSummaryUpdater.getSummary()) - .isEqualTo(mContext.getString(R.string.disconnected)); - } - - @Test - public void getSummary_wifiConnected_shouldReturnSsid() { - mWifiTracker.enabled = true; - mWifiTracker.connected = true; - mWifiTracker.ssid = "Test Ssid"; - - assertThat(mSummaryUpdater.getSummary()).isEqualTo("Test Ssid"); - } - - @Test - public void getSummary_wifiConnected_withSpeedLabel_shouldReturnSsid_withSpeedLabel() { - mWifiTracker.enabled = true; - mWifiTracker.connected = true; - mWifiTracker.ssid = "Test Ssid"; - mWifiTracker.statusLabel = "Very Fast"; - - assertThat(mSummaryUpdater.getSummary()).isEqualTo("Test Ssid / Very Fast"); - } - - private class SummaryListener implements OnSummaryChangeListener { - private String summary; - - @Override - public void onSummaryChanged(String summary) { - this.summary = summary; - } - } -} diff --git a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java deleted file mode 100644 index 1c482efeef2..00000000000 --- a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (C) 2020 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.settings.network; - -import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; -import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.IntentFilter; -import android.net.ConnectivityManager; -import android.net.NetworkRequest; -import android.net.NetworkScoreManager; -import android.net.wifi.WifiManager; -import android.os.Handler; -import android.os.Looper; - -import androidx.lifecycle.Lifecycle; -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.LifecycleRegistry; -import androidx.preference.Preference; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; -import androidx.test.annotation.UiThreadTest; -import androidx.test.core.app.ApplicationProvider; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import com.android.settings.R; -import com.android.settings.testutils.ResourcesUtils; -import com.android.settings.wifi.WifiPickerTrackerHelper; -import com.android.settings.wifi.WifiSummaryUpdater; -import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; -import com.android.wifitrackerlib.HotspotNetworkEntry; -import com.android.wifitrackerlib.StandardWifiEntry; -import com.android.wifitrackerlib.WifiPickerTracker; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; - -import java.util.ArrayList; -import java.util.List; - -@RunWith(AndroidJUnit4.class) -public class InternetPreferenceControllerTest { - - private static final String TEST_SUMMARY = "test summary"; - private static final String TEST_ALTERNATE_SUMMARY = "test alternate summary"; - private static final String NOT_CONNECTED = "Not connected"; - private static final String SUB_ID_1 = "1"; - private static final String SUB_ID_2 = "2"; - private static final String DISPLAY_NAME_1 = "Sub 1"; - private static final String DISPLAY_NAME_2 = "Sub 2"; - - @Rule - public final MockitoRule mMockitoRule = MockitoJUnit.rule(); - @Spy - private Context mContext = ApplicationProvider.getApplicationContext(); - @Mock - private SubscriptionInfoEntity mActiveSubInfo; - @Mock - private SubscriptionInfoEntity mDefaultDataSubInfo; - @Mock - private ConnectivityManager mConnectivityManager; - @Mock - private LifecycleOwner mLifecycleOwner; - @Mock - private WifiManager mWifiManager; - @Mock - private WifiSummaryUpdater mSummaryHelper; - @Mock - private WifiPickerTrackerHelper mWifiPickerTrackerHelper; - @Mock - private WifiPickerTracker mWifiPickerTracker; - @Mock - private HotspotNetworkEntry mHotspotNetworkEntry; - - private LifecycleRegistry mLifecycleRegistry; - - private MockInternetPreferenceController mController; - private PreferenceScreen mScreen; - private Preference mPreference; - private List mSubscriptionInfoEntityList = new ArrayList<>(); - - @Before - public void setUp() { - when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); - when(mContext.getSystemService(NetworkScoreManager.class)) - .thenReturn(mock(NetworkScoreManager.class)); - when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager); - when(mWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED); - when(mWifiPickerTrackerHelper.getWifiPickerTracker()).thenReturn(mWifiPickerTracker); - when(mWifiPickerTracker.getConnectedWifiEntry()).thenReturn(null /* WifiEntry */); - when(mHotspotNetworkEntry.getAlternateSummary()).thenReturn(TEST_ALTERNATE_SUMMARY); - - if (Looper.myLooper() == null) { - Looper.prepare(); - } - mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner); - when(mLifecycleOwner.getLifecycle()).thenReturn(mLifecycleRegistry); - mController = new MockInternetPreferenceController(mContext, mock(Lifecycle.class), - mLifecycleOwner); - mController.sIconMap.put(INTERNET_WIFI, 0); - mController.mWifiPickerTrackerHelper = mWifiPickerTrackerHelper; - - final PreferenceManager preferenceManager = new PreferenceManager(mContext); - mScreen = preferenceManager.createPreferenceScreen(mContext); - mPreference = new Preference(mContext); - mPreference.setKey(InternetPreferenceController.KEY); - mScreen.addPreference(mPreference); - } - - private class MockInternetPreferenceController extends - com.android.settings.network.InternetPreferenceController { - - private int mDefaultDataSubscriptionId; - public MockInternetPreferenceController(Context context, Lifecycle lifecycle, - LifecycleOwner lifecycleOwner) { - super(context, lifecycle, lifecycleOwner); - } - - private List mSubscriptionInfoEntity; - - @Override - protected List getSubscriptionInfoList() { - return mSubscriptionInfoEntity; - } - - public void setSubscriptionInfoList(List list) { - mSubscriptionInfoEntity = list; - } - - @Override - protected int getDefaultDataSubscriptionId() { - return mDefaultDataSubscriptionId; - } - - public void setDefaultDataSubscriptionId(int subscriptionId) { - mDefaultDataSubscriptionId = subscriptionId; - } - - } - - private SubscriptionInfoEntity setupSubscriptionInfoEntity(String subId, int slotId, - String displayName, boolean isVisible, boolean isValid, boolean isActive, - boolean isActiveData) { - return new SubscriptionInfoEntity(subId, slotId, false, false, displayName, isVisible, - false, isValid, isActive, isActiveData); - } - - @Test - public void isAvailable_shouldMatchPrefFlag() { - assertThat(mController.isAvailable()).isEqualTo( - mContext.getResources().getBoolean(R.bool.config_show_internet_settings)); - } - - @Test - @UiThreadTest - public void onResume_shouldRegisterCallback() { - mController.onResume(); - - verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class), - any(int.class)); - verify(mConnectivityManager).registerNetworkCallback( - any(NetworkRequest.class), - any(ConnectivityManager.NetworkCallback.class), - any(Handler.class)); - } - - @Test - @UiThreadTest - public void onPause_shouldUnregisterCallback() { - mController.onResume(); - mController.onPause(); - - verify(mContext, times(2)).unregisterReceiver(any(BroadcastReceiver.class)); - verify(mConnectivityManager, times(2)).unregisterNetworkCallback( - any(ConnectivityManager.NetworkCallback.class)); - } - - @Test - public void onSummaryChanged_internetWifi_updateSummary() { - when(mSummaryHelper.getSummary()).thenReturn(TEST_SUMMARY); - mController.mSummaryHelper = mSummaryHelper; - mController.onInternetTypeChanged(INTERNET_WIFI); - mController.displayPreference(mScreen); - - mController.onSummaryChanged(TEST_SUMMARY); - - assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY); - } - - @Test - public void onSummaryChanged_internetNetworksAvailable_notUpdateSummary() { - when(mSummaryHelper.getSummary()).thenReturn(TEST_SUMMARY); - mController.mSummaryHelper = mSummaryHelper; - mController.onInternetTypeChanged(INTERNET_NETWORKS_AVAILABLE); - mController.displayPreference(mScreen); - mPreference.setSummary(NOT_CONNECTED); - - mController.onSummaryChanged(TEST_SUMMARY); - - assertThat(mPreference.getSummary()).isNotEqualTo(TEST_SUMMARY); - } - - @Test - public void updateCellularSummary_getNullSubscriptionInfo_shouldNotCrash() { - mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); - - mController.updateCellularSummary(); - } - - @Test - public void updateCellularSummary_getActiveSubscriptionInfo_cbrs() { - mController.setDefaultDataSubscriptionId(Integer.parseInt(SUB_ID_2)); - mActiveSubInfo = setupSubscriptionInfoEntity(SUB_ID_1, 1, DISPLAY_NAME_1, - false, true, true, true); - mDefaultDataSubInfo = setupSubscriptionInfoEntity(SUB_ID_2, 1, DISPLAY_NAME_2, - false, true, true, false); - mSubscriptionInfoEntityList.add(mActiveSubInfo); - mSubscriptionInfoEntityList.add(mDefaultDataSubInfo); - mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); - mController.displayPreference(mScreen); - - mController.updateCellularSummary(); - assertThat(mPreference.getSummary()).isEqualTo(DISPLAY_NAME_2); - - mActiveSubInfo = setupSubscriptionInfoEntity(SUB_ID_1, 1, DISPLAY_NAME_1, - true, true, true, true); - mSubscriptionInfoEntityList.add(mActiveSubInfo); - mController.setSubscriptionInfoList(mSubscriptionInfoEntityList); - mController.onAvailableSubInfoChanged(mSubscriptionInfoEntityList); - final String expectedSummary = - ResourcesUtils.getResourcesString(mContext, "mobile_data_temp_using", - DISPLAY_NAME_1); - mController.updateCellularSummary(); - assertThat(mPreference.getSummary()).isEqualTo(expectedSummary); - } - - @Test - public void updateHotspotNetwork_isHotspotNetworkEntry_updateAlternateSummary() { - when(mWifiPickerTracker.getConnectedWifiEntry()).thenReturn(mHotspotNetworkEntry); - mController.onInternetTypeChanged(INTERNET_WIFI); - mController.displayPreference(mScreen); - mPreference.setSummary(TEST_SUMMARY); - - mController.updateHotspotNetwork(); - - assertThat(mPreference.getSummary().toString()).isEqualTo(TEST_ALTERNATE_SUMMARY); - } - - @Test - public void updateHotspotNetwork_notHotspotNetworkEntry_notChangeSummary() { - when(mWifiPickerTracker.getConnectedWifiEntry()).thenReturn(mock(StandardWifiEntry.class)); - mController.onInternetTypeChanged(INTERNET_WIFI); - mController.displayPreference(mScreen); - mPreference.setSummary(TEST_SUMMARY); - - mController.updateHotspotNetwork(); - - assertThat(mPreference.getSummary().toString()).isEqualTo(TEST_SUMMARY); - } - - @Test - public void updateHotspotNetwork_hotspotNetworkNotEnabled_returnFalse() { - mController.mWifiPickerTrackerHelper = null; - - assertThat(mController.updateHotspotNetwork()).isFalse(); - } -}