Loading src/com/android/settings/network/telephony/DataUsagePreferenceController.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,16 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro @Override @Override public void updateState(Preference preference) { public void updateState(Preference preference) { super.updateState(preference); super.updateState(preference); final boolean enabled = mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { preference.setEnabled(false); return; } long usageLevel = mDataUsageInfo.usageLevel; if (usageLevel <= 0L) { final DataUsageController controller = new DataUsageController(mContext); usageLevel = controller.getHistoricalUsageLevel(mTemplate); } final boolean enabled = usageLevel > 0L; preference.setEnabled(enabled); preference.setEnabled(enabled); if (enabled) { if (enabled) { Loading tests/robotests/src/com/android/settings/network/telephony/DataUsagePreferenceControllerTest.java +22 −0 Original line number Original line Diff line number Diff line Loading @@ -18,11 +18,17 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; 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.anyString; 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 android.app.Activity; import android.app.Activity; import android.app.usage.NetworkStats; import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; Loading @@ -33,6 +39,7 @@ import android.telephony.TelephonyManager; import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.net.DataUsageController; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; Loading @@ -42,6 +49,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class) public class DataUsagePreferenceControllerTest { public class DataUsagePreferenceControllerTest { Loading Loading @@ -104,4 +112,18 @@ public class DataUsagePreferenceControllerTest { assertThat(mPreference.isEnabled()).isFalse(); assertThat(mPreference.isEnabled()).isFalse(); } } @Test public void updateState_noUsageData_shouldDisablePreference() throws Exception { final NetworkStatsManager networkStatsManager = mock(NetworkStatsManager.class); when(networkStatsManager.querySummaryForDevice(anyInt() /* networkType */, anyString() /* subscriberId */, anyLong() /* startTime */, anyLong() /* endTime */)) .thenReturn(mock(NetworkStats.Bucket.class)); ReflectionHelpers.setField( mController, "mDataUsageInfo", new DataUsageController.DataUsageInfo()); mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); } } } Loading
src/com/android/settings/network/telephony/DataUsagePreferenceController.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,16 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro @Override @Override public void updateState(Preference preference) { public void updateState(Preference preference) { super.updateState(preference); super.updateState(preference); final boolean enabled = mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { preference.setEnabled(false); return; } long usageLevel = mDataUsageInfo.usageLevel; if (usageLevel <= 0L) { final DataUsageController controller = new DataUsageController(mContext); usageLevel = controller.getHistoricalUsageLevel(mTemplate); } final boolean enabled = usageLevel > 0L; preference.setEnabled(enabled); preference.setEnabled(enabled); if (enabled) { if (enabled) { Loading
tests/robotests/src/com/android/settings/network/telephony/DataUsagePreferenceControllerTest.java +22 −0 Original line number Original line Diff line number Diff line Loading @@ -18,11 +18,17 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; 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.anyString; 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 android.app.Activity; import android.app.Activity; import android.app.usage.NetworkStats; import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; Loading @@ -33,6 +39,7 @@ import android.telephony.TelephonyManager; import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.net.DataUsageController; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; Loading @@ -42,6 +49,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class) public class DataUsagePreferenceControllerTest { public class DataUsagePreferenceControllerTest { Loading Loading @@ -104,4 +112,18 @@ public class DataUsagePreferenceControllerTest { assertThat(mPreference.isEnabled()).isFalse(); assertThat(mPreference.isEnabled()).isFalse(); } } @Test public void updateState_noUsageData_shouldDisablePreference() throws Exception { final NetworkStatsManager networkStatsManager = mock(NetworkStatsManager.class); when(networkStatsManager.querySummaryForDevice(anyInt() /* networkType */, anyString() /* subscriberId */, anyLong() /* startTime */, anyLong() /* endTime */)) .thenReturn(mock(NetworkStats.Bucket.class)); ReflectionHelpers.setField( mController, "mDataUsageInfo", new DataUsageController.DataUsageInfo()); mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); } } }