diff --git a/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java b/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java index cf65034d9cc..c5d8b973097 100644 --- a/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java +++ b/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java @@ -78,7 +78,6 @@ public class CarrierWifiTogglePreferenceController extends TogglePreferenceContr return false; } mWifiPickerTrackerHelper.setCarrierNetworkEnabled(isChecked); - updateCarrierNetworkPreference(isChecked); return true; } @@ -86,21 +85,17 @@ public class CarrierWifiTogglePreferenceController extends TogglePreferenceContr public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mCarrierNetworkPreference = screen.findPreference(CARRIER_WIFI_NETWORK_PREF_KEY); - updateCarrierNetworkPreference(isChecked()); + updateCarrierNetworkPreference(); } @Override public void onWifiStateChanged() { - if (mCarrierNetworkPreference != null && mCarrierNetworkPreference.isVisible()) { - mCarrierNetworkPreference.setSummary(getCarrierNetworkSsid()); - } + updateCarrierNetworkPreference(); } @Override public void onWifiEntriesChanged() { - if (mCarrierNetworkPreference != null && mCarrierNetworkPreference.isVisible()) { - mCarrierNetworkPreference.setSummary(getCarrierNetworkSsid()); - } + updateCarrierNetworkPreference(); } @Override @@ -113,11 +108,11 @@ public class CarrierWifiTogglePreferenceController extends TogglePreferenceContr // Do nothing } - protected void updateCarrierNetworkPreference(boolean isCarrierNetworkEnabled) { + protected void updateCarrierNetworkPreference() { if (mCarrierNetworkPreference == null) { return; } - if (!isCarrierNetworkEnabled || getAvailabilityStatus() != AVAILABLE) { + if (getAvailabilityStatus() != AVAILABLE || !isCarrierNetworkActive()) { mCarrierNetworkPreference.setVisible(false); return; } @@ -125,6 +120,13 @@ public class CarrierWifiTogglePreferenceController extends TogglePreferenceContr mCarrierNetworkPreference.setSummary(getCarrierNetworkSsid()); } + protected boolean isCarrierNetworkActive() { + if (mWifiPickerTrackerHelper == null) { + return false; + } + return mWifiPickerTrackerHelper.isCarrierNetworkActive(); + } + protected String getCarrierNetworkSsid() { if (mWifiPickerTrackerHelper == null) { return null; diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 8c7347bfb84..e88cded175e 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -277,12 +277,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final boolean isDataInService = tmForSubId.getDataState() == TelephonyManager.DATA_CONNECTED; - final boolean isActiveCarrierNetwork = + final boolean isCarrierNetworkActive = (mWifiPickerTrackerHelper != null) - && mWifiPickerTrackerHelper.isActiveCarrierNetwork(); + && mWifiPickerTrackerHelper.isCarrierNetworkActive(); String result = mSubsPrefCtrlInjector.getNetworkType( - mContext, mConfig, mTelephonyDisplayInfo, subId, isActiveCarrierNetwork); - if (mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext) || isActiveCarrierNetwork) { + mContext, mConfig, mTelephonyDisplayInfo, subId, isCarrierNetworkActive); + if (mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext) || isCarrierNetworkActive) { Log.i(TAG, "Active cellular network or active carrier network."); result = mContext.getString(R.string.preference_summary_default_combination, mContext.getString(R.string.mobile_data_connection_active), result); @@ -306,7 +306,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final boolean isActiveCellularNetwork = mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext); if (isActiveCellularNetwork || (mWifiPickerTrackerHelper != null) - && mWifiPickerTrackerHelper.isActiveCarrierNetwork()) { + && mWifiPickerTrackerHelper.isCarrierNetworkActive()) { icon.setTint(Utils.getColorAccentDefaultColor(mContext)); return icon; } diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java index 369218b86ad..675d60fb94c 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderWorker.java +++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java @@ -261,7 +261,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements String iconKey = getIconKey(telephonyDisplayInfo); int resId = mapIconSets(config).get(iconKey).dataContentDescription; if (mWifiPickerTrackerHelper != null - && mWifiPickerTrackerHelper.isActiveCarrierNetwork()) { + && mWifiPickerTrackerHelper.isCarrierNetworkActive()) { MobileIconGroup carrierMergedWifiIconGroup = TelephonyIcons.CARRIER_MERGED_WIFI; resId = carrierMergedWifiIconGroup.dataContentDescription; return resId != 0 diff --git a/src/com/android/settings/wifi/WifiPickerTrackerHelper.java b/src/com/android/settings/wifi/WifiPickerTrackerHelper.java index aaab3685f7a..424c818cb65 100644 --- a/src/com/android/settings/wifi/WifiPickerTrackerHelper.java +++ b/src/com/android/settings/wifi/WifiPickerTrackerHelper.java @@ -77,7 +77,7 @@ public class WifiPickerTrackerHelper implements LifecycleObserver { Process.THREAD_PRIORITY_BACKGROUND); mWorkerThread.start(); - mWifiPickerTracker = FeatureFactory.getFactory(context) + mWifiPickerTracker = FeatureFactory.getFactory(context) .getWifiTrackerLibProvider() .createWifiPickerTracker(lifecycle, context, new Handler(Looper.getMainLooper()), @@ -139,8 +139,8 @@ public class WifiPickerTrackerHelper implements LifecycleObserver { return true; } - /** Confirms connection of the carrier network */ - public boolean isActiveCarrierNetwork() { + /** Confirms connection of the carrier network connected with the internet access */ + public boolean isCarrierNetworkActive() { final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry(); if (mergedCarrierEntry != null) { return mergedCarrierEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED diff --git a/tests/unit/src/com/android/settings/network/CarrierWifiTogglePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/CarrierWifiTogglePreferenceControllerTest.java index 4deea3fb677..444401972fc 100644 --- a/tests/unit/src/com/android/settings/network/CarrierWifiTogglePreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/CarrierWifiTogglePreferenceControllerTest.java @@ -72,8 +72,10 @@ public class CarrierWifiTogglePreferenceControllerTest { mController.init(mock(Lifecycle.class), SUB_ID); mController.mIsProviderModelEnabled = true; mController.mIsCarrierProvisionWifiEnabled = true; + doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); doReturn(SSID).when(mWifiPickerTrackerHelper).getCarrierNetworkSsid(); mController.mWifiPickerTrackerHelper = mWifiPickerTrackerHelper; + if (Looper.myLooper() == null) { Looper.prepare(); } @@ -87,6 +89,7 @@ public class CarrierWifiTogglePreferenceControllerTest { mNetworkPreference.setKey( CarrierWifiTogglePreferenceController.CARRIER_WIFI_NETWORK_PREF_KEY); mScreen.addPreference(mNetworkPreference); + mController.mCarrierNetworkPreference = mNetworkPreference; } @Test @@ -139,8 +142,9 @@ public class CarrierWifiTogglePreferenceControllerTest { } @Test - public void displayPreference_carrierNetworkEnabled_showCarrierNetwork() { - doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkEnabled(SUB_ID); + public void displayPreference_carrierNetworkActive_showCarrierNetwork() { + doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); + doReturn(SSID).when(mWifiPickerTrackerHelper).getCarrierNetworkSsid(); mController.displayPreference(mScreen); @@ -150,8 +154,8 @@ public class CarrierWifiTogglePreferenceControllerTest { } @Test - public void displayPreference_carrierNetworkDisabled_hideCarrierNetwork() { - doReturn(false).when(mWifiPickerTrackerHelper).isCarrierNetworkEnabled(SUB_ID); + public void displayPreference_carrierNetworkInactive_hideCarrierNetwork() { + doReturn(false).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); mController.displayPreference(mScreen); @@ -160,24 +164,48 @@ public class CarrierWifiTogglePreferenceControllerTest { } @Test - public void onWifiStateChanged_carrierNetworkVisible_shouldSetSummary() { - mController.mCarrierNetworkPreference = mNetworkPreference; - mNetworkPreference.setVisible(true); + public void onWifiStateChanged_carrierNetworkActive_shouldSetSummary() { + doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); + doReturn(SSID).when(mWifiPickerTrackerHelper).getCarrierNetworkSsid(); + mNetworkPreference.setVisible(false); mNetworkPreference.setSummary(null); mController.onWifiEntriesChanged(); + assertThat(mNetworkPreference.isVisible()).isEqualTo(true); assertThat(mNetworkPreference.getSummary()).isEqualTo(SSID); } @Test - public void onWifiEntriesChanged_carrierNetworkVisible_shouldSetSummary() { - mController.mCarrierNetworkPreference = mNetworkPreference; + public void onWifiStateChanged_carrierNetworkInactive_shouldHideNetwork() { + doReturn(false).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); mNetworkPreference.setVisible(true); + + mController.onWifiEntriesChanged(); + + assertThat(mNetworkPreference.isVisible()).isEqualTo(false); + } + + @Test + public void onWifiEntriesChanged_carrierNetworkActive_shouldSetSummary() { + doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); + doReturn(SSID).when(mWifiPickerTrackerHelper).getCarrierNetworkSsid(); + mNetworkPreference.setVisible(false); mNetworkPreference.setSummary(null); mController.onWifiEntriesChanged(); + assertThat(mNetworkPreference.isVisible()).isEqualTo(true); assertThat(mNetworkPreference.getSummary()).isEqualTo(SSID); } + + @Test + public void onWifiEntriesChanged_carrierNetworkInactive_shouldHideNetwork() { + doReturn(false).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); + mNetworkPreference.setVisible(true); + + mController.onWifiEntriesChanged(); + + assertThat(mNetworkPreference.isVisible()).isEqualTo(false); + } } diff --git a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java index fc18ce71268..a955020e7cd 100644 --- a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java @@ -455,7 +455,7 @@ public class SubscriptionsPreferenceControllerTest { doReturn(mock(MobileMappings.Config.class)).when(sInjector).getConfig(mContext); doReturn(networkType) .when(sInjector).getNetworkType(any(), any(), any(), anyInt(), eq(true)); - doReturn(true).when(mWifiPickerTrackerHelper).isActiveCarrierNetwork(); + doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.onResume();