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

Commit 9a65e5fe authored by Jan Nordqvist's avatar Jan Nordqvist Committed by Sundeep Ghuman
Browse files

Set color of update line to red if update is older than six hours.

In Data Usage screen, out-of-date state

Bug: 70950124

Test: manual
Test: make RunSettingsRoboTests
Change-Id: Icf6fafe9ab61a2c1ac3fba2bebf3bd4407c0ecfe
parent a6f6e9c4
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.widget.ProgressBar;
import android.widget.TextView;

import com.android.settings.R;
import com.android.settingslib.Utils;
import com.android.settingslib.utils.StringUtil;

import java.util.Objects;
@@ -39,6 +40,7 @@ import java.util.concurrent.TimeUnit;
 */
public class DataUsageSummaryPreference extends Preference {
    private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
    private static final long WARNING_AGE = TimeUnit.HOURS.toMillis(6L);

    private boolean mChartEnabled = true;
    private String mStartLabel;
@@ -48,6 +50,8 @@ public class DataUsageSummaryPreference extends Preference {
    private static final float LARGER_FONT_RATIO = 2.25f;
    private static final float SMALLER_FONT_RATIO = 1.0f;

    private boolean mDefaultTextColorSet;
    private int mDefaultTextColor;
    private int mNumPlans;
    /** The ending time of the billing cycle in milliseconds since epoch. */
    private long mCycleEndTimeMs;
@@ -140,8 +144,8 @@ public class DataUsageSummaryPreference extends Preference {

        updateCycleTimeText(holder);

        TextView carrierInfo = (TextView) holder.findViewById(R.id.carrier_and_update);
        setCarrierInfo(carrierInfo, mCarrierName, mSnapshotTimeMs);

        updateCarrierInfo((TextView) holder.findViewById(R.id.carrier_and_update));

        Button launchButton = (Button) holder.findViewById(R.id.launch_mdp_app_button);
        launchButton.setOnClickListener((view) -> {
@@ -159,6 +163,7 @@ public class DataUsageSummaryPreference extends Preference {
        limitInfo.setText(mLimitInfoText);
    }


    private void updateDataUsageLabels(PreferenceViewHolder holder) {
        TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
        usageNumberField.setText(TextUtils.expandTemplate(
@@ -194,18 +199,25 @@ public class DataUsageSummaryPreference extends Preference {
                        R.plurals.billing_cycle_days_left, (int) daysLeft, (int) daysLeft));
    }

    private void setCarrierInfo(TextView carrierInfo, CharSequence carrierName, long updateAge) {
        if (mNumPlans > 0 && updateAge >= 0L) {

    private void updateCarrierInfo(TextView carrierInfo) {
        if (mNumPlans > 0 && mSnapshotTimeMs >= 0L) {
            long updateAge = System.currentTimeMillis() - mSnapshotTimeMs;
            carrierInfo.setVisibility(View.VISIBLE);
            if (carrierName != null) {
            if (mCarrierName != null) {
                carrierInfo.setText(getContext().getString(R.string.carrier_and_update_text,
                        carrierName, StringUtil.formatRelativeTime(
                        mCarrierName, StringUtil.formatRelativeTime(
                                getContext(), updateAge, false /* withSeconds */)));
            } else {
                carrierInfo.setText(getContext().getString(R.string.no_carrier_update_text,
                        StringUtil.formatRelativeTime(
                                getContext(), updateAge, false /* withSeconds */)));
            }

            carrierInfo.setTextColor(
                    updateAge <= WARNING_AGE
                    ? Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary)
                    : Utils.getColorAttr(getContext(), android.R.attr.colorError));
        } else {
            carrierInfo.setVisibility(View.GONE);
        }
+1 −1
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
                    mCycleStart = rule.start.toEpochSecond() * 1000L;
                    mCycleEnd = rule.end.toEpochSecond() * 1000L;
                }
                mSnapshotTime = System.currentTimeMillis() - primaryPlan.getDataUsageTime();
                mSnapshotTime = primaryPlan.getDataUsageTime();
            }
        }
        mManageSubscriptionIntent =
+31 −3
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.settings.datausage;

import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.content.Intent;
import android.support.v7.preference.PreferenceViewHolder;
@@ -31,6 +29,7 @@ import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
import com.android.settingslib.Utils;
import com.android.settingslib.utils.StringUtil;
import java.util.concurrent.TimeUnit;

@@ -41,6 +40,10 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

import java.util.concurrent.TimeUnit;

import static com.google.common.truth.Truth.assertThat;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = SettingsShadowResourcesImpl.class)
public class DataUsageSummaryPreferenceTest {
@@ -119,6 +122,31 @@ public class DataUsageSummaryPreferenceTest {
        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
    }

    @Test
    public void testSetUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColor() {
        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, DUMMY_CARRIER, 1 /* numPlans */,
                new Intent());

        bindViewHolder();
        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
                Utils.getColorAttr(mContext, android.R.attr.textColorPrimary));
    }

    @Test
    public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColor() {
        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7);
        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, DUMMY_CARRIER, 1 /* numPlans */,
                new Intent());

        bindViewHolder();
        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
                Utils.getColorAttr(mContext, android.R.attr.colorError));
    }

    @Test
    public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
@@ -140,7 +168,7 @@ public class DataUsageSummaryPreferenceTest {
    @Test
    public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
        // just under one day
        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1) - 1;
        final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23);
        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
                new Intent());