From 2860cf63fdd85a7dda68d0987bbc7976c69efd71 Mon Sep 17 00:00:00 2001 From: Daniel Nishi Date: Mon, 3 Apr 2017 11:26:46 -0700 Subject: [PATCH] Add storage fullness methods to volume provider. This allows us to mock them out for use in unit tests. Fixes: 36858638 Change-Id: I2509d9704b531cf3594790f738aaedb7ed5db443 Test: Thin wrapper is used in Settings unittest --- .../deviceinfo/PrivateStorageInfo.java | 4 ++-- .../deviceinfo/StorageManagerVolumeProvider.java | 11 +++++++++++ .../deviceinfo/StorageVolumeProvider.java | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java index 40abb6c8c2c4c..88f133ce57c21 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java @@ -41,8 +41,8 @@ public class PrivateStorageInfo { long privateTotalBytes = 0; for (VolumeInfo info : sm.getVolumes()) { if (info.getType() == VolumeInfo.TYPE_PRIVATE && info.isMountedReadable()) { - privateTotalBytes += stats.getTotalBytes(info.getFsUuid()); - privateFreeBytes += stats.getFreeBytes(info.getFsUuid()); + privateTotalBytes += sm.getTotalBytes(stats, info); + privateFreeBytes += sm.getFreeBytes(stats, info); } } return new PrivateStorageInfo(privateFreeBytes, privateTotalBytes); diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageManagerVolumeProvider.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageManagerVolumeProvider.java index 320494c68faf9..11060e6c1a055 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageManagerVolumeProvider.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageManagerVolumeProvider.java @@ -16,6 +16,7 @@ package com.android.settingslib.deviceinfo; +import android.app.usage.StorageStatsManager; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; @@ -46,4 +47,14 @@ public class StorageManagerVolumeProvider implements StorageVolumeProvider { public VolumeInfo findEmulatedForPrivate(VolumeInfo privateVolume) { return mStorageManager.findEmulatedForPrivate(privateVolume); } + + @Override + public long getTotalBytes(StorageStatsManager stats, VolumeInfo volume) { + return stats.getTotalBytes(volume.getFsUuid()); + } + + @Override + public long getFreeBytes(StorageStatsManager stats, VolumeInfo volume) { + return stats.getFreeBytes(volume.getFsUuid()); + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageVolumeProvider.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageVolumeProvider.java index 646c42f05a8e1..e5d85d147bee7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageVolumeProvider.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageVolumeProvider.java @@ -16,6 +16,7 @@ package com.android.settingslib.deviceinfo; +import android.app.usage.StorageStatsManager; import android.os.storage.VolumeInfo; import java.util.List; @@ -39,4 +40,18 @@ public interface StorageVolumeProvider { * Returns the emulated volume for a given private volume. */ VolumeInfo findEmulatedForPrivate(VolumeInfo privateVolume); + + /** + * Returns the total bytes for a given storage volume. + * + * @pre The volume is a private volume and is readable. + */ + long getTotalBytes(StorageStatsManager stats, VolumeInfo volume); + + /** + * Returns the free bytes for a given storage volume. + * + * @pre The volume is a private volume and is readable. + */ + long getFreeBytes(StorageStatsManager stats, VolumeInfo volume); }