Not use SubscriptionInfoEntity in DataUsageList
Carrier id will be get in DataUsageListAppsController async. Bug: 348118234 Flag: EXEMPT clean up Test: manual - on DataUsageList Change-Id: I06b361f38d04c5020431cd8c6e359aa3a69942e5
This commit is contained in:
@@ -33,13 +33,10 @@ import com.android.settings.R
|
|||||||
import com.android.settings.dashboard.DashboardFragment
|
import com.android.settings.dashboard.DashboardFragment
|
||||||
import com.android.settings.datausage.lib.BillingCycleRepository
|
import com.android.settings.datausage.lib.BillingCycleRepository
|
||||||
import com.android.settings.datausage.lib.NetworkUsageData
|
import com.android.settings.datausage.lib.NetworkUsageData
|
||||||
import com.android.settings.network.MobileNetworkRepository
|
|
||||||
import com.android.settings.network.SubscriptionUtil
|
import com.android.settings.network.SubscriptionUtil
|
||||||
import com.android.settings.network.telephony.requireSubscriptionManager
|
import com.android.settings.network.telephony.SubscriptionRepository
|
||||||
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity
|
|
||||||
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
||||||
import com.android.settingslib.spaprivileged.framework.common.userManager
|
import com.android.settingslib.spaprivileged.framework.common.userManager
|
||||||
import com.android.settingslib.utils.ThreadUtils
|
|
||||||
import kotlin.jvm.optionals.getOrNull
|
import kotlin.jvm.optionals.getOrNull
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -59,7 +56,6 @@ open class DataUsageList : DashboardFragment() {
|
|||||||
private lateinit var billingCycleRepository: BillingCycleRepository
|
private lateinit var billingCycleRepository: BillingCycleRepository
|
||||||
|
|
||||||
private var usageAmount: Preference? = null
|
private var usageAmount: Preference? = null
|
||||||
private var subscriptionInfoEntity: SubscriptionInfoEntity? = null
|
|
||||||
private var dataUsageListAppsController: DataUsageListAppsController? = null
|
private var dataUsageListAppsController: DataUsageListAppsController? = null
|
||||||
private var chartDataUsagePreferenceController: ChartDataUsagePreferenceController? = null
|
private var chartDataUsagePreferenceController: ChartDataUsagePreferenceController? = null
|
||||||
private var dataUsageListHeaderController: DataUsageListHeaderController? = null
|
private var dataUsageListHeaderController: DataUsageListHeaderController? = null
|
||||||
@@ -90,7 +86,6 @@ open class DataUsageList : DashboardFragment() {
|
|||||||
finish()
|
finish()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
updateSubscriptionInfoEntity()
|
|
||||||
dataUsageListAppsController = use(DataUsageListAppsController::class.java).apply {
|
dataUsageListAppsController = use(DataUsageListAppsController::class.java).apply {
|
||||||
init(template)
|
init(template)
|
||||||
}
|
}
|
||||||
@@ -132,6 +127,16 @@ open class DataUsageList : DashboardFragment() {
|
|||||||
viewModel.chartDataFlow.collectLatestWithLifecycle(viewLifecycleOwner) { chartData ->
|
viewModel.chartDataFlow.collectLatestWithLifecycle(viewLifecycleOwner) { chartData ->
|
||||||
chartDataUsagePreferenceController?.update(chartData)
|
chartDataUsagePreferenceController?.update(chartData)
|
||||||
}
|
}
|
||||||
|
finishIfSubscriptionDisabled()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun finishIfSubscriptionDisabled() {
|
||||||
|
if (SubscriptionManager.isUsableSubscriptionId(subId)) {
|
||||||
|
SubscriptionRepository(requireContext()).isSubscriptionEnabledFlow(subId)
|
||||||
|
.collectLatestWithLifecycle(viewLifecycleOwner) { isSubscriptionEnabled ->
|
||||||
|
if (!isSubscriptionEnabled) finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPreferenceScreenResId() = R.xml.data_usage_list
|
override fun getPreferenceScreenResId() = R.xml.data_usage_list
|
||||||
@@ -155,23 +160,12 @@ open class DataUsageList : DashboardFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateSubscriptionInfoEntity() {
|
|
||||||
ThreadUtils.postOnBackgroundThread {
|
|
||||||
subscriptionInfoEntity =
|
|
||||||
MobileNetworkRepository.getInstance(context).getSubInfoById(subId.toString())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Update chart sweeps and cycle list to reflect [NetworkPolicy] for current [template]. */
|
/** Update chart sweeps and cycle list to reflect [NetworkPolicy] for current [template]. */
|
||||||
private fun updatePolicy(isModifiable: Boolean) {
|
private fun updatePolicy(isModifiable: Boolean) {
|
||||||
val isBillingCycleModifiable = isModifiable && isActiveSubscription()
|
dataUsageListHeaderController?.setConfigButtonVisible(isModifiable)
|
||||||
dataUsageListHeaderController?.setConfigButtonVisible(isBillingCycleModifiable)
|
chartDataUsagePreferenceController?.setBillingCycleModifiable(isModifiable)
|
||||||
chartDataUsagePreferenceController?.setBillingCycleModifiable(isBillingCycleModifiable)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isActiveSubscription(): Boolean =
|
|
||||||
requireContext().requireSubscriptionManager().getActiveSubscriptionInfo(subId) != null
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the chart and detail data when initial loaded or selected cycle changed.
|
* Updates the chart and detail data when initial loaded or selected cycle changed.
|
||||||
*/
|
*/
|
||||||
@@ -187,7 +181,7 @@ open class DataUsageList : DashboardFragment() {
|
|||||||
/** Updates applications data usage. */
|
/** Updates applications data usage. */
|
||||||
private fun updateApps(usageData: NetworkUsageData) {
|
private fun updateApps(usageData: NetworkUsageData) {
|
||||||
dataUsageListAppsController?.update(
|
dataUsageListAppsController?.update(
|
||||||
carrierId = subscriptionInfoEntity?.carrierId,
|
subId = subId,
|
||||||
startTime = usageData.startTime,
|
startTime = usageData.startTime,
|
||||||
endTime = usageData.endTime,
|
endTime = usageData.endTime,
|
||||||
)
|
)
|
||||||
|
@@ -20,6 +20,7 @@ import android.app.ActivityManager
|
|||||||
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.telephony.SubscriptionManager
|
||||||
import androidx.annotation.OpenForTesting
|
import androidx.annotation.OpenForTesting
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
import androidx.lifecycle.LifecycleCoroutineScope
|
import androidx.lifecycle.LifecycleCoroutineScope
|
||||||
@@ -32,6 +33,7 @@ import com.android.settings.core.BasePreferenceController
|
|||||||
import com.android.settings.core.SubSettingLauncher
|
import com.android.settings.core.SubSettingLauncher
|
||||||
import com.android.settings.datausage.lib.AppDataUsageRepository
|
import com.android.settings.datausage.lib.AppDataUsageRepository
|
||||||
import com.android.settings.datausage.lib.NetworkUsageData
|
import com.android.settings.datausage.lib.NetworkUsageData
|
||||||
|
import com.android.settings.network.telephony.requireSubscriptionManager
|
||||||
import com.android.settingslib.AppItem
|
import com.android.settingslib.AppItem
|
||||||
import com.android.settingslib.net.UidDetailProvider
|
import com.android.settingslib.net.UidDetailProvider
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -74,8 +76,11 @@ open class DataUsageListAppsController(context: Context, preferenceKey: String)
|
|||||||
this.cycleData = cycleData
|
this.cycleData = cycleData
|
||||||
}
|
}
|
||||||
|
|
||||||
fun update(carrierId: Int?, startTime: Long, endTime: Long) = lifecycleScope.launch {
|
fun update(subId: Int, startTime: Long, endTime: Long) = lifecycleScope.launch {
|
||||||
val apps = withContext(Dispatchers.Default) {
|
val apps = withContext(Dispatchers.Default) {
|
||||||
|
val carrierId = if (SubscriptionManager.isValidSubscriptionId(subId)) {
|
||||||
|
mContext.requireSubscriptionManager().getActiveSubscriptionInfo(subId)?.carrierId
|
||||||
|
} else null
|
||||||
repository.getAppPercent(carrierId, startTime, endTime).map { (appItem, percent) ->
|
repository.getAppPercent(carrierId, startTime, endTime).map { (appItem, percent) ->
|
||||||
AppDataUsagePreference(mContext, appItem, percent, uidDetailProvider).apply {
|
AppDataUsagePreference(mContext, appItem, percent, uidDetailProvider).apply {
|
||||||
setOnPreferenceClickListener {
|
setOnPreferenceClickListener {
|
||||||
|
@@ -36,6 +36,7 @@ import android.os.PowerManager;
|
|||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.EventLog;
|
import android.util.EventLog;
|
||||||
@@ -370,7 +371,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE);
|
mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE);
|
||||||
mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext()));
|
mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext()));
|
||||||
mDataUsagePreference.setTemplate(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
|
mDataUsagePreference.setTemplate(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
|
||||||
.build(), 0 /*subId*/);
|
.build(), SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
mResetInternetPreference = findPreference(PREF_KEY_RESET_INTERNET);
|
mResetInternetPreference = findPreference(PREF_KEY_RESET_INTERNET);
|
||||||
if (mResetInternetPreference != null) {
|
if (mResetInternetPreference != null) {
|
||||||
mResetInternetPreference.setVisible(false);
|
mResetInternetPreference.setVisible(false);
|
||||||
|
@@ -51,6 +51,7 @@ import android.os.Bundle;
|
|||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@@ -319,7 +320,8 @@ public class NetworkProviderSettingsTest {
|
|||||||
mNetworkProviderSettings.onCreate(Bundle.EMPTY);
|
mNetworkProviderSettings.onCreate(Bundle.EMPTY);
|
||||||
|
|
||||||
verify(mDataUsagePreference).setVisible(true);
|
verify(mDataUsagePreference).setVisible(true);
|
||||||
verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/);
|
verify(mDataUsagePreference)
|
||||||
|
.setTemplate(any(), eq(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user