diff --git a/res/xml/network_provider_settings.xml b/res/xml/network_provider_settings.xml index c374469d754..c0f2edd2c86 100644 --- a/res/xml/network_provider_settings.xml +++ b/res/xml/network_provider_settings.xml @@ -27,12 +27,6 @@ android:key="connected_access_point" android:layout="@layout/preference_category_no_label"/> - - diff --git a/src/com/android/settings/network/MultiNetworkHeaderController.java b/src/com/android/settings/network/MultiNetworkHeaderController.java index 1143546859e..e99cbb6e067 100644 --- a/src/com/android/settings/network/MultiNetworkHeaderController.java +++ b/src/com/android/settings/network/MultiNetworkHeaderController.java @@ -27,14 +27,9 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiConnectionPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; -/** - * This controls a header at the top of the Network & internet page that only appears when there - * are two or more active mobile subscriptions. It shows an overview of available network - * connections with an entry for wifi (if connected) and an entry for each subscription. - * - * TODO(tomhsu) when provider model is completed, this class will be replaced - * by {@link NetworkMobileProviderController} - */ +// This controls a header at the top of the Network & internet page that only appears when there +// are two or more active mobile subscriptions. It shows an overview of available network +// connections with an entry for wifi (if connected) and an entry for each subscription. public class MultiNetworkHeaderController extends BasePreferenceController implements WifiConnectionPreferenceController.UpdateListener, SubscriptionsPreferenceController.UpdateListener { diff --git a/src/com/android/settings/network/NetworkMobileProviderController.java b/src/com/android/settings/network/NetworkMobileProviderController.java deleted file mode 100644 index 4c292561976..00000000000 --- a/src/com/android/settings/network/NetworkMobileProviderController.java +++ /dev/null @@ -1,118 +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 android.content.Context; -import android.util.Log; - -import androidx.annotation.VisibleForTesting; -import androidx.preference.PreferenceCategory; -import androidx.preference.PreferenceScreen; - -import com.android.settings.core.BasePreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; - -/** - * This controls mobile network display of the internet page that only appears when there - * are active mobile subscriptions. It shows an overview of available mobile network - * connections with an entry for each subscription. - * - * {@link NetworkMobileProviderController} is used to show subscription status on internet - * page for provider model. This original class can refer to {@link MultiNetworkHeaderController}, - * - */ -public class NetworkMobileProviderController extends BasePreferenceController implements - SubscriptionsPreferenceController.UpdateListener { - - private static final String TAG = NetworkMobileProviderController.class.getSimpleName(); - - public static final String PREF_KEY_PROVIDER_MOBILE_NETWORK = "provider_model_mobile_network"; - private static final int PREFERENCE_START_ORDER = 10; - - private PreferenceCategory mPreferenceCategory; - private PreferenceScreen mPreferenceScreen; - - private SubscriptionsPreferenceController mSubscriptionsController; - - private int mOriginalExpandedChildrenCount; - - public NetworkMobileProviderController(Context context, String key) { - super(context, key); - } - - /** - * Initialize NetworkMobileProviderController - * @param lifecycle Lifecycle of Settings - */ - public void init(Lifecycle lifecycle) { - mSubscriptionsController = createSubscriptionsController(lifecycle); - } - - @VisibleForTesting - SubscriptionsPreferenceController createSubscriptionsController(Lifecycle lifecycle) { - if (mSubscriptionsController == null) { - return new SubscriptionsPreferenceController( - mContext, - lifecycle, - this, - PREF_KEY_PROVIDER_MOBILE_NETWORK, - PREFERENCE_START_ORDER); - } - return mSubscriptionsController; - } - - @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - if (mSubscriptionsController == null) { - Log.e(TAG, "[displayPreference] SubscriptionsController is null."); - return; - } - mPreferenceScreen = screen; - mOriginalExpandedChildrenCount = mPreferenceScreen.getInitialExpandedChildrenCount(); - mPreferenceCategory = screen.findPreference(PREF_KEY_PROVIDER_MOBILE_NETWORK); - mPreferenceCategory.setVisible(isAvailable()); - // TODO(tomhsu) For the provider model, subscriptionsController shall do more - // implementation of preference type change and summary control. - mSubscriptionsController.displayPreference(screen); - } - - @Override - public int getAvailabilityStatus() { - if (mSubscriptionsController == null) { - return CONDITIONALLY_UNAVAILABLE; - } - return mSubscriptionsController.isAvailable() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; - } - - @Override - public void onChildrenUpdated() { - final boolean available = isAvailable(); - // TODO(b/129893781) we need a better way to express where the advanced collapsing starts - // for preference groups that have items dynamically added/removed in the top expanded - // section. - if (mOriginalExpandedChildrenCount != Integer.MAX_VALUE) { - if (available) { - mPreferenceScreen.setInitialExpandedChildrenCount( - mOriginalExpandedChildrenCount + mPreferenceCategory.getPreferenceCount()); - } else { - mPreferenceScreen.setInitialExpandedChildrenCount(mOriginalExpandedChildrenCount); - } - } - mPreferenceCategory.setVisible(available); - } -} diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index a2959aaa2b4..df62190b7ee 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -207,12 +207,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment DataUsagePreference mDataUsagePreference; private LinkablePreference mStatusMessagePreference; - /** - * Mobile networks list for provider model - */ - private static final String PREF_KEY_PROVIDER_MOBILE_NETWORK = "provider_model_mobile_network"; - private NetworkMobileProviderController mNetworkMobileProviderController; - /** * Tracks whether the user initiated a connection via clicking in order to autoscroll to the * network once connected. @@ -261,8 +255,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment mDataUsagePreference.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(), 0 /*subId*/, null /*service*/); - mNetworkMobileProviderController.init(getSettingsLifecycle()); - mNetworkMobileProviderController.displayPreference(getPreferenceScreen()); } @Override @@ -348,13 +340,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } } - @Override - public void onAttach(Context context) { - super.onAttach(context); - mNetworkMobileProviderController = - new NetworkMobileProviderController(context, PREF_KEY_PROVIDER_MOBILE_NETWORK); - } - @Override public void onDestroyView() { mWorkerThread.quit(); diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 864078cf671..53d6c300b81 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -41,7 +41,6 @@ import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.Utils; import com.android.settings.network.telephony.DataConnectivityListener; import com.android.settings.network.telephony.MobileNetworkActivity; import com.android.settings.network.telephony.MobileNetworkUtils; @@ -78,6 +77,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl // Map of subscription id to Preference private Map mSubscriptionPreferences; private int mStartOrder; + /** * This interface lets a parent of this class know that some change happened - this could * either be because overall availability changed, or because we've added/removed/updated some @@ -291,7 +291,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl // subscriptions with same group UUID. .filter(subInfo -> isSubscriptionCanBeDisplayed(mContext, subInfo.getSubscriptionId())) - .count() >= (Utils.isProviderModelEnabled(mContext) ? 1 : 2); + .count() >= 2; } @Override diff --git a/tests/unit/src/com/android/settings/network/NetworkMobileProviderControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkMobileProviderControllerTest.java deleted file mode 100644 index 31c68da1307..00000000000 --- a/tests/unit/src/com/android/settings/network/NetworkMobileProviderControllerTest.java +++ /dev/null @@ -1,180 +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.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; -import static com.android.settings.network.NetworkMobileProviderController.PREF_KEY_PROVIDER_MOBILE_NETWORK; - -import static com.google.common.truth.Truth.assertThat; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; - -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.os.Looper; - -import androidx.preference.PreferenceCategory; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; -import androidx.test.core.app.ApplicationProvider; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import com.android.settingslib.core.lifecycle.Lifecycle; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -/** - * Unit test for NetworkMobileProviderController. - * - * {@link NetworkMobileProviderController} is used to show subscription status on internet page for - * provider model. This original class can refer to {@link MultiNetworkHeaderController}, and - * NetworkMobileProviderControllerTest can also refer to {@link MultiNetworkHeaderControllerTest}. - */ -@RunWith(AndroidJUnit4.class) -public class NetworkMobileProviderControllerTest { - - private static final int EXPANDED_CHILDREN_COUNT = 3; - - @Mock - private Lifecycle mLifecycle; - @Mock - private PreferenceCategory mPreferenceCategory; - @Mock - private SubscriptionsPreferenceController mSubscriptionsController; - - private Context mContext; - private PreferenceManager mPreferenceManager; - private PreferenceScreen mPreferenceScreen; - private NetworkMobileProviderController mNetworkMobileProviderController; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - if (Looper.myLooper() == null) { - Looper.prepare(); - } - - when(mPreferenceCategory.getKey()).thenReturn(PREF_KEY_PROVIDER_MOBILE_NETWORK); - when(mPreferenceCategory.getPreferenceCount()).thenReturn(3); - - mContext = ApplicationProvider.getApplicationContext(); - mNetworkMobileProviderController = - new NetworkMobileProviderController(mContext, PREF_KEY_PROVIDER_MOBILE_NETWORK) { - @Override - SubscriptionsPreferenceController createSubscriptionsController( - Lifecycle lifecycle) { - return mSubscriptionsController; - } - }; - - mPreferenceManager = new PreferenceManager(mContext); - mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext); - mPreferenceScreen.setInitialExpandedChildrenCount(EXPANDED_CHILDREN_COUNT); - mPreferenceScreen.addPreference(mPreferenceCategory); - } - - @Test - public void testDisplayPreference_subscriptionsControllerAvailable() { - when(mSubscriptionsController.isAvailable()).thenReturn(true); - setupNetworkMobileProviderController(); - - assertTrue(mPreferenceCategory.isVisible()); - } - - @Test - public void testDisplayPreference_subscriptionsControllerUnAvailable() { - when(mSubscriptionsController.isAvailable()).thenReturn(false); - setupNetworkMobileProviderController(); - - assertFalse(mPreferenceCategory.isVisible()); - } - - @Test - public void testGetAvailabilityStatus_subscriptionsControllerIsNull() { - when(mSubscriptionsController.isAvailable()).thenReturn(false); - mNetworkMobileProviderController = new NetworkMobileProviderController(mContext, - PREF_KEY_PROVIDER_MOBILE_NETWORK) { - @Override - SubscriptionsPreferenceController createSubscriptionsController(Lifecycle lifecycle) { - return null; - } - }; - setupNetworkMobileProviderController(); - - final int result = mNetworkMobileProviderController.getAvailabilityStatus(); - - assertEquals(result, CONDITIONALLY_UNAVAILABLE); - } - - @Test - public void testGetAvailabilityStatus_subscriptionsControllerAvailable() { - when(mSubscriptionsController.isAvailable()).thenReturn(true); - setupNetworkMobileProviderController(); - - final int result = mNetworkMobileProviderController.getAvailabilityStatus(); - - assertEquals(result, AVAILABLE); - } - - @Test - public void testOnChildUpdated_subscriptionsControllerAvailable_categoryIsVisible() { - when(mSubscriptionsController.isAvailable()).thenReturn(true); - setupNetworkMobileProviderController(); - - mNetworkMobileProviderController.onChildrenUpdated(); - - assertTrue(mPreferenceCategory.isVisible()); - assertThat(mPreferenceScreen.getInitialExpandedChildrenCount()).isEqualTo( - EXPANDED_CHILDREN_COUNT + mPreferenceCategory.getPreferenceCount()); - } - - @Test - public void testOnChildUpdated_subscriptionsControllerUnavailable_categoryIsInvisible() { - when(mSubscriptionsController.isAvailable()).thenReturn(false); - setupNetworkMobileProviderController(); - - mNetworkMobileProviderController.onChildrenUpdated(); - - assertFalse(mPreferenceCategory.isVisible()); - assertThat(mPreferenceScreen.getInitialExpandedChildrenCount()).isEqualTo( - EXPANDED_CHILDREN_COUNT); - } - - @Test - public void testOnChildUpdated_noExpandedChildCountAndAvailable_doesNotSetExpandedCount() { - when(mSubscriptionsController.isAvailable()).thenReturn(true); - mPreferenceScreen.setInitialExpandedChildrenCount(Integer.MAX_VALUE); - setupNetworkMobileProviderController(); - - mNetworkMobileProviderController.onChildrenUpdated(); - - assertEquals(mPreferenceScreen.getInitialExpandedChildrenCount(), Integer.MAX_VALUE); - } - - private void setupNetworkMobileProviderController() { - mNetworkMobileProviderController.init(mLifecycle); - mNetworkMobileProviderController.displayPreference(mPreferenceScreen); - } -}