Do not use shared preference for disk resizing
Bug: 380771744
Test: Run VmTerminalApp
Change-Id: I9eabe15f7f5c7098ace859314bdbda91498e5669
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index eab737b..97b38a4 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -21,7 +21,6 @@
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
@@ -72,6 +71,7 @@
public class MainActivity extends BaseActivity
implements VmLauncherService.VmLauncherServiceCallback, AccessibilityStateChangeListener {
static final String TAG = "VmTerminalApp";
+ static final String KEY_DISK_SIZE = "disk_size";
private static final String VM_ADDR = "192.168.0.2";
private static final int TTYD_PORT = 7681;
private static final int REQUEST_CODE_INSTALLER = 0x33;
@@ -506,17 +506,11 @@
}
private void resizeDiskIfNecessary(InstalledImage image) {
- String prefKey = getString(R.string.preference_file_key);
- String key = getString(R.string.preference_disk_size_key);
- SharedPreferences sharedPref = this.getSharedPreferences(prefKey, Context.MODE_PRIVATE);
try {
- // Use current size as default value to ensure if its size is multiple of 4096
- long newSize = sharedPref.getLong(key, image.getSize());
- Log.d(TAG, "Resizing disk to " + newSize + " bytes");
- newSize = image.resize(newSize);
- sharedPref.edit().putLong(key, newSize).apply();
+ // TODO(b/382190982): Show snackbar message instead when it's recoverable.
+ image.resize(getIntent().getLongExtra(KEY_DISK_SIZE, image.getSize()));
} catch (IOException e) {
- Log.e(TAG, "Failed to resize disk", e);
+ ErrorActivity.start(this, new Exception("Failed to resize disk", e));
return;
}
}
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt b/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt
index 30475f5..b893d9e 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt
@@ -15,9 +15,7 @@
*/
package com.android.virtualization.terminal
-import android.content.Context
import android.content.Intent
-import android.content.SharedPreferences
import android.icu.text.MeasureFormat
import android.icu.text.NumberFormat
import android.icu.util.Measure
@@ -37,12 +35,12 @@
import java.util.regex.Pattern
class SettingsDiskResizeActivity : AppCompatActivity() {
+ // TODO(b/382191950): Calculate the maxDiskSizeMb based on the device storage usage
private val maxDiskSizeMb: Long = 16 shl 10
private val numberPattern: Pattern = Pattern.compile("[\\d]*[\\٫.,]?[\\d]+")
private var diskSizeStepMb: Long = 0
private var diskSizeMb: Long = 0
- private lateinit var sharedPref: SharedPreferences
private lateinit var buttons: View
private lateinit var cancelButton: View
private lateinit var resizeButton: View
@@ -71,13 +69,8 @@
diskSizeStepMb = 1L shl resources.getInteger(R.integer.disk_size_round_up_step_size_in_mb)
- sharedPref =
- this.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE)
- diskSizeMb =
- bytesToMb(
- sharedPref.getLong(getString(R.string.preference_disk_size_key), /* defValue= */ 0)
- )
val image = InstalledImage.getDefault(this)
+ diskSizeMb = bytesToMb(image.getSize())
val minDiskSizeMb = bytesToMb(image.getSmallestSizePossible()).coerceAtMost(diskSizeMb)
diskSizeText = findViewById<TextView>(R.id.settings_disk_resize_resize_gb_assigned)!!
@@ -139,16 +132,14 @@
.show()
}
- fun resize() {
+ private fun resize() {
diskSizeMb = progressToMb(diskSizeSlider.progress)
buttons.isVisible = false
- val editor = sharedPref.edit()
- editor.putLong(getString(R.string.preference_disk_size_key), mbToBytes(diskSizeMb))
- editor.apply()
// Restart terminal
val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName)
intent?.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+ intent?.putExtra(MainActivity.KEY_DISK_SIZE, mbToBytes(diskSizeMb))
finish()
startActivity(intent)
}
diff --git a/android/TerminalApp/res/values/config.xml b/android/TerminalApp/res/values/config.xml
index 713e1a5..7f0b5e6 100644
--- a/android/TerminalApp/res/values/config.xml
+++ b/android/TerminalApp/res/values/config.xml
@@ -15,8 +15,5 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="preference_file_key" translatable="false">com.android.virtualization.terminal.PREFERENCE_FILE_KEY</string>
- <string name="preference_disk_size_key" translatable="false">PREFERENCE_DISK_SIZE_KEY</string>
-
<bool name="terminal_portrait_only">true</bool>
</resources>