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
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||||
android:key="data_usage_wifi_screen">
|
android:key="data_usage_wifi_screen">
|
||||||
|
|
||||||
<com.android.settings.datausage.TemplatePreferenceCategory
|
<com.android.settings.datausage.TemplatePreferenceCategory
|
||||||
@@ -24,7 +25,8 @@
|
|||||||
|
|
||||||
<com.android.settings.datausage.DataUsagePreference
|
<com.android.settings.datausage.DataUsagePreference
|
||||||
android:key="wifi_data_usage"
|
android:key="wifi_data_usage"
|
||||||
android:title="@string/wifi_data_usage" />
|
android:title="@string/wifi_data_usage"
|
||||||
|
settings:searchable="false"/>
|
||||||
|
|
||||||
</com.android.settings.datausage.TemplatePreferenceCategory>
|
</com.android.settings.datausage.TemplatePreferenceCategory>
|
||||||
|
|
||||||
|
@@ -41,4 +41,8 @@
|
|||||||
android:key="saved_networks"
|
android:key="saved_networks"
|
||||||
android:title="@string/wifi_saved_access_points_label"
|
android:title="@string/wifi_saved_access_points_label"
|
||||||
android:fragment="com.android.settings.wifi.savedaccesspoints.SavedAccessPointsWifiSettings"/>
|
android:fragment="com.android.settings.wifi.savedaccesspoints.SavedAccessPointsWifiSettings"/>
|
||||||
|
|
||||||
|
<com.android.settings.datausage.DataUsagePreference
|
||||||
|
android:key="wifi_data_usage"
|
||||||
|
android:title="@string/wifi_data_usage"/>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@@ -33,6 +33,7 @@ import android.net.Network;
|
|||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
import android.net.NetworkInfo.State;
|
import android.net.NetworkInfo.State;
|
||||||
import android.net.NetworkRequest;
|
import android.net.NetworkRequest;
|
||||||
|
import android.net.NetworkTemplate;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -60,6 +61,8 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
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.location.ScanningSettings;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settings.search.Indexable;
|
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_CONFIGURE_WIFI_SETTINGS = "configure_settings";
|
||||||
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
||||||
private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message";
|
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;
|
private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0;
|
||||||
|
|
||||||
@@ -181,6 +186,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
Preference mConfigureWifiSettingsPreference;
|
Preference mConfigureWifiSettingsPreference;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Preference mSavedNetworksPreference;
|
Preference mSavedNetworksPreference;
|
||||||
|
@VisibleForTesting
|
||||||
|
DataUsagePreference mDataUsagePreference;
|
||||||
private LinkablePreference mStatusMessagePreference;
|
private LinkablePreference mStatusMessagePreference;
|
||||||
|
|
||||||
// For Search
|
// For Search
|
||||||
@@ -237,6 +244,11 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext());
|
mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext());
|
||||||
mStatusMessagePreference = (LinkablePreference) findPreference(PREF_KEY_STATUS_MESSAGE);
|
mStatusMessagePreference = (LinkablePreference) findPreference(PREF_KEY_STATUS_MESSAGE);
|
||||||
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
|
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
|
@Override
|
||||||
|
@@ -19,8 +19,10 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -29,13 +31,19 @@ import android.app.Activity;
|
|||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.datausage.DataUsagePreference;
|
||||||
import com.android.settings.search.SearchIndexableRaw;
|
import com.android.settings.search.SearchIndexableRaw;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
|
||||||
import com.android.settingslib.wifi.WifiTracker;
|
import com.android.settingslib.wifi.WifiTracker;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -58,6 +66,8 @@ public class WifiSettingsTest {
|
|||||||
private WifiTracker mWifiTracker;
|
private WifiTracker mWifiTracker;
|
||||||
@Mock
|
@Mock
|
||||||
private PowerManager mPowerManager;
|
private PowerManager mPowerManager;
|
||||||
|
@Mock
|
||||||
|
private DataUsagePreference mDataUsagePreference;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private WifiSettings mWifiSettings;
|
private WifiSettings mWifiSettings;
|
||||||
|
|
||||||
@@ -159,4 +169,40 @@ public class WifiSettingsTest {
|
|||||||
assertThat(mWifiSettings.mAddWifiNetworkPreference.getTitle()).isEqualTo(
|
assertThat(mWifiSettings.mAddWifiNetworkPreference.getTitle()).isEqualTo(
|
||||||
mContext.getString(R.string.wifi_add_network));
|
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*/);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user