Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52f2b4fb authored by Doris Ling's avatar Doris Ling Committed by Android (Google) Code Review
Browse files

Merge "Disable App data usage preference if there's no usage data."

parents 2fd46b70 55a189a6
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -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) {
+22 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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;
@@ -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 {
@@ -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();
    }
}
}