wifi data usage: Query wifi usage per configuration

- Updated to use the AllNetworkKeys set instead of NetworkId.

- Fix crash issue when mDataUsageController is not created.

- See b/126299427#comment37 for a screenshot.

Bug: 126299427
Test: manual test
make RunSettingsRoboTests
ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest
make RunSettingsRoboTests
ROBOTEST_FILTER=WifiDetailPreferenceController2Test
make RunSettingsRoboTests
ROBOTEST_FILTER=WifiDataUsageSummaryPreferenceControllerTest

Change-Id: I26289fde1f18d97631448edc71e034d33b865cc4
This commit is contained in:
Weng Su
2022-01-24 23:25:45 +08:00
parent 64e203ad43
commit 0b82d67a04
4 changed files with 114 additions and 19 deletions

View File

@@ -26,23 +26,19 @@ import androidx.preference.PreferenceFragmentCompat;
import com.android.settingslib.core.lifecycle.Lifecycle;
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 String mNetworkId;
final Set<String> mAllNetworkKeys;
public WifiDataUsageSummaryPreferenceController(Activity activity,
Lifecycle lifecycle, PreferenceFragmentCompat fragment, CharSequence networkId) {
public WifiDataUsageSummaryPreferenceController(Activity activity, Lifecycle lifecycle,
PreferenceFragmentCompat fragment, Set<String> allNetworkKeys) {
super(activity, lifecycle, fragment, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
if (networkId == null) {
mNetworkId = null;
} else {
mNetworkId = String.valueOf(networkId);
}
mAllNetworkKeys = new HashSet<>(allNetworkKeys);
}
@Override
@@ -52,10 +48,11 @@ public class WifiDataUsageSummaryPreferenceController extends DataUsageSummaryPr
}
final DataUsageSummaryPreference mPreference = (DataUsageSummaryPreference) preference;
// TODO(b/126299427): Currently gets data usage of whole Wi-Fi networks, but should get
// specified one.
final NetworkTemplate template = new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
.setWifiNetworkKeys(Set.of(mNetworkId)).build();
.setWifiNetworkKeys(mAllNetworkKeys).build();
if (mDataUsageController == null) {
updateConfiguration(mContext, mSubId, getSubscriptionInfo(mSubId));
}
final DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(
template);
mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(template));