Change how we calculate system size.
As per storage discussions, the best way to calculate storage for the System is to just take all known data and subtract it from the used bytes. There is more to the system than just the /system partition and, even if we ignore the partitions and use the underlying block device method of calculating it, we run into the problem of it not adding up to the actual device size. Change-Id: I6e1f775ea3f3b8b2cc78d734623934651e2fb7b4 Fixes: 37166310 Test: Robotests
This commit is contained in:
@@ -19,7 +19,6 @@ package com.android.settings.deviceinfo;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.LoaderManager;
|
import android.app.LoaderManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.Loader;
|
import android.content.Loader;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -29,16 +28,11 @@ import android.os.storage.StorageManager;
|
|||||||
import android.os.storage.VolumeInfo;
|
import android.os.storage.VolumeInfo;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.util.Log;
|
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.applications.PackageManagerWrapper;
|
|
||||||
import com.android.settings.applications.PackageManagerWrapperImpl;
|
import com.android.settings.applications.PackageManagerWrapperImpl;
|
||||||
import com.android.settings.applications.UserManagerWrapper;
|
import com.android.settings.applications.UserManagerWrapper;
|
||||||
import com.android.settings.applications.UserManagerWrapperImpl;
|
import com.android.settings.applications.UserManagerWrapperImpl;
|
||||||
@@ -58,7 +52,6 @@ import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class StorageDashboardFragment extends DashboardFragment
|
public class StorageDashboardFragment extends DashboardFragment
|
||||||
implements LoaderManager.LoaderCallbacks<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
|
implements LoaderManager.LoaderCallbacks<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
|
||||||
@@ -101,8 +94,7 @@ public class StorageDashboardFragment extends DashboardFragment
|
|||||||
final long usedBytes = totalSize - mVolume.getPath().getFreeSpace();
|
final long usedBytes = totalSize - mVolume.getPath().getFreeSpace();
|
||||||
mSummaryController.updateBytes(usedBytes, totalSize);
|
mSummaryController.updateBytes(usedBytes, totalSize);
|
||||||
mPreferenceController.setVolume(mVolume);
|
mPreferenceController.setVolume(mVolume);
|
||||||
mPreferenceController.setSystemSize(systemSize);
|
mPreferenceController.setUsedSize(usedBytes);
|
||||||
|
|
||||||
mPreferenceController.setTotalSize(totalSize);
|
mPreferenceController.setTotalSize(totalSize);
|
||||||
for (int i = 0, size = mSecondaryUsers.size(); i < size; i++) {
|
for (int i = 0, size = mSecondaryUsers.size(); i < size; i++) {
|
||||||
PreferenceController controller = mSecondaryUsers.get(i);
|
PreferenceController controller = mSecondaryUsers.get(i);
|
||||||
|
@@ -78,7 +78,7 @@ public class StorageItemPreferenceController extends PreferenceController {
|
|||||||
private final StorageVolumeProvider mSvp;
|
private final StorageVolumeProvider mSvp;
|
||||||
private VolumeInfo mVolume;
|
private VolumeInfo mVolume;
|
||||||
private int mUserId;
|
private int mUserId;
|
||||||
private long mSystemSize;
|
private long mUsedBytes;
|
||||||
private long mTotalSize;
|
private long mTotalSize;
|
||||||
|
|
||||||
private StorageItemPreference mPhotoPreference;
|
private StorageItemPreference mPhotoPreference;
|
||||||
@@ -226,17 +226,29 @@ public class StorageItemPreferenceController extends PreferenceController {
|
|||||||
mGamePreference.setStorageSize(data.gamesSize, mTotalSize);
|
mGamePreference.setStorageSize(data.gamesSize, mTotalSize);
|
||||||
mMoviesPreference.setStorageSize(data.videoAppsSize, mTotalSize);
|
mMoviesPreference.setStorageSize(data.videoAppsSize, mTotalSize);
|
||||||
mAppPreference.setStorageSize(data.otherAppsSize, mTotalSize);
|
mAppPreference.setStorageSize(data.otherAppsSize, mTotalSize);
|
||||||
if (mSystemPreference != null) {
|
|
||||||
mSystemPreference.setStorageSize(mSystemSize + data.systemSize, mTotalSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
long unattributedBytes = data.externalStats.totalBytes - data.externalStats.audioBytes
|
long unattributedExternalBytes =
|
||||||
- data.externalStats.videoBytes - data.externalStats.imageBytes;
|
data.externalStats.totalBytes
|
||||||
mFilePreference.setStorageSize(unattributedBytes, mTotalSize);
|
- data.externalStats.audioBytes
|
||||||
|
- data.externalStats.videoBytes
|
||||||
|
- data.externalStats.imageBytes;
|
||||||
|
mFilePreference.setStorageSize(unattributedExternalBytes, mTotalSize);
|
||||||
|
|
||||||
|
// We define the system size as everything we can't classify.
|
||||||
|
if (mSystemPreference != null) {
|
||||||
|
mSystemPreference.setStorageSize(
|
||||||
|
mUsedBytes
|
||||||
|
- data.externalStats.totalBytes
|
||||||
|
- data.musicAppsSize
|
||||||
|
- data.gamesSize
|
||||||
|
- data.videoAppsSize
|
||||||
|
- data.otherAppsSize,
|
||||||
|
mTotalSize);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSystemSize(long systemSizeBytes) {
|
public void setUsedSize(long usedSizeBytes) {
|
||||||
mSystemSize = systemSizeBytes;
|
mUsedBytes = usedSizeBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTotalSize(long totalSizeBytes) {
|
public void setTotalSize(long totalSizeBytes) {
|
||||||
|
@@ -242,21 +242,19 @@ public class StorageItemPreferenceControllerTest {
|
|||||||
eq(StorageItemPreferenceController.FILES_KEY))).thenReturn(files);
|
eq(StorageItemPreferenceController.FILES_KEY))).thenReturn(files);
|
||||||
mController.displayPreference(screen);
|
mController.displayPreference(screen);
|
||||||
|
|
||||||
mController.setSystemSize(KILOBYTE * 6);
|
mController.setUsedSize(KILOBYTE * 200); // There should 87kB attributed.
|
||||||
StorageAsyncLoader.AppsStorageResult result = new StorageAsyncLoader.AppsStorageResult();
|
StorageAsyncLoader.AppsStorageResult result = new StorageAsyncLoader.AppsStorageResult();
|
||||||
result.gamesSize = KILOBYTE * 8;
|
result.gamesSize = KILOBYTE * 8;
|
||||||
result.videoAppsSize = KILOBYTE * 16;
|
result.videoAppsSize = KILOBYTE * 16;
|
||||||
result.musicAppsSize = KILOBYTE * 4;
|
result.musicAppsSize = KILOBYTE * 4;
|
||||||
result.otherAppsSize = KILOBYTE * 9;
|
result.otherAppsSize = KILOBYTE * 9;
|
||||||
result.systemSize = KILOBYTE * 10;
|
result.systemSize = KILOBYTE * 10; // This value is ignored and overriden now.
|
||||||
result.externalStats = new StorageStatsSource.ExternalStorageStats(
|
result.externalStats = new StorageStatsSource.ExternalStorageStats(
|
||||||
KILOBYTE * 50, // total
|
KILOBYTE * 50, // total
|
||||||
KILOBYTE * 10, // audio
|
KILOBYTE * 10, // audio
|
||||||
KILOBYTE * 15, // video
|
KILOBYTE * 15, // video
|
||||||
KILOBYTE * 20); // image
|
KILOBYTE * 20); // image
|
||||||
|
|
||||||
result.gamesSize = KILOBYTE * 8;
|
|
||||||
result.otherAppsSize = KILOBYTE * 9;
|
|
||||||
mController.onLoadFinished(result);
|
mController.onLoadFinished(result);
|
||||||
|
|
||||||
assertThat(audio.getSummary().toString()).isEqualTo("14.00KB"); // 4KB apps + 10KB files
|
assertThat(audio.getSummary().toString()).isEqualTo("14.00KB"); // 4KB apps + 10KB files
|
||||||
@@ -264,7 +262,7 @@ public class StorageItemPreferenceControllerTest {
|
|||||||
assertThat(games.getSummary().toString()).isEqualTo("8.00KB");
|
assertThat(games.getSummary().toString()).isEqualTo("8.00KB");
|
||||||
assertThat(movies.getSummary().toString()).isEqualTo("16.00KB");
|
assertThat(movies.getSummary().toString()).isEqualTo("16.00KB");
|
||||||
assertThat(apps.getSummary().toString()).isEqualTo("9.00KB");
|
assertThat(apps.getSummary().toString()).isEqualTo("9.00KB");
|
||||||
assertThat(system.getSummary().toString()).isEqualTo("16.00KB");
|
assertThat(system.getSummary().toString()).isEqualTo("113KB");
|
||||||
assertThat(files.getSummary().toString()).isEqualTo("5.00KB");
|
assertThat(files.getSummary().toString()).isEqualTo("5.00KB");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user