Add simple null checks to StorageWizard*, also listen to...

the disk destroyed event.

Bug 21336042

Change-Id: I9f53501a6122a4a9046774e3c4c08b5d6d6f8552
This commit is contained in:
Makoto Onuki
2015-06-11 16:16:22 -07:00
parent 0f6b243d4b
commit 1d37d0f7fb
10 changed files with 59 additions and 15 deletions

View File

@@ -20,8 +20,10 @@ import android.app.Activity;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.os.storage.DiskInfo; import android.os.storage.DiskInfo;
import android.os.storage.StorageEventListener;
import android.os.storage.StorageManager; import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo; import android.os.storage.VolumeInfo;
import android.os.storage.VolumeRecord;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
@@ -63,6 +65,10 @@ public abstract class StorageWizardBase extends Activity implements NavigationBa
} }
setTheme(R.style.SuwThemeMaterial_Light); setTheme(R.style.SuwThemeMaterial_Light);
if (mDisk != null) {
mStorage.registerListener(mStorageListener);
}
} }
@Override @Override
@@ -82,6 +88,12 @@ public abstract class StorageWizardBase extends Activity implements NavigationBa
getBackButton().setVisibility(View.GONE); getBackButton().setVisibility(View.GONE);
} }
@Override
protected void onDestroy() {
mStorage.unregisterListener(mStorageListener);
super.onDestroy();
}
protected NavigationBar getNavigationBar() { protected NavigationBar getNavigationBar() {
return (NavigationBar) findViewById(R.id.suw_layout_navigation_bar); return (NavigationBar) findViewById(R.id.suw_layout_navigation_bar);
} }
@@ -142,4 +154,14 @@ public abstract class StorageWizardBase extends Activity implements NavigationBa
} }
return null; return null;
} }
private final StorageEventListener mStorageListener = new StorageEventListener() {
@Override
public void onDiskDestroyed(DiskInfo disk) {
// We know mDisk != null.
if (mDisk.id.equals(disk.id)) {
finish();
}
}
};
} }

View File

@@ -32,10 +32,12 @@ public class StorageWizardFormatConfirm extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mDisk == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_generic); setContentView(R.layout.storage_wizard_generic);
Preconditions.checkNotNull(mDisk);
mFormatPrivate = getIntent().getBooleanExtra(EXTRA_FORMAT_PRIVATE, false); mFormatPrivate = getIntent().getBooleanExtra(EXTRA_FORMAT_PRIVATE, false);
if (mFormatPrivate) { if (mFormatPrivate) {

View File

@@ -44,10 +44,12 @@ public class StorageWizardFormatProgress extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mDisk == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_progress); setContentView(R.layout.storage_wizard_progress);
Preconditions.checkNotNull(mDisk);
mFormatPrivate = getIntent().getBooleanExtra( mFormatPrivate = getIntent().getBooleanExtra(
StorageWizardFormatConfirm.EXTRA_FORMAT_PRIVATE, false); StorageWizardFormatConfirm.EXTRA_FORMAT_PRIVATE, false);

View File

@@ -34,10 +34,12 @@ public class StorageWizardInit extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mDisk == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_init); setContentView(R.layout.storage_wizard_init);
Preconditions.checkNotNull(mDisk);
setHeaderText(R.string.storage_wizard_init_title, mDisk.getDescription()); setHeaderText(R.string.storage_wizard_init_title, mDisk.getDescription());
mRadioExternal = (RadioButton) findViewById(R.id.storage_wizard_init_external_title); mRadioExternal = (RadioButton) findViewById(R.id.storage_wizard_init_external_title);

View File

@@ -35,10 +35,12 @@ public class StorageWizardMigrate extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mDisk == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_migrate); setContentView(R.layout.storage_wizard_migrate);
Preconditions.checkNotNull(mDisk);
setHeaderText(R.string.storage_wizard_migrate_title, mDisk.getDescription()); setHeaderText(R.string.storage_wizard_migrate_title, mDisk.getDescription());
setBodyText(R.string.memory_calculating_size); setBodyText(R.string.memory_calculating_size);

View File

@@ -36,6 +36,11 @@ public class StorageWizardMigrateConfirm extends StorageWizardBase {
mVolume = findFirstVolume(VolumeInfo.TYPE_PRIVATE); mVolume = findFirstVolume(VolumeInfo.TYPE_PRIVATE);
} }
if (mVolume == null) {
finish();
return;
}
final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume(); final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol); final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol);
final String targetDescrip = mStorage.getBestVolumeDescription(mVolume); final String targetDescrip = mStorage.getBestVolumeDescription(mVolume);

View File

@@ -39,10 +39,12 @@ public class StorageWizardMigrateProgress extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mVolume == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_progress); setContentView(R.layout.storage_wizard_progress);
Preconditions.checkNotNull(mVolume);
mMoveId = getIntent().getIntExtra(EXTRA_MOVE_ID, -1); mMoveId = getIntent().getIntExtra(EXTRA_MOVE_ID, -1);
final String descrip = mStorage.getBestVolumeDescription(mVolume); final String descrip = mStorage.getBestVolumeDescription(mVolume);

View File

@@ -36,6 +36,10 @@ public class StorageWizardMoveConfirm extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mVolume == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_generic); setContentView(R.layout.storage_wizard_generic);
try { try {
@@ -45,9 +49,6 @@ public class StorageWizardMoveConfirm extends StorageWizardBase {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
Preconditions.checkNotNull(mVolume);
Preconditions.checkNotNull(mApp);
// Sanity check that target volume is candidate // Sanity check that target volume is candidate
Preconditions.checkState( Preconditions.checkState(
getPackageManager().getPackageCandidateVolumes(mApp).contains(mVolume)); getPackageManager().getPackageCandidateVolumes(mApp).contains(mVolume));

View File

@@ -36,6 +36,10 @@ public class StorageWizardMoveProgress extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mVolume == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_progress); setContentView(R.layout.storage_wizard_progress);
mMoveId = getIntent().getIntExtra(EXTRA_MOVE_ID, -1); mMoveId = getIntent().getIntExtra(EXTRA_MOVE_ID, -1);

View File

@@ -26,10 +26,12 @@ public class StorageWizardReady extends StorageWizardBase {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (mDisk == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_generic); setContentView(R.layout.storage_wizard_generic);
Preconditions.checkNotNull(mDisk);
setHeaderText(R.string.storage_wizard_ready_title, mDisk.getDescription()); setHeaderText(R.string.storage_wizard_ready_title, mDisk.getDescription());
// TODO: handle mixed partition cases instead of just guessing based on // TODO: handle mixed partition cases instead of just guessing based on