Get ethernet data usage from NetworkStatsManager.
- change to use NetworkStatsManager.querySummaryForUser() to check for ethernet usage data instead of getting it from INetworkStatsSession. Bug: 111751694 Test: make RunSettingsRoboTests Change-Id: I60364b4a5f7879906beba194c50955154d56803a
This commit is contained in:
@@ -18,6 +18,8 @@ import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||
import static android.telephony.TelephonyManager.SIM_STATE_READY;
|
||||
|
||||
import android.app.usage.NetworkStats.Bucket;
|
||||
import android.app.usage.NetworkStatsManager;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.INetworkStatsService;
|
||||
@@ -33,8 +35,11 @@ import android.telephony.TelephonyManager;
|
||||
import android.text.BidiFormatter;
|
||||
import android.text.format.Formatter;
|
||||
import android.text.format.Formatter.BytesResult;
|
||||
import android.util.FeatureFlagUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -69,8 +74,27 @@ public final class DataUsageUtils {
|
||||
}
|
||||
|
||||
final ConnectivityManager conn = ConnectivityManager.from(context);
|
||||
final boolean hasEthernet = conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET);
|
||||
if (!conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (FeatureFlagUtils.isEnabled(context, FeatureFlags.DATA_USAGE_V2)) {
|
||||
final TelephonyManager telephonyManager = TelephonyManager.from(context);;
|
||||
final NetworkStatsManager networkStatsManager =
|
||||
context.getSystemService(NetworkStatsManager.class);
|
||||
boolean hasEthernetUsage = false;
|
||||
try {
|
||||
final Bucket bucket = networkStatsManager.querySummaryForUser(
|
||||
ConnectivityManager.TYPE_ETHERNET, telephonyManager.getSubscriberId(),
|
||||
0L /* startTime */, System.currentTimeMillis() /* endTime */);
|
||||
if (bucket != null) {
|
||||
hasEthernetUsage = bucket.getRxBytes() > 0 || bucket.getTxBytes() > 0;
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Exception querying network detail.", e);
|
||||
}
|
||||
return hasEthernetUsage;
|
||||
} else {
|
||||
final long ethernetBytes;
|
||||
try {
|
||||
INetworkStatsService statsService = INetworkStatsService.Stub.asInterface(
|
||||
@@ -90,7 +114,8 @@ public final class DataUsageUtils {
|
||||
}
|
||||
|
||||
// only show ethernet when both hardware present and traffic has occurred
|
||||
return hasEthernet && ethernetBytes > 0;
|
||||
return ethernetBytes > 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -19,13 +19,19 @@ package com.android.settings.datausage;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
import static org.mockito.Matchers.anyLong;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.usage.NetworkStatsManager;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.DataUnit;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -42,6 +48,9 @@ public final class DataUsageUtilsTest {
|
||||
private ConnectivityManager mManager;
|
||||
@Mock
|
||||
private TelephonyManager mTelephonyManager;
|
||||
@Mock
|
||||
private NetworkStatsManager mNetworkStatsManager;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
@Before
|
||||
@@ -51,6 +60,7 @@ public final class DataUsageUtilsTest {
|
||||
mContext = shadowContext.getApplicationContext();
|
||||
shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
|
||||
shadowContext.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
|
||||
shadowContext.setSystemService(Context.NETWORK_STATS_SERVICE, mNetworkStatsManager);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -88,4 +98,17 @@ public final class DataUsageUtilsTest {
|
||||
|
||||
assertThat(formattedDataUsage).isEqualTo("1.00 GB");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hasEthernet_shouldQueryEthernetSummaryForUser() throws Exception {
|
||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.DATA_USAGE_V2, true);
|
||||
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
|
||||
final String subscriber = "TestSub";
|
||||
when(mTelephonyManager.getSubscriberId()).thenReturn(subscriber);
|
||||
|
||||
DataUsageUtils.hasEthernet(mContext);
|
||||
|
||||
verify(mNetworkStatsManager).querySummaryForUser(eq(ConnectivityManager.TYPE_ETHERNET),
|
||||
eq(subscriber), anyLong() /* startTime */, anyLong() /* endTime */);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user