Merge "Fix crash when measuring storage." into oc-dev am: a6bd937c93
am: fcf746b27c

Change-Id: I0166afbce7f3c058680ac5cb5dd025455d387625
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
index 953dda2..60e10a1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
@@ -151,8 +151,15 @@
         final MeasurementDetails details = new MeasurementDetails();
         if (mVolume == null) return details;
 
-        details.totalSize = mStats.getTotalBytes(mVolume.fsUuid);
-        details.availSize = mStats.getFreeBytes(mVolume.fsUuid);
+        try {
+            details.totalSize = mStats.getTotalBytes(mVolume.fsUuid);
+            details.availSize = mStats.getFreeBytes(mVolume.fsUuid);
+        } catch (IllegalStateException e) {
+            // The storage volume became null while we were measuring it.
+            Log.w(TAG, e);
+            return details;
+        }
+
 
         final long finishTotal = SystemClock.elapsedRealtime();
         Log.d(TAG, "Measured total storage in " + (finishTotal - start) + "ms");
diff --git a/services/usage/java/com/android/server/usage/StorageStatsService.java b/services/usage/java/com/android/server/usage/StorageStatsService.java
index 3f39e4f..5ad7f80 100644
--- a/services/usage/java/com/android/server/usage/StorageStatsService.java
+++ b/services/usage/java/com/android/server/usage/StorageStatsService.java
@@ -162,6 +162,9 @@
             return FileUtils.roundStorageSize(mStorage.getPrimaryStorageSize());
         } else {
             final VolumeInfo vol = mStorage.findVolumeByUuid(volumeUuid);
+            if (vol == null) {
+                throw new IllegalStateException("Volume was unexpected null");
+            }
             return FileUtils.roundStorageSize(vol.disk.size);
         }
     }
@@ -185,6 +188,9 @@
             return Environment.getDataDirectory().getUsableSpace() + cacheBytes;
         } else {
             final VolumeInfo vol = mStorage.findVolumeByUuid(volumeUuid);
+            if (vol == null) {
+                throw new IllegalStateException("Volume was unexpected null");
+            }
             return vol.getPath().getUsableSpace() + cacheBytes;
         }
     }