Handle missing migration source volume.

Users can try migrating primary storage while the current location
is missing/unmounted.  Fail gracefully instead of runtime restarting.

Bug: 21927076
Change-Id: I54b92487faf9e62d5d309734bf4c436a9259d156
diff --git a/src/com/android/settings/deviceinfo/MigrateEstimateTask.java b/src/com/android/settings/deviceinfo/MigrateEstimateTask.java
index 34a44ac..f959ef3 100644
--- a/src/com/android/settings/deviceinfo/MigrateEstimateTask.java
+++ b/src/com/android/settings/deviceinfo/MigrateEstimateTask.java
@@ -81,6 +81,11 @@
         final VolumeInfo privateVol = mContext.getPackageManager().getPrimaryStorageCurrentVolume();
         final VolumeInfo emulatedVol = mStorage.findEmulatedForPrivate(privateVol);
 
+        if (emulatedVol == null) {
+            Log.w(TAG, "Failed to find current primary storage");
+            return -1L;
+        }
+
         final String path = emulatedVol.getPath().getAbsolutePath();
         Log.d(TAG, "Estimating for current path " + path);
 
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
index 607cc6f..9439d94 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
@@ -16,10 +16,13 @@
 
 package com.android.settings.deviceinfo;
 
+import static com.android.settings.deviceinfo.StorageSettings.TAG;
+
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.os.storage.VolumeInfo;
+import android.util.Log;
 
 import com.android.settings.R;
 
@@ -36,12 +39,13 @@
             mVolume = findFirstVolume(VolumeInfo.TYPE_PRIVATE);
         }
 
-        if (mVolume == null) {
+        final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
+        if (sourceVol == null || mVolume == null) {
+            Log.d(TAG, "Missing either source or target volume");
             finish();
             return;
         }
 
-        final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
         final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol);
         final String targetDescrip = mStorage.getBestVolumeDescription(mVolume);