DSU enhancement (3/N)
* Expose KEY_ONE_SHOT This allows the device to stay in DynamicSystem mode across reboots until the user decides to exit DSU mode Bug: 277691885 Test: adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ --el KEY_USERDATA_SIZE 2147483648 \ --ez KEY_ENABLE_WHEN_COMPLETED true \ --ez KEY_ONE_SHOT false Change-Id: I8057ebb7af866f9da3ad7836615866642ff93ddb
This commit is contained in:
@@ -224,6 +224,13 @@ public class DynamicSystemClient {
|
||||
*/
|
||||
public static final String KEY_ENABLE_WHEN_COMPLETED = "KEY_ENABLE_WHEN_COMPLETED";
|
||||
|
||||
/**
|
||||
* Intent key: Whether to leave DynamicSystem on device reboot.
|
||||
* False indicates a sticky mode where device stays in DynamicSystem across reboots.
|
||||
* @hide
|
||||
*/
|
||||
public static final String KEY_ONE_SHOT = "KEY_ONE_SHOT";
|
||||
|
||||
private static class IncomingHandler extends Handler {
|
||||
private final WeakReference<DynamicSystemClient> mWeakClient;
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import static android.os.image.DynamicSystemClient.CAUSE_INSTALL_CANCELLED;
|
||||
import static android.os.image.DynamicSystemClient.CAUSE_INSTALL_COMPLETED;
|
||||
import static android.os.image.DynamicSystemClient.CAUSE_NOT_SPECIFIED;
|
||||
import static android.os.image.DynamicSystemClient.KEY_ENABLE_WHEN_COMPLETED;
|
||||
import static android.os.image.DynamicSystemClient.KEY_ONE_SHOT;
|
||||
import static android.os.image.DynamicSystemClient.STATUS_IN_PROGRESS;
|
||||
import static android.os.image.DynamicSystemClient.STATUS_IN_USE;
|
||||
import static android.os.image.DynamicSystemClient.STATUS_NOT_STARTED;
|
||||
@@ -171,6 +172,7 @@ public class DynamicSystemInstallationService extends Service
|
||||
|
||||
// This is for testing only now
|
||||
private boolean mEnableWhenCompleted;
|
||||
private boolean mOneShot;
|
||||
|
||||
private InstallationAsyncTask.Progress mInstallTaskProgress;
|
||||
private InstallationAsyncTask mInstallTask;
|
||||
@@ -317,6 +319,7 @@ public class DynamicSystemInstallationService extends Service
|
||||
long systemSize = intent.getLongExtra(DynamicSystemClient.KEY_SYSTEM_SIZE, 0);
|
||||
long userdataSize = intent.getLongExtra(DynamicSystemClient.KEY_USERDATA_SIZE, 0);
|
||||
mEnableWhenCompleted = intent.getBooleanExtra(KEY_ENABLE_WHEN_COMPLETED, false);
|
||||
mOneShot = intent.getBooleanExtra(KEY_ONE_SHOT, true);
|
||||
String dsuSlot = intent.getStringExtra(KEY_DSU_SLOT);
|
||||
String publicKey = intent.getStringExtra(KEY_PUBKEY);
|
||||
|
||||
@@ -383,9 +386,9 @@ public class DynamicSystemInstallationService extends Service
|
||||
boolean enabled = false;
|
||||
|
||||
if (mInstallTask != null && mInstallTask.isCompleted()) {
|
||||
enabled = mInstallTask.commit();
|
||||
enabled = mInstallTask.commit(mOneShot);
|
||||
} else if (isDynamicSystemInstalled()) {
|
||||
enabled = mDynSystem.setEnable(true, true);
|
||||
enabled = mDynSystem.setEnable(true, mOneShot);
|
||||
} else {
|
||||
Log.e(TAG, "Trying to reboot to AOT while there is no complete installation");
|
||||
return;
|
||||
|
||||
@@ -803,7 +803,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> {
|
||||
return mIsCompleted;
|
||||
}
|
||||
|
||||
boolean commit() {
|
||||
return mDynSystem.setEnable(true, true);
|
||||
boolean commit(boolean oneShot) {
|
||||
return mDynSystem.setEnable(true, oneShot);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user