From af6fce6335d0e3aa22d36129d50c1a8f47ab954d Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 10 Jul 2017 15:59:21 -0700 Subject: [PATCH] Use pref controller to get non-indexable in network setting Change-Id: I2bcc9047146f4ad014d5929e66ee895ee497b641 Fix: 62555826 Test: robotests --- .../network/NetworkDashboardFragment.java | 41 ++++++++++++++----- .../network/TetherPreferenceController.java | 11 +++-- .../network/NetworkDashboardFragmentTest.java | 38 ++++++----------- 3 files changed, 49 insertions(+), 41 deletions(-) diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java index 9d707608e03..e982a289e9d 100644 --- a/src/com/android/settings/network/NetworkDashboardFragment.java +++ b/src/com/android/settings/network/NetworkDashboardFragment.java @@ -21,6 +21,7 @@ import static com.android.settings.network.MobilePlanPreferenceController import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; +import android.app.Fragment; import android.content.Context; import android.provider.SearchIndexableResource; import android.support.annotation.VisibleForTesting; @@ -30,8 +31,10 @@ import android.view.MenuInflater; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; +import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.SummaryLoader; +import com.android.settings.network.MobilePlanPreferenceController.MobilePlanPreferenceHost; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.wifi.WifiMasterSwitchPreferenceController; import com.android.settingslib.core.AbstractPreferenceController; @@ -42,7 +45,7 @@ import java.util.Arrays; import java.util.List; public class NetworkDashboardFragment extends DashboardFragment implements - MobilePlanPreferenceController.MobilePlanPreferenceHost { + MobilePlanPreferenceHost { private static final String TAG = "NetworkDashboardFrag"; @@ -82,22 +85,32 @@ public class NetworkDashboardFragment extends DashboardFragment implements @Override protected List getPreferenceControllers(Context context) { + return buildPreferenceControllers(context, getLifecycle(), mMetricsFeatureProvider, this + /* fragment */, + this /* mobilePlanHost */); + } + + private static List buildPreferenceControllers(Context context, + Lifecycle lifecycle, MetricsFeatureProvider metricsFeatureProvider, Fragment fragment, + MobilePlanPreferenceHost mobilePlanHost) { final AirplaneModePreferenceController airplaneModePreferenceController = - new AirplaneModePreferenceController(context, this /* fragment */); + new AirplaneModePreferenceController(context, fragment); final MobilePlanPreferenceController mobilePlanPreferenceController = - new MobilePlanPreferenceController(context, this); + new MobilePlanPreferenceController(context, mobilePlanHost); final WifiMasterSwitchPreferenceController wifiPreferenceController = - new WifiMasterSwitchPreferenceController(context, mMetricsFeatureProvider); + new WifiMasterSwitchPreferenceController(context, metricsFeatureProvider); final MobileNetworkPreferenceController mobileNetworkPreferenceController = new MobileNetworkPreferenceController(context); final VpnPreferenceController vpnPreferenceController = new VpnPreferenceController(context); - final Lifecycle lifecycle = getLifecycle(); - lifecycle.addObserver(airplaneModePreferenceController); - lifecycle.addObserver(mobilePlanPreferenceController); - lifecycle.addObserver(wifiPreferenceController); - lifecycle.addObserver(mobileNetworkPreferenceController); - lifecycle.addObserver(vpnPreferenceController); + + if (lifecycle != null) { + lifecycle.addObserver(airplaneModePreferenceController); + lifecycle.addObserver(mobilePlanPreferenceController); + lifecycle.addObserver(wifiPreferenceController); + lifecycle.addObserver(mobileNetworkPreferenceController); + lifecycle.addObserver(vpnPreferenceController); + } final List controllers = new ArrayList<>(); controllers.add(airplaneModePreferenceController); @@ -210,6 +223,14 @@ public class NetworkDashboardFragment extends DashboardFragment implements return Arrays.asList(sir); } + @Override + public List getPreferenceControllers(Context + context) { + return buildPreferenceControllers(context, null /* lifecycle */, + null /* metricsFeatureProvider */, null /* fragment */, + null /* mobilePlanHost */); + } + @Override public List getNonIndexableKeys(Context context) { List keys = super.getNonIndexableKeys(context); diff --git a/src/com/android/settings/network/TetherPreferenceController.java b/src/com/android/settings/network/TetherPreferenceController.java index 802b21e3e45..571290796cf 100644 --- a/src/com/android/settings/network/TetherPreferenceController.java +++ b/src/com/android/settings/network/TetherPreferenceController.java @@ -15,6 +15,10 @@ */ package com.android.settings.network; +import static android.os.UserManager.DISALLOW_CONFIG_TETHERING; +import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; +import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; + import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; @@ -46,11 +50,6 @@ import com.android.settingslib.core.lifecycle.events.OnResume; import java.util.concurrent.atomic.AtomicReference; -import static android.os.UserManager.DISALLOW_CONFIG_TETHERING; - -import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; -import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; - public class TetherPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnResume, OnPause, OnDestroy { @@ -90,7 +89,7 @@ public class TetherPreferenceController extends AbstractPreferenceController imp super(context); mBluetoothPan = new AtomicReference<>(); mAdminDisallowedTetherConfig = checkIfRestrictionEnforced( - context, DISALLOW_CONFIG_TETHERING, UserHandle.myUserId()) != null; + mContext, DISALLOW_CONFIG_TETHERING, UserHandle.myUserId()) != null; mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java index 7471632be11..fb3e75d51e8 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java @@ -15,15 +15,23 @@ */ package com.android.settings.network; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; + import android.content.Context; +import android.content.pm.UserInfo; import android.provider.SearchIndexableResource; import android.view.Menu; import com.android.settings.R; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.dashboard.SummaryLoader; -import com.android.settings.testutils.XmlTestUtils; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.drawer.CategoryKey; import org.junit.Before; @@ -31,29 +39,20 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; import java.util.List; -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; -import static org.mockito.Mockito.when; - @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class NetworkDashboardFragmentTest { @Mock private Context mContext; + @Mock + private UserInfo mUserInfo; private NetworkDashboardFragment mFragment; @@ -90,18 +89,6 @@ public class NetworkDashboardFragmentTest { verify(resetController).buildMenuItem(nullable(Menu.class)); } - @Test - public void testNonIndexableKeys_existInXmlLayout() { - final Context context = RuntimeEnvironment.application; - final List niks = NetworkDashboardFragment.SEARCH_INDEX_DATA_PROVIDER - .getNonIndexableKeys(context); - final int xmlId = (new NetworkDashboardFragment()).getPreferenceScreenResId(); - - final List keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId); - - assertThat(keys).containsAllIn(niks); - } - @Test public void testSummaryProvider_hasMobileAndHotspot_shouldReturnMobileSummary() { final MobileNetworkPreferenceController mobileNetworkPreferenceController = @@ -155,4 +142,5 @@ public class NetworkDashboardFragmentTest { verify(mContext).getString(R.string.network_dashboard_summary_data_usage); verify(mContext).getString(R.string.join_many_items_middle, null, null); } + } \ No newline at end of file