Clean up WifiDataUsageSummaryPreferenceController

Which is legacy and not finished implemented.

Bug: 295260929
Test: unit test
Test: robo test
Test: manual - on Mobile Settings page
Test: manual - on Network details page
Change-Id: I30ac639c1ba285a74038d5413b63e2c31c6cc8ba
This commit is contained in:
Chaohui Wang
2023-09-06 16:14:42 +08:00
parent 9e571e55cf
commit 4b686147b6
11 changed files with 44 additions and 590 deletions

View File

@@ -121,14 +121,5 @@
</LinearLayout> </LinearLayout>
<Button
android:id="@+id/launch_mdp_app_button"
android:layout_marginTop="12dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:text="@string/launch_mdp_app_text"
style="@style/ActionPrimaryButton" />
</LinearLayout> </LinearLayout>

View File

@@ -9729,9 +9729,6 @@
<!-- Informational text about recent update time only, without carrier [CHAR LIMIT=30] --> <!-- Informational text about recent update time only, without carrier [CHAR LIMIT=30] -->
<string name="no_carrier_update_now_text">Updated just now</string> <string name="no_carrier_update_now_text">Updated just now</string>
<!-- Button to launch external data plan app [CHAR LIMIT=30] -->
<string name="launch_mdp_app_text">View plan</string>
<!-- Alternate launch button text for Wi-Fi only mode [CHAR LIMIT=30] --> <!-- Alternate launch button text for Wi-Fi only mode [CHAR LIMIT=30] -->
<string name="launch_wifi_text">View details</string> <string name="launch_wifi_text">View details</string>

View File

@@ -22,8 +22,6 @@ package com.android.settings.core;
public class FeatureFlags { public class FeatureFlags {
public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid"; public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
public static final String WIFI_DETAILS_DATAUSAGE_HEADER =
"settings_wifi_details_datausage_header";
public static final String CONTROLLER_ENHANCEMENT = "settings_controller_loading_enhancement"; public static final String CONTROLLER_ENHANCEMENT = "settings_controller_loading_enhancement";
public static final String CONDITIONAL_CARDS = "settings_conditionals"; public static final String CONDITIONAL_CARDS = "settings_conditionals";
public static final String TETHER_ALL_IN_ONE = "settings_tether_all_in_one"; public static final String TETHER_ALL_IN_ONE = "settings_tether_all_in_one";

View File

@@ -17,14 +17,10 @@
package com.android.settings.datausage; package com.android.settings.datausage;
import android.annotation.AttrRes; import android.annotation.AttrRes;
import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.icu.text.MessageFormat; import android.icu.text.MessageFormat;
import android.net.ConnectivityManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.os.Bundle;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.TextUtils; import android.text.TextUtils;
@@ -32,7 +28,6 @@ import android.text.format.Formatter;
import android.text.style.AbsoluteSizeSpan; import android.text.style.AbsoluteSizeSpan;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
@@ -42,7 +37,6 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder; import androidx.preference.PreferenceViewHolder;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import com.android.settingslib.net.DataUsageController; import com.android.settingslib.net.DataUsageController;
import com.android.settingslib.utils.StringUtil; import com.android.settingslib.utils.StringUtil;
@@ -77,7 +71,6 @@ public class DataUsageSummaryPreference extends Preference {
/** Name of carrier, or null if not available */ /** Name of carrier, or null if not available */
private CharSequence mCarrierName; private CharSequence mCarrierName;
private CharSequence mLimitInfoText; private CharSequence mLimitInfoText;
private Intent mLaunchIntent;
/** Progress to display on ProgressBar */ /** Progress to display on ProgressBar */
private float mProgress; private float mProgress;
@@ -92,11 +85,6 @@ public class DataUsageSummaryPreference extends Preference {
/** The number of bytes used since the start of the cycle. */ /** The number of bytes used since the start of the cycle. */
private long mDataplanUse; private long mDataplanUse;
/** WiFi only mode */
private boolean mWifiMode;
private String mUsagePeriod;
private boolean mSingleWifi; // Shows only one specified WiFi network usage
public DataUsageSummaryPreference(Context context, AttributeSet attrs) { public DataUsageSummaryPreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
setLayoutResource(R.layout.data_usage_summary_preference); setLayoutResource(R.layout.data_usage_summary_preference);
@@ -115,12 +103,11 @@ public class DataUsageSummaryPreference extends Preference {
} }
public void setUsageInfo(long cycleEnd, long snapshotTime, CharSequence carrierName, public void setUsageInfo(long cycleEnd, long snapshotTime, CharSequence carrierName,
int numPlans, Intent launchIntent) { int numPlans) {
mCycleEndTimeMs = cycleEnd; mCycleEndTimeMs = cycleEnd;
mSnapshotTimeMs = snapshotTime; mSnapshotTimeMs = snapshotTime;
mCarrierName = carrierName; mCarrierName = carrierName;
mNumPlans = numPlans; mNumPlans = numPlans;
mLaunchIntent = launchIntent;
notifyChanged(); notifyChanged();
} }
@@ -144,13 +131,6 @@ public class DataUsageSummaryPreference extends Preference {
notifyChanged(); notifyChanged();
} }
void setWifiMode(boolean isWifiMode, String usagePeriod, boolean isSingleWifi) {
mWifiMode = isWifiMode;
mUsagePeriod = usagePeriod;
mSingleWifi = isSingleWifi;
notifyChanged();
}
@Override @Override
public void onBindViewHolder(PreferenceViewHolder holder) { public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder); super.onBindViewHolder(holder);
@@ -171,66 +151,13 @@ public class DataUsageSummaryPreference extends Preference {
TextView usageTitle = getUsageTitle(holder); TextView usageTitle = getUsageTitle(holder);
TextView carrierInfo = getCarrierInfo(holder); TextView carrierInfo = getCarrierInfo(holder);
Button launchButton = getLaunchButton(holder);
TextView limitInfo = getDataLimits(holder); TextView limitInfo = getDataLimits(holder);
if (mWifiMode && mSingleWifi) { usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
updateCycleTimeText(holder); updateCycleTimeText(holder);
updateCarrierInfo(carrierInfo);
usageTitle.setVisibility(View.GONE); limitInfo.setVisibility(TextUtils.isEmpty(mLimitInfoText) ? View.GONE : View.VISIBLE);
launchButton.setVisibility(View.GONE); limitInfo.setText(mLimitInfoText);
carrierInfo.setVisibility(View.GONE);
limitInfo.setVisibility(TextUtils.isEmpty(mLimitInfoText) ? View.GONE : View.VISIBLE);
limitInfo.setText(mLimitInfoText);
} else if (mWifiMode) {
usageTitle.setText(R.string.data_usage_wifi_title);
usageTitle.setVisibility(View.VISIBLE);
TextView cycleTime = getCycleTime(holder);
cycleTime.setText(mUsagePeriod);
carrierInfo.setVisibility(View.GONE);
limitInfo.setVisibility(View.GONE);
final long usageLevel = getHistoricalUsageLevel();
if (usageLevel > 0L) {
launchButton.setOnClickListener((view) -> {
launchWifiDataUsage(getContext());
});
} else {
launchButton.setEnabled(false);
}
launchButton.setText(R.string.launch_wifi_text);
launchButton.setVisibility(View.VISIBLE);
} else {
usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
updateCycleTimeText(holder);
updateCarrierInfo(carrierInfo);
if (mLaunchIntent != null) {
launchButton.setOnClickListener((view) -> {
getContext().startActivity(mLaunchIntent);
});
launchButton.setVisibility(View.VISIBLE);
} else {
launchButton.setVisibility(View.GONE);
}
limitInfo.setVisibility(
TextUtils.isEmpty(mLimitInfoText) ? View.GONE : View.VISIBLE);
limitInfo.setText(mLimitInfoText);
}
}
@VisibleForTesting
static void launchWifiDataUsage(Context context) {
final Bundle args = new Bundle(1);
args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build());
args.putInt(DataUsageList.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_WIFI);
final SubSettingLauncher launcher = new SubSettingLauncher(context)
.setArguments(args)
.setDestination(DataUsageList.class.getName())
.setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN);
launcher.setTitleRes(R.string.wifi_data_usage);
launcher.launch();
} }
private void updateDataUsageLabels(PreferenceViewHolder holder) { private void updateDataUsageLabels(PreferenceViewHolder holder) {
@@ -403,11 +330,6 @@ public class DataUsageSummaryPreference extends Preference {
return (TextView) holder.findViewById(R.id.data_remaining_view); return (TextView) holder.findViewById(R.id.data_remaining_view);
} }
@VisibleForTesting
protected Button getLaunchButton(PreferenceViewHolder holder) {
return (Button) holder.findViewById(R.id.launch_mdp_app_button);
}
@VisibleForTesting @VisibleForTesting
protected LinearLayout getLabelBar(PreferenceViewHolder holder) { protected LinearLayout getLabelBar(PreferenceViewHolder holder) {
return (LinearLayout) holder.findViewById(R.id.label_bar); return (LinearLayout) holder.findViewById(R.id.label_bar);

View File

@@ -18,13 +18,8 @@ package com.android.settings.datausage;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.INetworkPolicyManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.os.ServiceManager;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionPlan; import android.telephony.SubscriptionPlan;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -83,8 +78,6 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
/** The ending time of the billing cycle in ms since the epoch */ /** The ending time of the billing cycle in ms since the epoch */
private long mCycleEnd; private long mCycleEnd;
private Intent mManageSubscriptionIntent;
private Future<Long> mHistoricalUsageLevel; private Future<Long> mHistoricalUsageLevel;
public DataUsageSummaryPreferenceController(Activity activity, int subscriptionId) { public DataUsageSummaryPreferenceController(Activity activity, int subscriptionId) {
@@ -111,10 +104,6 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
if (subInfo != null) { if (subInfo != null) {
mDefaultTemplate = DataUsageLib.getMobileTemplate(context, subscriptionId); mDefaultTemplate = DataUsageLib.getMobileTemplate(context, subscriptionId);
} else if (DataUsageUtils.hasWifiRadio(context)) {
mDefaultTemplate = new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build();
} else {
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, subscriptionId);
} }
} }
@@ -154,8 +143,7 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
@Override @Override
public int getAvailabilityStatus(int subId) { public int getAvailabilityStatus(int subId) {
return (getSubscriptionInfo(subId) != null) return getSubscriptionInfo(subId) != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|| DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
} }
@Override @Override
@@ -163,6 +151,9 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference; DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference;
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId); final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
if (subInfo == null) {
return;
}
if (mDataUsageController == null) { if (mDataUsageController == null) {
updateConfiguration(mContext, mSubId, subInfo); updateConfiguration(mContext, mSubId, subInfo);
} }
@@ -175,25 +166,6 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
long usageLevel = info.usageLevel; long usageLevel = info.usageLevel;
if (subInfo != null) {
summaryPreference.setWifiMode(/* isWifiMode */ false,
/* usagePeriod */ null, /* isSingleWifi */ false);
} else {
summaryPreference.setWifiMode(/* isWifiMode */ true, /* usagePeriod */
info.period, /* isSingleWifi */ false);
summaryPreference.setLimitInfo(null);
summaryPreference.setUsageNumbers(displayUsageLevel(usageLevel),
/* dataPlanSize */ -1L,
/* hasMobileData */ true);
summaryPreference.setChartEnabled(false);
summaryPreference.setUsageInfo(info.cycleEnd,
/* snapshotTime */ -1L,
/* carrierName */ null,
/* numPlans */ 0,
/* launchIntent */ null);
return;
}
refreshDataplanInfo(info, subInfo); refreshDataplanInfo(info, subInfo);
if (info.warningLevel > 0 && info.limitLevel > 0) { if (info.warningLevel > 0 && info.limitLevel > 0) {
@@ -229,8 +201,7 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
DataUsageUtils.formatDataUsage(mContext, mDataBarSize)); DataUsageUtils.formatDataUsage(mContext, mDataBarSize));
summaryPreference.setProgress(mDataplanUse / (float) mDataBarSize); summaryPreference.setProgress(mDataplanUse / (float) mDataBarSize);
} }
summaryPreference.setUsageInfo(mCycleEnd, mSnapshotTime, mCarrierName, summaryPreference.setUsageInfo(mCycleEnd, mSnapshotTime, mCarrierName, mDataplanCount);
mDataplanCount, mManageSubscriptionIntent);
} }
private long displayUsageLevel(long usageLevel) { private long displayUsageLevel(long usageLevel) {
@@ -278,53 +249,7 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
mSnapshotTime = primaryPlan.getDataUsageTime(); mSnapshotTime = primaryPlan.getDataUsageTime();
} }
} }
// Temporarily return null, since no current users of SubscriptionPlan have this intent set. Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubId);
// TODO (b/170330084): Remove after refactoring 5G SubscriptionPlan logic.
// mManageSubscriptionIntent = createManageSubscriptionIntent(mSubId);
mManageSubscriptionIntent = null;
Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubId
+ ", intent " + mManageSubscriptionIntent);
}
/**
* Create an {@link Intent} that can be launched towards the carrier app
* that is currently defining the billing relationship plan through
* {@link INetworkPolicyManager#setSubscriptionPlans(int, SubscriptionPlan [], String)}.
*
* @return ready to launch Intent targeted towards the carrier app, or
* {@code null} if no carrier app is defined, or if the defined
* carrier app provides no management activity.
*/
@VisibleForTesting
Intent createManageSubscriptionIntent(int subId) {
final INetworkPolicyManager iNetPolicyManager = INetworkPolicyManager.Stub.asInterface(
ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
String owner = "";
try {
owner = iNetPolicyManager.getSubscriptionPlansOwner(subId);
} catch (Exception ex) {
Log.w(TAG, "Fail to get subscription plan owner for subId " + subId, ex);
}
if (TextUtils.isEmpty(owner)) {
return null;
}
final List<SubscriptionPlan> plans = getSubscriptionPlans(subId);
if (plans.isEmpty()) {
return null;
}
final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
intent.setPackage(owner);
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
if (mContext.getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
return null;
}
return intent;
} }
private static SubscriptionPlan getPrimaryPlan(List<SubscriptionPlan> plans) { private static SubscriptionPlan getPrimaryPlan(List<SubscriptionPlan> plans) {

View File

@@ -1,67 +0,0 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.datausage;
import android.app.Activity;
import android.net.NetworkTemplate;
import android.telephony.SubscriptionManager;
import androidx.preference.Preference;
import com.android.settingslib.net.DataUsageController;
import java.util.HashSet;
import java.util.Set;
/**
* The controller displays a data usage chart for the specified Wi-Fi network.
*/
public class WifiDataUsageSummaryPreferenceController extends DataUsageSummaryPreferenceController {
final Set<String> mAllNetworkKeys;
public WifiDataUsageSummaryPreferenceController(Activity activity, Set<String> allNetworkKeys) {
super(activity, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mAllNetworkKeys = new HashSet<>(allNetworkKeys);
}
@Override
public void updateState(Preference preference) {
if (preference == null) {
return;
}
final DataUsageSummaryPreference mPreference = (DataUsageSummaryPreference) preference;
final NetworkTemplate template = new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
.setWifiNetworkKeys(mAllNetworkKeys).build();
if (mDataUsageController == null) {
updateConfiguration(mContext, mSubId, getSubscriptionInfo(mSubId));
}
final DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(
template);
mPreference.setWifiMode(/* isWifiMode */ true, /* usagePeriod */
info.period, /* isSingleWifi */ true);
mPreference.setChartEnabled(true);
// Treats Wi-Fi network as unlimited network, which has same usage level and limited level.
mPreference.setUsageNumbers(info.usageLevel, info.usageLevel, /* hasMobileData */ false);
// TODO(b/126142293): Passpoint Wi-Fi should have limit of data usage and time remaining
mPreference.setProgress(100);
mPreference.setLabels(DataUsageUtils.formatDataUsage(mContext, /* sizeBytes */ 0),
DataUsageUtils.formatDataUsage(mContext, info.usageLevel));
}
}

View File

@@ -40,7 +40,6 @@ import android.provider.Settings;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.EventLog; import android.util.EventLog;
import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo; import android.view.ContextMenu.ContextMenuInfo;
@@ -62,7 +61,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.AirplaneModeEnabler; import com.android.settings.AirplaneModeEnabler;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment; import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.DataUsagePreference; import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.datausage.DataUsageUtils; import com.android.settings.datausage.DataUsageUtils;
@@ -1047,17 +1045,13 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@VisibleForTesting @VisibleForTesting
void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) { void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) {
final WifiEntry wifiEntry = pref.getWifiEntry(); final WifiEntry wifiEntry = pref.getWifiEntry();
final Context context = getContext(); final Context context = requireContext();
final CharSequence title =
FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER)
? wifiEntry.getTitle()
: context.getText(R.string.pref_title_network_details);
final Bundle bundle = new Bundle(); final Bundle bundle = new Bundle();
bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey()); bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey());
new SubSettingLauncher(context) new SubSettingLauncher(context)
.setTitleText(title) .setTitleText(context.getText(R.string.pref_title_network_details))
.setDestination(WifiNetworkDetailsFragment.class.getName()) .setDestination(WifiNetworkDetailsFragment.class.getName())
.setArguments(bundle) .setArguments(bundle)
.setSourceMetricsCategory(getMetricsCategory()) .setSourceMetricsCategory(getMetricsCategory())

View File

@@ -20,7 +20,6 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVIT
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID; import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID;
import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource; import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;
import android.app.Activity; import android.app.Activity;
@@ -41,7 +40,6 @@ import android.net.LinkAddress;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.net.RouteInfo; import android.net.RouteInfo;
import android.net.Uri; import android.net.Uri;
@@ -53,7 +51,6 @@ import android.provider.Telephony.CarrierId;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toast; import android.widget.Toast;
@@ -69,9 +66,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.net.module.util.Inet4AddressUtils; import com.android.net.module.util.Inet4AddressUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.datausage.WifiDataUsageSummaryPreferenceController;
import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wifi.WifiDialog2; import com.android.settings.wifi.WifiDialog2;
@@ -164,12 +159,10 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
private final Handler mHandler; private final Handler mHandler;
private LinkProperties mLinkProperties; private LinkProperties mLinkProperties;
private Network mNetwork; private Network mNetwork;
private NetworkInfo mNetworkInfo;
private NetworkCapabilities mNetworkCapabilities; private NetworkCapabilities mNetworkCapabilities;
private int mRssiSignalLevel = -1; private int mRssiSignalLevel = -1;
@VisibleForTesting boolean mShowX; // Shows the Wi-Fi signal icon of Pie+x when it's true. @VisibleForTesting boolean mShowX; // Shows the Wi-Fi signal icon of Pie+x when it's true.
private String[] mSignalStr; private String[] mSignalStr;
private WifiInfo mWifiInfo;
private final WifiManager mWifiManager; private final WifiManager mWifiManager;
private final MetricsFeatureProvider mMetricsFeatureProvider; private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -192,10 +185,6 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
private Preference mTypePref; private Preference mTypePref;
private PreferenceCategory mIpv6Category; private PreferenceCategory mIpv6Category;
private Preference mIpv6AddressPref; private Preference mIpv6AddressPref;
private Lifecycle mLifecycle;
Preference mDataUsageSummaryPref;
WifiDataUsageSummaryPreferenceController mSummaryHeaderController;
private final IconInjector mIconInjector; private final IconInjector mIconInjector;
private final Clock mClock; private final Clock mClock;
@@ -337,7 +326,6 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
mIconInjector = injector; mIconInjector = injector;
mClock = clock; mClock = clock;
mLifecycle = lifecycle;
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
@@ -432,16 +420,6 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
private void setupEntityHeader(PreferenceScreen screen) { private void setupEntityHeader(PreferenceScreen screen) {
LayoutPreference headerPref = screen.findPreference(KEY_HEADER); LayoutPreference headerPref = screen.findPreference(KEY_HEADER);
if (usingDataUsageHeader(mContext)) {
headerPref.setVisible(false);
mDataUsageSummaryPref = screen.findPreference(KEY_DATA_USAGE_HEADER);
mDataUsageSummaryPref.setVisible(true);
mSummaryHeaderController =
new WifiDataUsageSummaryPreferenceController(mFragment.getActivity(),
mWifiEntry.getWifiConfiguration().getAllNetworkKeys());
return;
}
mEntityHeaderController = mEntityHeaderController =
EntityHeaderController.newInstance( EntityHeaderController.newInstance(
mFragment.getActivity(), mFragment, mFragment.getActivity(), mFragment,
@@ -486,14 +464,10 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
} }
private void refreshEntityHeader() { private void refreshEntityHeader() {
if (usingDataUsageHeader(mContext)) { mEntityHeaderController
mSummaryHeaderController.updateState(mDataUsageSummaryPref); .setSummary(mWifiEntry.getSummary())
} else { .setSecondSummary(getExpiryTimeSummary())
mEntityHeaderController .done(true /* rebind */);
.setSummary(mWifiEntry.getSummary())
.setSecondSummary(getExpiryTimeSummary())
.done(true /* rebind */);
}
} }
@VisibleForTesting @VisibleForTesting
@@ -502,14 +476,10 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
mNetwork = mWifiManager.getCurrentNetwork(); mNetwork = mWifiManager.getCurrentNetwork();
mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork); mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork);
mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork); mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
mWifiInfo = mWifiManager.getConnectionInfo();
} else { } else {
mNetwork = null; mNetwork = null;
mLinkProperties = null; mLinkProperties = null;
mNetworkCapabilities = null; mNetworkCapabilities = null;
mNetworkInfo = null;
mWifiInfo = null;
} }
} }
@@ -1059,10 +1029,6 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
} }
} }
private boolean usingDataUsageHeader(Context context) {
return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER);
}
@VisibleForTesting @VisibleForTesting
void connectDisconnectNetwork() { void connectDisconnectNetwork() {
if (mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_DISCONNECTED) { if (mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_DISCONNECTED) {

View File

@@ -16,21 +16,16 @@
package com.android.settings.datausage; package com.android.settings.datausage;
import static android.content.pm.PackageManager.FEATURE_WIFI;
import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
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 static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
@@ -128,7 +123,6 @@ public class DataUsageSummaryPreferenceControllerTest {
doReturn(mTelephonyManager).when(mTelephonyManager) doReturn(mTelephonyManager).when(mTelephonyManager)
.createForSubscriptionId(mDefaultSubscriptionId); .createForSubscriptionId(mDefaultSubscriptionId);
doReturn(mPm).when(mActivity).getPackageManager(); doReturn(mPm).when(mActivity).getPackageManager();
doReturn(false).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
doReturn(TelephonyManager.SIM_STATE_READY).when(mTelephonyManager).getSimState(); doReturn(TelephonyManager.SIM_STATE_READY).when(mTelephonyManager).getSimState();
mController = spy(new DataUsageSummaryPreferenceController( mController = spy(new DataUsageSummaryPreferenceController(
@@ -156,12 +150,9 @@ public class DataUsageSummaryPreferenceControllerTest {
final long now = System.currentTimeMillis(); final long now = System.currentTimeMillis();
final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now);
final Intent intent = new Intent();
doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
createTestDataPlan(info.cycleStart, info.cycleEnd); createTestDataPlan(info.cycleStart, info.cycleEnd);
doReturn(intent).when(mController).createManageSubscriptionIntent(mDefaultSubscriptionId);
mController.updateState(mSummaryPreference); mController.updateState(mSummaryPreference);
@@ -173,10 +164,8 @@ public class DataUsageSummaryPreferenceControllerTest {
// TODO (b/170330084): return intent instead of null for mSummaryPreference // TODO (b/170330084): return intent instead of null for mSummaryPreference
verify(mSummaryPreference).setUsageInfo((info.cycleEnd / 1000) * 1000, verify(mSummaryPreference).setUsageInfo((info.cycleEnd / 1000) * 1000,
now - UPDATE_BACKOFF_MS, now - UPDATE_BACKOFF_MS,
CARRIER_NAME, 1 /* numPlans */, null /* launchIntent */); CARRIER_NAME, 1 /* numPlans */);
verify(mSummaryPreference).setChartEnabled(true); verify(mSummaryPreference).setChartEnabled(true);
verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
false /* isSingleWifi */);
} }
@Test @Test
@@ -184,8 +173,6 @@ public class DataUsageSummaryPreferenceControllerTest {
final long now = System.currentTimeMillis(); final long now = System.currentTimeMillis();
final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now);
final Intent intent = new Intent();
doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
@@ -200,11 +187,8 @@ public class DataUsageSummaryPreferenceControllerTest {
info.cycleEnd, info.cycleEnd,
-1L /* snapshotTime */, -1L /* snapshotTime */,
CARRIER_NAME, CARRIER_NAME,
0 /* numPlans */, 0 /* numPlans */);
null /* launchIntent */);
verify(mSummaryPreference).setChartEnabled(true); verify(mSummaryPreference).setChartEnabled(true);
verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
false /* isSingleWifi */);
} }
@Test @Test
@@ -227,11 +211,8 @@ public class DataUsageSummaryPreferenceControllerTest {
info.cycleEnd, info.cycleEnd,
-1L /* snapshotTime */, -1L /* snapshotTime */,
null /* carrierName */, null /* carrierName */,
0 /* numPlans */, 0 /* numPlans */);
null /* launchIntent */);
verify(mSummaryPreference).setChartEnabled(true); verify(mSummaryPreference).setChartEnabled(true);
verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
false /* isSingleWifi */);
} }
@Test @Test
@@ -254,11 +235,8 @@ public class DataUsageSummaryPreferenceControllerTest {
info.cycleEnd, info.cycleEnd,
-1L /* snapshotTime */, -1L /* snapshotTime */,
null /* carrierName */, null /* carrierName */,
0 /* numPlans */, 0 /* numPlans */);
null /* launchIntent */);
verify(mSummaryPreference).setChartEnabled(false); verify(mSummaryPreference).setChartEnabled(false);
verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
false /* isSingleWifi */);
} }
@Test @Test
@@ -268,8 +246,6 @@ public class DataUsageSummaryPreferenceControllerTest {
info.warningLevel = 0L; info.warningLevel = 0L;
info.limitLevel = 0L; info.limitLevel = 0L;
final Intent intent = new Intent();
doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
@@ -284,8 +260,6 @@ public class DataUsageSummaryPreferenceControllerTest {
info.warningLevel = BillingCycleSettings.MIB_IN_BYTES; info.warningLevel = BillingCycleSettings.MIB_IN_BYTES;
info.limitLevel = 0L; info.limitLevel = 0L;
final Intent intent = new Intent();
doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
@@ -304,8 +278,6 @@ public class DataUsageSummaryPreferenceControllerTest {
info.warningLevel = 0L; info.warningLevel = 0L;
info.limitLevel = BillingCycleSettings.MIB_IN_BYTES; info.limitLevel = BillingCycleSettings.MIB_IN_BYTES;
final Intent intent = new Intent();
doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
@@ -324,8 +296,6 @@ public class DataUsageSummaryPreferenceControllerTest {
info.warningLevel = BillingCycleSettings.MIB_IN_BYTES; info.warningLevel = BillingCycleSettings.MIB_IN_BYTES;
info.limitLevel = BillingCycleSettings.MIB_IN_BYTES; info.limitLevel = BillingCycleSettings.MIB_IN_BYTES;
final Intent intent = new Intent();
doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
@@ -335,8 +305,6 @@ public class DataUsageSummaryPreferenceControllerTest {
verify(mSummaryPreference).setLimitInfo(captor.capture()); verify(mSummaryPreference).setLimitInfo(captor.capture());
CharSequence value = captor.getValue(); CharSequence value = captor.getValue();
assertThat(value.toString()).isEqualTo("1.00 MB data warning / 1.00 MB data limit"); assertThat(value.toString()).isEqualTo("1.00 MB data warning / 1.00 MB data limit");
verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
false /* isSingleWifi */);
} }
@Test @Test
@@ -345,12 +313,11 @@ public class DataUsageSummaryPreferenceControllerTest {
} }
@Test @Test
public void testMobileData_noSimWifi_preferenceDisabled() { public void testMobileData_noSim_preferenceDisabled() {
final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mController.init(subscriptionId); mController.init(subscriptionId);
mController.mDataUsageController = mDataUsageController; mController.mDataUsageController = mDataUsageController;
doReturn(true).when(mPm).hasSystemFeature(eq(FEATURE_WIFI)); assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
} }
private DataUsageController.DataUsageInfo createTestDataUsageInfo(long now) { private DataUsageController.DataUsageInfo createTestDataUsageInfo(long now) {

View File

@@ -1,85 +0,0 @@
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.datausage;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import android.content.Context;
import android.telephony.TelephonyManager;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
import com.android.settingslib.net.DataUsageController;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import java.util.HashSet;
import java.util.Set;
@RunWith(RobolectricTestRunner.class)
public class WifiDataUsageSummaryPreferenceControllerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Spy
Context mContext = ApplicationProvider.getApplicationContext();
@Mock
FragmentActivity mActivity;
@Mock
TelephonyManager mTelephonyManager;
@Mock
DataUsageSummaryPreference mSummaryPreference;
@Mock
DataUsageController mDataUsageController;
@Mock
DataUsageController.DataUsageInfo mDataUsageInfo;
WifiDataUsageSummaryPreferenceController mController;
Set<String> mAllNetworkKeys = new HashSet<>();
@Before
public void setUp() {
doReturn(mContext.getResources()).when(mActivity).getResources();
doReturn(mTelephonyManager).when(mActivity).getSystemService(TelephonyManager.class);
doNothing().when(mSummaryPreference).setWifiMode(anyBoolean(), anyString(), anyBoolean());
doReturn(mDataUsageInfo).when(mDataUsageController).getDataUsageInfo(any());
mController = spy(new WifiDataUsageSummaryPreferenceController(mActivity, mAllNetworkKeys));
doReturn(mDataUsageController).when(mController).createDataUsageController(any());
}
@Test
public void updateState_nullOfDataUsageController_shouldNotCrash() {
mController.mDataUsageController = null;
mController.updateState(mSummaryPreference);
}
}

View File

@@ -17,40 +17,28 @@
package com.android.settings.datausage; package com.android.settings.datausage;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.net.NetworkTemplate;
import android.os.Bundle;
import android.telephony.SubscriptionManager;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.MeasureSpec; import android.view.View.MeasureSpec;
import android.widget.TextView; import android.widget.TextView;
import androidx.preference.PreferenceViewHolder; import androidx.preference.PreferenceViewHolder;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.SettingsActivity;
import com.android.settings.testutils.ResourcesUtils; import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -91,31 +79,9 @@ public class DataUsageSummaryPreferenceTest {
mUpdateTime = now - UPDATE_LAG_MILLIS; mUpdateTime = now - UPDATE_LAG_MILLIS;
} }
@UiThreadTest
@Test
public void testSetUsageInfo_withLaunchIntent_launchButtonShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
new Intent());
mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
.isEqualTo(View.VISIBLE);
}
@Test
public void testSetUsageInfo_withoutLaunchIntent_launchButtonNotShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
null /* launchIntent */);
mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
.isEqualTo(View.GONE);
}
@Test @Test
public void testSetUsageInfo_withDataPlans_carrierInfoShown() { public void testSetUsageInfo_withDataPlans_carrierInfoShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
@@ -124,8 +90,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_withNoDataPlans_carrierInfoNotShown() { public void testSetUsageInfo_withNoDataPlans_carrierInfoNotShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
@@ -138,8 +103,7 @@ public class DataUsageSummaryPreferenceTest {
int smudge = 6; int smudge = 6;
final long updateTime = System.currentTimeMillis() final long updateTime = System.currentTimeMillis()
- TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge); - TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -152,8 +116,7 @@ public class DataUsageSummaryPreferenceTest {
int smudge = 6; int smudge = 6;
final long updateTime = System.currentTimeMillis() final long updateTime = System.currentTimeMillis()
- TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge); - TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -166,8 +129,7 @@ public class DataUsageSummaryPreferenceTest {
int smudge = 6; int smudge = 6;
final long updateTime = System.currentTimeMillis() final long updateTime = System.currentTimeMillis()
- TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge); - TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -177,8 +139,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() { public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() {
final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45); final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -189,7 +150,7 @@ public class DataUsageSummaryPreferenceTest {
public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() { public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() {
final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45); final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
1 /* numPlans */, new Intent()); 1 /* numPlans */);
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -200,7 +161,7 @@ public class DataUsageSummaryPreferenceTest {
public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() { public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() {
final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2); final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
1 /* numPlans */, new Intent()); 1 /* numPlans */);
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString()) assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -210,8 +171,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() { public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() {
final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1); final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder); TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
@@ -224,8 +184,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColorAndFont() { public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColorAndFont() {
final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7); final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7);
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder); TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
@@ -238,8 +197,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() { public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility()).isEqualTo(View.GONE); assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility()).isEqualTo(View.GONE);
@@ -247,8 +205,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_withMultipleDataPlans_usageTitleShown() { public void testSetUsageInfo_withMultipleDataPlans_usageTitleShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility()) assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
@@ -259,8 +216,7 @@ public class DataUsageSummaryPreferenceTest {
public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() { public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
// just under one day // just under one day
final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23); final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23);
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */, mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility()) assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
@@ -273,8 +229,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() { public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() {
final long cycleEnd = System.currentTimeMillis() - 1L; final long cycleEnd = System.currentTimeMillis() - 1L;
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */, mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility()) assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
@@ -288,8 +243,7 @@ public class DataUsageSummaryPreferenceTest {
final int daysLeft = 3; final int daysLeft = 3;
final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft) final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
+ TimeUnit.HOURS.toMillis(1); + TimeUnit.HOURS.toMillis(1);
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */, mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
new Intent());
mSummaryPreference.onBindViewHolder(mHolder); mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility()) assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
@@ -372,8 +326,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() { public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.setUsageNumbers( mSummaryPreference.setUsageNumbers(
BillingCycleSettings.MIB_IN_BYTES, BillingCycleSettings.MIB_IN_BYTES,
10 * BillingCycleSettings.MIB_IN_BYTES, 10 * BillingCycleSettings.MIB_IN_BYTES,
@@ -393,8 +346,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_withDataOverusage() { public void testSetUsageInfo_withDataOverusage() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.setUsageNumbers( mSummaryPreference.setUsageNumbers(
11 * BillingCycleSettings.MIB_IN_BYTES, 11 * BillingCycleSettings.MIB_IN_BYTES,
10 * BillingCycleSettings.MIB_IN_BYTES, 10 * BillingCycleSettings.MIB_IN_BYTES,
@@ -412,8 +364,7 @@ public class DataUsageSummaryPreferenceTest {
@Test @Test
public void testSetUsageInfo_withUsageInfo_dataUsageShown() { public void testSetUsageInfo_withUsageInfo_dataUsageShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
new Intent());
mSummaryPreference.setUsageNumbers( mSummaryPreference.setUsageNumbers(
BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */); BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */);
@@ -423,43 +374,13 @@ public class DataUsageSummaryPreferenceTest {
assertThat(mSummaryPreference.getDataRemaining(mHolder).getText()).isEqualTo(""); assertThat(mSummaryPreference.getDataRemaining(mHolder).getText()).isEqualTo("");
} }
@Test
public void testSetAppIntent_toMdpApp_intentCorrect() {
final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
intent.setPackage("test-owner.example.com");
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
intent);
mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
.isEqualTo(View.VISIBLE);
assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
.isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_mdp_app_text"));
doNothing().when(mContext).startActivity(any(Intent.class));
mSummaryPreference.getLaunchButton(mHolder).callOnClick();
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
Intent.class);
verify(mContext).startActivity(intentCaptor.capture());
final Intent startedIntent = intentCaptor.getValue();
assertThat(startedIntent.getAction())
.isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
assertThat(startedIntent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, -1))
.isEqualTo(42);
}
@Test @Test
public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() { public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() {
LayoutInflater inflater = LayoutInflater.from(mContext); LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */, View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
false /* attachToRoot */); false /* attachToRoot */);
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */, mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
new Intent());
mSummaryPreference.setUsageNumbers( mSummaryPreference.setUsageNumbers(
BillingCycleSettings.MIB_IN_BYTES, BillingCycleSettings.MIB_IN_BYTES,
10 * BillingCycleSettings.MIB_IN_BYTES, 10 * BillingCycleSettings.MIB_IN_BYTES,
@@ -493,79 +414,4 @@ public class DataUsageSummaryPreferenceTest {
// TODO(b/175389659): re-enable this line once cuttlefish device specs are verified. // TODO(b/175389659): re-enable this line once cuttlefish device specs are verified.
// assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE); // assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE);
} }
@Test
public void testSetWifiMode_withUsageInfo_dataUsageShown() {
final int daysLeft = 3;
final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
+ TimeUnit.HOURS.toMillis(1);
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
new Intent());
mSummaryPreference.setUsageNumbers(1000000L, -1L, true);
final String cycleText = "The quick fox";
mSummaryPreference.setWifiMode(true /* isWifiMode */, cycleText, false /* isSingleWifi */);
doReturn(200L).when(mSummaryPreference).getHistoricalUsageLevel();
mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getUsageTitle(mHolder).getText().toString())
.isEqualTo(ResourcesUtils.getResourcesString(mContext, "data_usage_wifi_title"));
assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
.isEqualTo(View.VISIBLE);
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
.isEqualTo(View.VISIBLE);
assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(cycleText);
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility()).isEqualTo(View.GONE);
assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
.isEqualTo(View.VISIBLE);
assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
.isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_wifi_text"));
doNothing().when(mContext).startActivity(any(Intent.class));
mSummaryPreference.getLaunchButton(mHolder).callOnClick();
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
Intent.class);
verify(mContext).startActivity(intentCaptor.capture());
final Intent startedIntent = intentCaptor.getValue();
final Bundle expect = new Bundle(1);
expect.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build());
final Bundle actual = startedIntent
.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
assertThat((NetworkTemplate) actual.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE))
.isEqualTo(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build());
assertThat(startedIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
.isEqualTo(ResourcesUtils.getResourcesId(mContext, "string", "wifi_data_usage"));
}
@UiThreadTest
@Test
public void testSetWifiMode_noUsageInfo_shouldDisableLaunchButton() {
mSummaryPreference.setWifiMode(true /* isWifiMode */, "Test cycle text",
false /* isSingleWifi */);
doReturn(0L).when(mSummaryPreference).getHistoricalUsageLevel();
mSummaryPreference.onBindViewHolder(mHolder);
assertThat(mSummaryPreference.getLaunchButton(mHolder).isEnabled()).isFalse();
}
@Test
public void launchWifiDataUsage_shouldSetWifiNetworkTypeInIntentExtra() {
doNothing().when(mContext).startActivity(any(Intent.class));
mSummaryPreference.launchWifiDataUsage(mContext);
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
Intent.class);
verify(mContext).startActivity(intentCaptor.capture());
final Intent launchIntent = intentCaptor.getValue();
final Bundle args =
launchIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
assertThat(args.getInt(DataUsageList.EXTRA_NETWORK_TYPE))
.isEqualTo(ConnectivityManager.TYPE_WIFI);
}
} }