Create AppDataUsageListController

For better organization and testings.

Bug: 240931350
Test: manual - on AppDataUsage
Test: unit test
Change-Id: I77ceeccc7055fcd948fe40d5dfb9cc4a9b9ad2ee
This commit is contained in:
Chaohui Wang
2023-09-28 16:54:38 +08:00
parent ec39446b76
commit b19eb9a4c2
10 changed files with 358 additions and 242 deletions

View File

@@ -60,6 +60,7 @@ import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.AppItem;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedSwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.net.NetworkCycleDataForUid;
import com.android.settingslib.net.NetworkCycleDataForUidLoader;
import com.android.settingslib.net.UidDetail;
@@ -109,10 +110,7 @@ public class AppDataUsageTest {
@Test
@Config(shadows = ShadowFragment.class)
public void onCreate_appUid_shouldGetAppLabelFromAppInfo() throws NameNotFoundException {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
final FragmentActivity activity = spy(Robolectric.setupActivity(FragmentActivity.class));
doReturn(mPackageManager).when(activity).getPackageManager();
doReturn(activity).when(mFragment).getActivity();
@@ -142,10 +140,7 @@ public class AppDataUsageTest {
@Test
@Config(shadows = ShadowFragment.class)
public void onCreate_notAppUid_shouldGetAppLabelFromUidDetailProvider() {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider",
FakeFeatureFactory.setupForTest().dashboardFeatureProvider);
doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity();
@@ -172,10 +167,7 @@ public class AppDataUsageTest {
@Test
public void bindAppHeader_allWorkApps_shouldNotShowAppInfoLink() {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
when(mFragment.getPreferenceManager())
.thenReturn(mock(PreferenceManager.class, RETURNS_DEEP_STUBS));
@@ -192,10 +184,7 @@ public class AppDataUsageTest {
throws PackageManager.NameNotFoundException {
final int fakeUserId = 100;
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
final ArraySet<String> packages = new ArraySet<>();
packages.add("pkg");
final AppItem appItem = new AppItem(123456789);
@@ -221,10 +210,7 @@ public class AppDataUsageTest {
@Test
public void changePreference_backgroundData_shouldUpdateUI() {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
final AppItem appItem = new AppItem(123456789);
final RestrictedSwitchPreference pref = mock(RestrictedSwitchPreference.class);
final DataSaverBackend dataSaverBackend = mock(DataSaverBackend.class);
@@ -241,10 +227,7 @@ public class AppDataUsageTest {
@Test
public void updatePrefs_restrictedByAdmin_shouldDisablePreference() {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
final int testUid = 123123;
final AppItem appItem = new AppItem(testUid);
final RestrictedSwitchPreference restrictBackgroundPref
@@ -272,10 +255,7 @@ public class AppDataUsageTest {
@Test
public void bindData_noAppUsageData_shouldHideCycleSpinner() {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
final SpinnerPreference cycle = mock(SpinnerPreference.class);
ReflectionHelpers.setField(mFragment, "mCycle", cycle);
final Preference preference = mock(Preference.class);
@@ -291,10 +271,7 @@ public class AppDataUsageTest {
@Test
public void bindData_hasAppUsageData_shouldShowCycleSpinnerAndUpdateUsageSummary() {
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
final Context context = RuntimeEnvironment.application;
ReflectionHelpers.setField(mFragment, "mContext", context);
final long backgroundBytes = 1234L;
@@ -323,10 +300,7 @@ public class AppDataUsageTest {
@Test
public void onCreateLoader_categoryApp_shouldQueryDataUsageUsingAppKey() {
mFragment = new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
};
mFragment = new TestFragment();
final Context context = RuntimeEnvironment.application;
final int testUid = 123123;
final AppItem appItem = new AppItem(testUid);
@@ -349,10 +323,7 @@ public class AppDataUsageTest {
@Test
public void onCreateLoader_categoryUser_shouldQueryDataUsageUsingAssociatedUids() {
mFragment = new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
};
mFragment = new TestFragment();
final Context context = RuntimeEnvironment.application;
final int testUserId = 11;
final AppItem appItem = new AppItem(testUserId);
@@ -389,10 +360,7 @@ public class AppDataUsageTest {
appItem.category = AppItem.CATEGORY_APP;
appItem.addUid(uid);
mFragment = new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
};
mFragment = new TestFragment();
ReflectionHelpers.setField(mFragment, "mContext", RuntimeEnvironment.application);
ReflectionHelpers.setField(mFragment, "mCycles", testCycles);
ReflectionHelpers.setField(mFragment, "mAppItem", appItem);
@@ -425,10 +393,7 @@ public class AppDataUsageTest {
builder.setStartTime(tenDaysAgo).setEndTime(now).setTotalUsage(1234L);
data.add(builder.build());
mFragment = new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
};
mFragment = new TestFragment();
ReflectionHelpers.setField(mFragment, "mContext", RuntimeEnvironment.application);
ReflectionHelpers.setField(mFragment, "mCycleAdapter", mock(CycleAdapter.class));
ReflectionHelpers.setField(mFragment, "mSelectedCycle", tenDaysAgo);
@@ -455,10 +420,7 @@ public class AppDataUsageTest {
ShadowDataUsageUtils.HAS_SIM = false;
ShadowSubscriptionManager.setDefaultDataSubscriptionId(
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mFragment = spy(new AppDataUsage() {
@Override
public boolean isSimHardwareVisible(Context context) { return true; }
});
mFragment = spy(new TestFragment());
doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity();
doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
final UidDetailProvider uidDetailProvider = mock(UidDetailProvider.class);
@@ -478,4 +440,16 @@ public class AppDataUsageTest {
assertTrue(mFragment.mTemplate.getSubscriberIds().isEmpty());
assertTrue(mFragment.mTemplate.getWifiNetworkKeys().isEmpty());
}
private static class TestFragment extends AppDataUsage {
@Override
protected <T extends AbstractPreferenceController> T use(Class<T> clazz) {
return mock(clazz);
}
@Override
public boolean isSimHardwareVisible(Context context) {
return true;
}
}
}