Loading src/com/android/settings/datausage/DataUsageUtils.java +40 −15 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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( Loading @@ -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; } } /** Loading tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -42,6 +48,9 @@ public final class DataUsageUtilsTest { private ConnectivityManager mManager; @Mock private TelephonyManager mTelephonyManager; @Mock private NetworkStatsManager mNetworkStatsManager; private Context mContext; @Before Loading @@ -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 Loading Loading @@ -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 */); } } Loading
src/com/android/settings/datausage/DataUsageUtils.java +40 −15 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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( Loading @@ -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; } } /** Loading
tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -42,6 +48,9 @@ public final class DataUsageUtilsTest { private ConnectivityManager mManager; @Mock private TelephonyManager mTelephonyManager; @Mock private NetworkStatsManager mNetworkStatsManager; private Context mContext; @Before Loading @@ -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 Loading Loading @@ -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 */); } }