From 9664c1a55e6e5ac9848393d50f57ccb96e5054a4 Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Thu, 13 Jul 2017 17:20:22 -0700 Subject: [PATCH] Refactor few public static methods. Move public static methods from DataUsageSummary to DataUsageBase. Bug: 62349208 Test: make RunSettingsRoboTests -j40 Change-Id: I632f75f4c4f370fb225a9787267043fec20994e5 --- .../applications/InstalledAppDetails.java | 7 +- .../settings/datausage/AppDataUsage.java | 9 +- .../settings/datausage/DataUsageBase.java | 6 +- .../settings/datausage/DataUsageList.java | 24 ++--- .../datausage/DataUsageMeteredSettings.java | 8 +- .../settings/datausage/DataUsageSummary.java | 74 ++------------ .../settings/datausage/DataUsageUtils.java | 97 +++++++++++++++++++ .../datausage/DataUsageSummaryTest.java | 33 +++---- .../datausage/DataUsageUtilsTest.java | 62 ++++++++++++ 9 files changed, 201 insertions(+), 119 deletions(-) create mode 100644 src/com/android/settings/datausage/DataUsageUtils.java create mode 100644 tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index aca04cb11cd..d06404ef391 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not @@ -67,7 +67,6 @@ import android.view.MenuItem; import android.view.View; import android.webkit.IWebViewUpdateService; import android.widget.Button; - import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; @@ -86,6 +85,7 @@ import com.android.settings.datausage.AppDataUsage; import com.android.settings.datausage.DataUsageList; import com.android.settings.datausage.DataUsageSummary; import com.android.settings.development.DevelopmentSettingsEnabler; +import com.android.settings.datausage.DataUsageUtils; import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryStatsHelperLoader; @@ -105,7 +105,6 @@ import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource.AppStorageStats; import com.android.settingslib.net.ChartData; import com.android.settingslib.net.ChartDataLoader; - import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashSet; @@ -1303,7 +1302,7 @@ public class InstalledAppDetails extends AppInfoBase if (DataUsageList.hasReadyMobileRadio(context)) { return NetworkTemplate.buildTemplateMobileWildcard(); } - if (DataUsageSummary.hasWifiRadio(context)) { + if (DataUsageUtils.hasWifiRadio(context)) { return NetworkTemplate.buildTemplateWifiWildcard(); } return NetworkTemplate.buildTemplateEthernet(); diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java index 222693d04e0..67e83ee7a56 100644 --- a/src/com/android/settings/datausage/AppDataUsage.java +++ b/src/com/android/settings/datausage/AppDataUsage.java @@ -14,6 +14,8 @@ package com.android.settings.datausage; +import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; + import android.app.Activity; import android.app.LoaderManager; import android.content.Context; @@ -39,7 +41,6 @@ import android.util.IconDrawableFactory; import android.util.Log; import android.view.View; import android.widget.AdapterView; - import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppInfoBase; @@ -52,8 +53,6 @@ import com.android.settingslib.net.ChartDataLoader; import com.android.settingslib.net.UidDetail; import com.android.settingslib.net.UidDetailProvider; -import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; - public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener, DataSaverBackend.Listener { @@ -117,8 +116,8 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen : null; if (mTemplate == null) { Context context = getContext(); - mTemplate = DataUsageSummary.getDefaultTemplate(context, - DataUsageSummary.getDefaultSubscriptionId(context)); + mTemplate = DataUsageUtils.getDefaultTemplate(context, + DataUsageUtils.getDefaultSubscriptionId(context)); } if (mAppItem == null) { int uid = (args != null) ? args.getInt(AppInfoBase.ARG_PACKAGE_UID, -1) diff --git a/src/com/android/settings/datausage/DataUsageBase.java b/src/com/android/settings/datausage/DataUsageBase.java index ef565a12690..1325620a776 100644 --- a/src/com/android/settings/datausage/DataUsageBase.java +++ b/src/com/android/settings/datausage/DataUsageBase.java @@ -14,9 +14,6 @@ package com.android.settings.datausage; -import com.android.settings.SettingsPreferenceFragment; -import com.android.settingslib.NetworkPolicyEditor; - import android.content.Context; import android.net.INetworkStatsService; import android.net.NetworkPolicy; @@ -29,9 +26,10 @@ import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; +import com.android.settings.SettingsPreferenceFragment; +import com.android.settingslib.NetworkPolicyEditor; public abstract class DataUsageBase extends SettingsPreferenceFragment { - private static final String TAG = "DataUsageBase"; protected final TemplatePreference.NetworkServices services = diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java index f0048a32a41..e724d48de69 100644 --- a/src/com/android/settings/datausage/DataUsageList.java +++ b/src/com/android/settings/datausage/DataUsageList.java @@ -14,6 +14,12 @@ package com.android.settings.datausage; +import static android.net.ConnectivityManager.TYPE_MOBILE; +import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; +import static android.net.TrafficStats.UID_REMOVED; +import static android.net.TrafficStats.UID_TETHERING; +import static android.telephony.TelephonyManager.SIM_STATE_READY; + import android.app.ActivityManager; import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; @@ -46,7 +52,6 @@ import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; - import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.datausage.CycleAdapter.SpinnerInterface; @@ -56,19 +61,10 @@ import com.android.settingslib.net.ChartData; import com.android.settingslib.net.ChartDataLoader; import com.android.settingslib.net.SummaryForAllUidLoader; import com.android.settingslib.net.UidDetailProvider; - import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static android.net.ConnectivityManager.TYPE_MOBILE; -import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; -import static android.net.TrafficStats.UID_REMOVED; -import static android.net.TrafficStats.UID_TETHERING; -import static android.telephony.TelephonyManager.SIM_STATE_READY; -import static com.android.settings.datausage.DataUsageSummary.TEST_RADIOS; -import static com.android.settings.datausage.DataUsageSummary.TEST_RADIOS_PROP; - /** * Panel showing data usage history across various networks, including options * to inspect based on usage cycle and control through {@link NetworkPolicy}. @@ -442,8 +438,8 @@ public class DataUsageList extends DataUsageBase { * Test if device has a mobile data radio with SIM in ready state. */ public static boolean hasReadyMobileRadio(Context context) { - if (TEST_RADIOS) { - return SystemProperties.get(TEST_RADIOS_PROP).contains("mobile"); + if (DataUsageUtils.TEST_RADIOS) { + return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile"); } final ConnectivityManager conn = ConnectivityManager.from(context); @@ -476,8 +472,8 @@ public class DataUsageList extends DataUsageBase { * TODO: consider adding to TelephonyManager or SubscriptionManager. */ public static boolean hasReadyMobileRadio(Context context, int subId) { - if (TEST_RADIOS) { - return SystemProperties.get(TEST_RADIOS_PROP).contains("mobile"); + if (DataUsageUtils.TEST_RADIOS) { + return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile"); } final ConnectivityManager conn = ConnectivityManager.from(context); diff --git a/src/com/android/settings/datausage/DataUsageMeteredSettings.java b/src/com/android/settings/datausage/DataUsageMeteredSettings.java index 830fc960635..0afb89481b1 100644 --- a/src/com/android/settings/datausage/DataUsageMeteredSettings.java +++ b/src/com/android/settings/datausage/DataUsageMeteredSettings.java @@ -16,8 +16,6 @@ package com.android.settings.datausage; import static android.net.wifi.WifiInfo.removeDoubleQuotes; -import static com.android.settings.datausage.DataUsageSummary.hasWifiRadio; - import android.app.backup.BackupManager; import android.content.Context; import android.content.res.Resources; @@ -29,7 +27,6 @@ import android.support.v7.preference.DropDownPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.text.TextUtils; - import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; @@ -37,7 +34,6 @@ import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; import com.android.settingslib.NetworkPolicyEditor; - import java.util.ArrayList; import java.util.List; @@ -83,7 +79,7 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme getPreferenceScreen().removePreference(mMobileCategory); mWifiCategory.removeAll(); - if (hasWifiRadio(context) && mWifiManager.isWifiEnabled()) { + if (DataUsageUtils.hasWifiRadio(context) && mWifiManager.isWifiEnabled()) { for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) { final Preference pref = new MeteredPreference(getPrefContext(), config); if (!TextUtils.isEmpty(pref.getTitle())) { @@ -162,7 +158,7 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - if (hasWifiRadio(context) && wifiManager.isWifiEnabled()) { + if (DataUsageUtils.hasWifiRadio(context) && wifiManager.isWifiEnabled()) { for (WifiConfiguration config : wifiManager.getConfiguredNetworks()) { if (config.SSID != null) { final String networkId = config.SSID; diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index e6fc5e7237b..c4d9d6f7749 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -15,7 +15,6 @@ package com.android.settings.datausage; import static android.net.ConnectivityManager.TYPE_ETHERNET; -import static android.net.ConnectivityManager.TYPE_WIFI; import android.app.Activity; import android.content.ComponentName; @@ -38,7 +37,6 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.Spannable; import android.text.SpannableString; @@ -48,7 +46,6 @@ import android.text.style.RelativeSizeSpan; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; - import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SummaryPreference; @@ -58,7 +55,6 @@ import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.net.DataUsageController; - import java.util.ArrayList; import java.util.List; @@ -66,9 +62,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs static final boolean LOGD = false; - public static final boolean TEST_RADIOS = false; - public static final String TEST_RADIOS_PROP = "test.radios"; - public static final String KEY_RESTRICT_BACKGROUND = "restrict_background"; public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions"; @@ -101,16 +94,16 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mPolicyEditor = new NetworkPolicyEditor(policyManager); - boolean hasMobileData = hasMobileData(context); + boolean hasMobileData = DataUsageUtils.hasMobileData(context); mDataUsageController = new DataUsageController(context); mDataInfoController = new DataUsageInfoController(); addPreferencesFromResource(R.xml.data_usage); - int defaultSubId = getDefaultSubscriptionId(context); + int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context); if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { hasMobileData = false; } - mDefaultTemplate = getDefaultTemplate(context, defaultSubId); + mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId); mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER); if (!hasMobileData || !isAdmin()) { @@ -136,7 +129,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs removePreference(KEY_LIMIT_SUMMARY); mSummaryPreference.setSelectable(false); } - boolean hasWifiRadio = hasWifiRadio(context); + boolean hasWifiRadio = DataUsageUtils.hasWifiRadio(context); if (hasWifiRadio) { addWifiSection(); } @@ -322,8 +315,8 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs * Test if device has an ethernet network connection. */ public boolean hasEthernet(Context context) { - if (TEST_RADIOS) { - return SystemProperties.get(TEST_RADIOS_PROP).contains("ethernet"); + if (DataUsageUtils.TEST_RADIOS) { + return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("ethernet"); } final ConnectivityManager conn = ConnectivityManager.from(context); @@ -348,53 +341,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs return hasEthernet && ethernetBytes > 0; } - public static boolean hasMobileData(Context context) { - return ConnectivityManager.from(context).isNetworkSupported( - ConnectivityManager.TYPE_MOBILE); - } - - /** - * Test if device has a Wi-Fi data radio. - */ - public static boolean hasWifiRadio(Context context) { - if (TEST_RADIOS) { - return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi"); - } - - final ConnectivityManager conn = ConnectivityManager.from(context); - return conn.isNetworkSupported(TYPE_WIFI); - } - - public static int getDefaultSubscriptionId(Context context) { - SubscriptionManager subManager = SubscriptionManager.from(context); - if (subManager == null) { - return SubscriptionManager.INVALID_SUBSCRIPTION_ID; - } - SubscriptionInfo subscriptionInfo = subManager.getDefaultDataSubscriptionInfo(); - if (subscriptionInfo == null) { - List list = subManager.getAllSubscriptionInfoList(); - if (list.size() == 0) { - return SubscriptionManager.INVALID_SUBSCRIPTION_ID; - } - subscriptionInfo = list.get(0); - } - return subscriptionInfo.getSubscriptionId(); - } - - public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) { - if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - TelephonyManager telephonyManager = TelephonyManager.from(context); - NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll( - telephonyManager.getSubscriberId(defaultSubId)); - return NetworkTemplate.normalize(mobileAll, - telephonyManager.getMergedSubscriberIds()); - } else if (hasWifiRadio(context)) { - return NetworkTemplate.buildTemplateWifiWildcard(); - } else { - return NetworkTemplate.buildTemplateEthernet(); - } - } - @VisibleForTesting void updateNetworkRestrictionSummary(NetworkRestrictionsPreference preference) { if (preference == null) { @@ -459,12 +405,12 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs resource.xmlResId = R.xml.data_usage; resources.add(resource); - if (hasMobileData(context)) { + if (DataUsageUtils.hasMobileData(context)) { resource = new SearchIndexableResource(context); resource.xmlResId = R.xml.data_usage_cellular; resources.add(resource); } - if (hasWifiRadio(context)) { + if (DataUsageUtils.hasWifiRadio(context)) { resource = new SearchIndexableResource(context); resource.xmlResId = R.xml.data_usage_wifi; resources.add(resource); @@ -476,10 +422,10 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs public List getNonIndexableKeys(Context context) { List keys = super.getNonIndexableKeys(context); - if (hasMobileData(context)) { + if (DataUsageUtils.hasMobileData(context)) { keys.add(KEY_RESTRICT_BACKGROUND); } - if (hasWifiRadio(context)) { + if (DataUsageUtils.hasWifiRadio(context)) { keys.add(KEY_NETWORK_RESTRICTIONS); } keys.add(KEY_WIFI_USAGE_TITLE); diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java new file mode 100644 index 00000000000..a5d12230018 --- /dev/null +++ b/src/com/android/settings/datausage/DataUsageUtils.java @@ -0,0 +1,97 @@ +/* + * 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.datausage; + +import static android.net.ConnectivityManager.TYPE_WIFI; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkTemplate; +import android.os.SystemProperties; +import android.telephony.SubscriptionInfo; +import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; +import java.util.List; + +/** + * Utility methods for data usage classes. + */ +public final class DataUsageUtils { + static final boolean TEST_RADIOS = false; + static final String TEST_RADIOS_PROP = "test.radios"; + + private DataUsageUtils() { + } + + /** + * Returns whether device has mobile data. + * TODO: This is the opposite to Utils.isWifiOnly(), it should be refactored into 1 method. + */ + static boolean hasMobileData(Context context) { + ConnectivityManager connectivityManager = ConnectivityManager.from(context); + return connectivityManager != null && connectivityManager + .isNetworkSupported(ConnectivityManager.TYPE_MOBILE); + } + + /** + * Whether device has a Wi-Fi data radio. + */ + public static boolean hasWifiRadio(Context context) { + if (TEST_RADIOS) { + return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi"); + } + + ConnectivityManager connectivityManager = ConnectivityManager.from(context); + return connectivityManager != null && connectivityManager.isNetworkSupported(TYPE_WIFI); + } + + /** + * Returns the default subscription if available else returns + * SubscriptionManager#INVALID_SUBSCRIPTION_ID + */ + public static int getDefaultSubscriptionId(Context context) { + SubscriptionManager subManager = SubscriptionManager.from(context); + if (subManager == null) { + return SubscriptionManager.INVALID_SUBSCRIPTION_ID; + } + SubscriptionInfo subscriptionInfo = subManager.getDefaultDataSubscriptionInfo(); + if (subscriptionInfo == null) { + List list = subManager.getAllSubscriptionInfoList(); + if (list.size() == 0) { + return SubscriptionManager.INVALID_SUBSCRIPTION_ID; + } + subscriptionInfo = list.get(0); + } + return subscriptionInfo.getSubscriptionId(); + } + + /** + * Returns the default network template based on the availability of mobile data, Wifi. Returns + * ethernet template if both mobile data and Wifi are not available. + */ + static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) { + if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + TelephonyManager telephonyManager = TelephonyManager.from(context); + NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll( + telephonyManager.getSubscriberId(defaultSubId)); + return NetworkTemplate.normalize(mobileAll, + telephonyManager.getMergedSubscriberIds()); + } else if (hasWifiRadio(context)) { + return NetworkTemplate.buildTemplateWifiWildcard(); + } else { + return NetworkTemplate.buildTemplateEthernet(); + } + } +} diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java index 13e3aeea831..6ee802b57c7 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java @@ -16,19 +16,26 @@ package com.android.settings.datausage; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.anyInt; +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 static org.mockito.Mockito.when; + import android.content.Context; import android.net.ConnectivityManager; -import android.net.NetworkPolicy; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; - import com.android.settings.R; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settingslib.NetworkPolicyEditor; - +import java.util.ArrayList; +import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -39,18 +46,6 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; -import java.util.ArrayList; -import java.util.List; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyInt; -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 static org.mockito.Mockito.when; - @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class DataUsageSummaryTest { @@ -71,12 +66,6 @@ public class DataUsageSummaryTest { when(mManager.isNetworkSupported(anyInt())).thenReturn(true); } - @Test - public void testMobileDataStatus() { - boolean hasMobileData = DataUsageSummary.hasMobileData(mContext); - assertThat(hasMobileData).isTrue(); - } - @Test public void testUpdateNetworkRestrictionSummary_shouldSetSummary() { final DataUsageSummary dataUsageSummary = spy(new DataUsageSummary()); diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java new file mode 100644 index 00000000000..cdcd3a992e9 --- /dev/null +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java @@ -0,0 +1,62 @@ +/* + * 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.datausage; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.net.ConnectivityManager; +import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public final class DataUsageUtilsTest { + @Mock private ConnectivityManager mManager; + private Context mContext; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + ShadowApplication shadowContext = ShadowApplication.getInstance(); + mContext = shadowContext.getApplicationContext(); + shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager); + } + + @Test + public void mobileDataStatus_whenNetworkIsSupported() { + when(mManager.isNetworkSupported(anyInt())).thenReturn(true); + boolean hasMobileData = DataUsageUtils.hasMobileData(mContext); + assertThat(hasMobileData).isTrue(); + } + + @Test + public void mobileDataStatus_whenNetworkIsNotSupported() { + when(mManager.isNetworkSupported(anyInt())).thenReturn(false); + boolean hasMobileData = DataUsageUtils.hasMobileData(mContext); + assertThat(hasMobileData).isFalse(); + } +}