Merge "Fix storage settings crash." into oc-dev
This commit is contained in:
@@ -117,7 +117,7 @@ public class StorageDashboardFragment extends DashboardFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
getLoaderManager().initLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
|
getLoaderManager().restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
|
||||||
getLoaderManager().initLoader(ICON_JOB_ID, Bundle.EMPTY, new IconLoaderCallbacks());
|
getLoaderManager().initLoader(ICON_JOB_ID, Bundle.EMPTY, new IconLoaderCallbacks());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -79,8 +79,15 @@ public class StorageAsyncLoader
|
|||||||
UserHandle myUser = UserHandle.of(userId);
|
UserHandle myUser = UserHandle.of(userId);
|
||||||
for (int i = 0, size = applicationInfos.size(); i < size; i++) {
|
for (int i = 0, size = applicationInfos.size(); i < size; i++) {
|
||||||
ApplicationInfo app = applicationInfos.get(i);
|
ApplicationInfo app = applicationInfos.get(i);
|
||||||
StorageStatsSource.AppStorageStats stats =
|
|
||||||
mStatsManager.getStatsForPackage(mUuid, app.packageName, myUser);
|
StorageStatsSource.AppStorageStats stats;
|
||||||
|
try {
|
||||||
|
stats = mStatsManager.getStatsForPackage(mUuid, app.packageName, myUser);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
// This may happen if the package was removed during our calculation.
|
||||||
|
Log.w("App unexpectedly not found", e);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
long attributedAppSizeInBytes = stats.getDataBytes();
|
long attributedAppSizeInBytes = stats.getDataBytes();
|
||||||
// This matches how the package manager calculates sizes -- by zeroing out code sizes of
|
// This matches how the package manager calculates sizes -- by zeroing out code sizes of
|
||||||
|
@@ -180,6 +180,20 @@ public class StorageAsyncLoaderTest {
|
|||||||
assertThat(result.get(PRIMARY_USER_ID).otherAppsSize).isEqualTo(0);
|
assertThat(result.get(PRIMARY_USER_ID).otherAppsSize).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRemovedPackageDoesNotCrash() throws Exception {
|
||||||
|
ApplicationInfo info = new ApplicationInfo();
|
||||||
|
info.packageName = PACKAGE_NAME_1;
|
||||||
|
info.category = ApplicationInfo.CATEGORY_UNDEFINED;
|
||||||
|
mInfo.add(info);
|
||||||
|
when(mSource.getStatsForPackage(anyString(), anyString(), any(UserHandle.class)))
|
||||||
|
.thenThrow(new IllegalStateException());
|
||||||
|
|
||||||
|
SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
|
||||||
|
|
||||||
|
// Should not crash.
|
||||||
|
}
|
||||||
|
|
||||||
private ApplicationInfo addPackage(
|
private ApplicationInfo addPackage(
|
||||||
String packageName, long cacheSize, long codeSize, long dataSize, int category) {
|
String packageName, long cacheSize, long codeSize, long dataSize, int category) {
|
||||||
StorageStatsSource.AppStorageStats storageStats =
|
StorageStatsSource.AppStorageStats storageStats =
|
||||||
|
Reference in New Issue
Block a user