Merge "Use new API to build NetworkTemplate" into qt-dev am: c9fbd2ee50
am: 057dc8466a
am: 1fa5118618
Change-Id: Icf8db899a7e0f68082e6eaf61f3f1541d456d880
This commit is contained in:
@@ -58,10 +58,7 @@ public class BillingCyclePreferenceController extends BasePreferenceController {
|
|||||||
services.mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
|
services.mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
|
||||||
services.mUserManager = mContext.getSystemService(UserManager.class);
|
services.mUserManager = mContext.getSystemService(UserManager.class);
|
||||||
|
|
||||||
NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
|
NetworkTemplate template = DataUsageUtils.getMobileTemplate(mContext, mSubscriptionId);
|
||||||
services.mTelephonyManager.getSubscriberId(mSubscriptionId));
|
|
||||||
NetworkTemplate template = NetworkTemplate.normalize(mobileAll,
|
|
||||||
services.mTelephonyManager.getMergedSubscriberIds());
|
|
||||||
|
|
||||||
preference.setTemplate(template, mSubscriptionId, services);
|
preference.setTemplate(template, mSubscriptionId, services);
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.SearchIndexableResource;
|
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.SubscriptionPlan;
|
import android.telephony.SubscriptionPlan;
|
||||||
@@ -37,12 +36,9 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
|
||||||
import com.android.settings.search.Indexable;
|
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.net.DataUsageController;
|
import com.android.settingslib.net.DataUsageController;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -91,7 +87,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
|
|||||||
hasMobileData = false;
|
hasMobileData = false;
|
||||||
}
|
}
|
||||||
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId);
|
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId);
|
||||||
mSummaryPreference = (DataUsageSummaryPreference) findPreference(KEY_STATUS_HEADER);
|
mSummaryPreference = findPreference(KEY_STATUS_HEADER);
|
||||||
|
|
||||||
if (!hasMobileData || !isAdmin()) {
|
if (!hasMobileData || !isAdmin()) {
|
||||||
removePreference(KEY_RESTRICT_BACKGROUND);
|
removePreference(KEY_RESTRICT_BACKGROUND);
|
||||||
@@ -155,7 +151,8 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
|
|||||||
private void addMobileSection(int subId, SubscriptionInfo subInfo) {
|
private void addMobileSection(int subId, SubscriptionInfo subInfo) {
|
||||||
TemplatePreferenceCategory category = (TemplatePreferenceCategory)
|
TemplatePreferenceCategory category = (TemplatePreferenceCategory)
|
||||||
inflatePreferences(R.xml.data_usage_cellular);
|
inflatePreferences(R.xml.data_usage_cellular);
|
||||||
category.setTemplate(getNetworkTemplate(subId), subId, services);
|
category.setTemplate(DataUsageUtils.getMobileTemplate(getContext(), subId),
|
||||||
|
subId, services);
|
||||||
category.pushTemplates(services);
|
category.pushTemplates(services);
|
||||||
if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) {
|
if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) {
|
||||||
Preference title = category.findPreference(KEY_MOBILE_USAGE_TITLE);
|
Preference title = category.findPreference(KEY_MOBILE_USAGE_TITLE);
|
||||||
@@ -189,13 +186,6 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
|
|||||||
return pref;
|
return pref;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkTemplate getNetworkTemplate(int subscriptionId) {
|
|
||||||
NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
|
|
||||||
services.mTelephonyManager.getSubscriberId(subscriptionId));
|
|
||||||
return NetworkTemplate.normalize(mobileAll,
|
|
||||||
services.mTelephonyManager.getMergedSubscriberIds());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
@@ -33,12 +33,13 @@ import android.text.format.Formatter;
|
|||||||
import android.text.format.Formatter.BytesResult;
|
import android.text.format.Formatter.BytesResult;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility methods for data usage classes.
|
* Utility methods for data usage classes.
|
||||||
*/
|
*/
|
||||||
public final class DataUsageUtils {
|
public final class DataUsageUtils extends com.android.settingslib.net.DataUsageUtils {
|
||||||
static final boolean TEST_RADIOS = false;
|
static final boolean TEST_RADIOS = false;
|
||||||
static final String TEST_RADIOS_PROP = "test.radios";
|
static final String TEST_RADIOS_PROP = "test.radios";
|
||||||
private static final boolean LOGD = false;
|
private static final boolean LOGD = false;
|
||||||
@@ -71,14 +72,14 @@ public final class DataUsageUtils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final TelephonyManager telephonyManager = TelephonyManager.from(context);;
|
final TelephonyManager telephonyManager = TelephonyManager.from(context);
|
||||||
final NetworkStatsManager networkStatsManager =
|
final NetworkStatsManager networkStatsManager =
|
||||||
context.getSystemService(NetworkStatsManager.class);
|
context.getSystemService(NetworkStatsManager.class);
|
||||||
boolean hasEthernetUsage = false;
|
boolean hasEthernetUsage = false;
|
||||||
try {
|
try {
|
||||||
final Bucket bucket = networkStatsManager.querySummaryForUser(
|
final Bucket bucket = networkStatsManager.querySummaryForUser(
|
||||||
ConnectivityManager.TYPE_ETHERNET, telephonyManager.getSubscriberId(),
|
ConnectivityManager.TYPE_ETHERNET, telephonyManager.getSubscriberId(),
|
||||||
0L /* startTime */, System.currentTimeMillis() /* endTime */);
|
0L /* startTime */, System.currentTimeMillis() /* endTime */);
|
||||||
if (bucket != null) {
|
if (bucket != null) {
|
||||||
hasEthernetUsage = bucket.getRxBytes() > 0 || bucket.getTxBytes() > 0;
|
hasEthernetUsage = bucket.getRxBytes() > 0 || bucket.getTxBytes() > 0;
|
||||||
}
|
}
|
||||||
@@ -106,7 +107,7 @@ public final class DataUsageUtils {
|
|||||||
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
|
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
|
||||||
}
|
}
|
||||||
final List<SubscriptionInfo> subInfoList =
|
final List<SubscriptionInfo> subInfoList =
|
||||||
SubscriptionManager.from(context).getActiveSubscriptionInfoList(true);
|
SubscriptionManager.from(context).getActiveSubscriptionInfoList(true);
|
||||||
// No activated Subscriptions
|
// No activated Subscriptions
|
||||||
if (subInfoList == null) {
|
if (subInfoList == null) {
|
||||||
if (LOGD) {
|
if (LOGD) {
|
||||||
@@ -127,9 +128,9 @@ public final class DataUsageUtils {
|
|||||||
final boolean retVal = conn.isNetworkSupported(TYPE_MOBILE) && isReady;
|
final boolean retVal = conn.isNetworkSupported(TYPE_MOBILE) && isReady;
|
||||||
if (LOGD) {
|
if (LOGD) {
|
||||||
Log.d(TAG, "hasReadyMobileRadio:"
|
Log.d(TAG, "hasReadyMobileRadio:"
|
||||||
+ " conn.isNetworkSupported(TYPE_MOBILE)="
|
+ " conn.isNetworkSupported(TYPE_MOBILE)="
|
||||||
+ conn.isNetworkSupported(TYPE_MOBILE)
|
+ conn.isNetworkSupported(TYPE_MOBILE)
|
||||||
+ " isReady=" + isReady);
|
+ " isReady=" + isReady);
|
||||||
}
|
}
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
@@ -180,16 +181,12 @@ public final class DataUsageUtils {
|
|||||||
*/
|
*/
|
||||||
public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) {
|
public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) {
|
||||||
if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||||
TelephonyManager telephonyManager = TelephonyManager.from(context)
|
return getMobileTemplate(context, defaultSubId);
|
||||||
.createForSubscriptionId(defaultSubId);
|
|
||||||
NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
|
|
||||||
telephonyManager.getSubscriberId(defaultSubId));
|
|
||||||
return NetworkTemplate.normalize(mobileAll,
|
|
||||||
telephonyManager.getMergedSubscriberIds());
|
|
||||||
} else if (hasWifiRadio(context)) {
|
} else if (hasWifiRadio(context)) {
|
||||||
return NetworkTemplate.buildTemplateWifiWildcard();
|
return NetworkTemplate.buildTemplateWifiWildcard();
|
||||||
} else {
|
} else {
|
||||||
return NetworkTemplate.buildTemplateEthernet();
|
return NetworkTemplate.buildTemplateEthernet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,9 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
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.when;
|
||||||
|
|
||||||
|
import android.app.usage.NetworkStatsManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
@@ -38,6 +40,8 @@ import java.util.List;
|
|||||||
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.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.Shadows;
|
import org.robolectric.Shadows;
|
||||||
@@ -50,15 +54,20 @@ public class DataUsageSliceTest {
|
|||||||
private static final String DATA_USAGE_TITLE = "Data usage";
|
private static final String DATA_USAGE_TITLE = "Data usage";
|
||||||
private static final String DATA_USAGE_SUMMARY = "test_summary";
|
private static final String DATA_USAGE_SUMMARY = "test_summary";
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NetworkStatsManager mNetworkStatsManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private DataUsageSlice mDataUsageSlice;
|
private DataUsageSlice mDataUsageSlice;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
// Set-up specs for SliceMetadata.
|
// Set-up specs for SliceMetadata.
|
||||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||||
|
when(mContext.getSystemService(NetworkStatsManager.class)).thenReturn(mNetworkStatsManager);
|
||||||
|
|
||||||
mDataUsageSlice = spy(new DataUsageSlice(mContext));
|
mDataUsageSlice = spy(new DataUsageSlice(mContext));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user