From: clownshen Date: Mon, 1 Apr 2019 13:27:14 +0000 (+0800) Subject: Add Wi-Fi data usage field X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fafdfea72cd8f1b7b4f509869d9c89a1a159b81d;p=android-x86%2Fpackages-apps-Settings.git Add Wi-Fi data usage field Add Wi-Fi data usage field at Wi-Fi Setting to show out the total Wi-Fi data usage for user. Bug: 129474341 Test: atest WifiSettingsTest Test: manual test Change-Id: Iad5bee47bd83ed143a2730f042d77907344f4017 --- diff --git a/res/xml/data_usage_wifi.xml b/res/xml/data_usage_wifi.xml index 693a9315d6..4b7620d379 100644 --- a/res/xml/data_usage_wifi.xml +++ b/res/xml/data_usage_wifi.xml @@ -16,6 +16,7 @@ + android:title="@string/wifi_data_usage" + settings:searchable="false"/> diff --git a/res/xml/wifi_settings.xml b/res/xml/wifi_settings.xml index 516ac0a9e0..d7c299e6a8 100644 --- a/res/xml/wifi_settings.xml +++ b/res/xml/wifi_settings.xml @@ -41,4 +41,8 @@ android:key="saved_networks" android:title="@string/wifi_saved_access_points_label" android:fragment="com.android.settings.wifi.savedaccesspoints.SavedAccessPointsWifiSettings"/> + + diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 7e1a36d9b3..da101485c9 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -33,6 +33,7 @@ import android.net.Network; import android.net.NetworkInfo; import android.net.NetworkInfo.State; import android.net.NetworkRequest; +import android.net.NetworkTemplate; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; @@ -60,6 +61,8 @@ import com.android.settings.SettingsActivity; import com.android.settings.core.FeatureFlags; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.SummaryLoader; +import com.android.settings.datausage.DataUsageUtils; +import com.android.settings.datausage.DataUsagePreference; import com.android.settings.location.ScanningSettings; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; @@ -115,6 +118,8 @@ public class WifiSettings extends RestrictedSettingsFragment private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_settings"; private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks"; private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message"; + @VisibleForTesting + static final String PREF_KEY_DATA_USAGE = "wifi_data_usage"; private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0; @@ -181,6 +186,8 @@ public class WifiSettings extends RestrictedSettingsFragment Preference mConfigureWifiSettingsPreference; @VisibleForTesting Preference mSavedNetworksPreference; + @VisibleForTesting + DataUsagePreference mDataUsagePreference; private LinkablePreference mStatusMessagePreference; // For Search @@ -237,6 +244,11 @@ public class WifiSettings extends RestrictedSettingsFragment mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext()); mStatusMessagePreference = (LinkablePreference) findPreference(PREF_KEY_STATUS_MESSAGE); mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager()); + mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE); + mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext())); + mDataUsagePreference.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(), + 0 /*subId*/, + null /*service*/); } @Override diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java index c811b0caf9..82e6717bf5 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java @@ -19,8 +19,10 @@ 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.eq; 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 static org.mockito.Mockito.when; @@ -29,13 +31,19 @@ import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; +import android.os.Bundle; import android.os.PowerManager; +import android.os.UserManager; import android.provider.Settings; +import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import com.android.settings.R; +import com.android.settings.datausage.DataUsagePreference; import com.android.settings.search.SearchIndexableRaw; +import com.android.settings.testutils.shadow.ShadowDataUsageUtils; import com.android.settingslib.wifi.WifiTracker; import org.junit.Before; @@ -58,6 +66,8 @@ public class WifiSettingsTest { private WifiTracker mWifiTracker; @Mock private PowerManager mPowerManager; + @Mock + private DataUsagePreference mDataUsagePreference; private Context mContext; private WifiSettings mWifiSettings; @@ -159,4 +169,40 @@ public class WifiSettingsTest { assertThat(mWifiSettings.mAddWifiNetworkPreference.getTitle()).isEqualTo( mContext.getString(R.string.wifi_add_network)); } + + private void setUpForOnCreate() { + final FragmentActivity activity = mock(FragmentActivity.class); + when(mWifiSettings.getActivity()).thenReturn(activity); + final Resources.Theme theme = mContext.getTheme(); + when(activity.getTheme()).thenReturn(theme); + UserManager userManager = mock(UserManager.class); + when(activity.getSystemService(Context.USER_SERVICE)) + .thenReturn(userManager); + + when(mWifiSettings.findPreference(WifiSettings.PREF_KEY_DATA_USAGE)) + .thenReturn(mDataUsagePreference); + } + + @Test + @Config(shadows = {ShadowDataUsageUtils.class}) + public void checkDataUsagePreference_perferenceInvisibleIfWifiNotSupported() { + setUpForOnCreate(); + ShadowDataUsageUtils.IS_WIFI_SUPPORTED = false; + + mWifiSettings.onCreate(Bundle.EMPTY); + + verify(mDataUsagePreference).setVisible(false); + } + + @Test + @Config(shadows = {ShadowDataUsageUtils.class}) + public void checkDataUsagePreference_perferenceVisibleIfWifiSupported() { + setUpForOnCreate(); + ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true; + + mWifiSettings.onCreate(Bundle.EMPTY); + + verify(mDataUsagePreference).setVisible(true); + verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/, eq(null) /*service*/); + } }