Loading core/java/android/os/image/DynamicSystemManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -106,9 +106,9 @@ public class DynamicSystemManager { * @return true if the call succeeds */ @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean startInstallation() { public boolean startInstallation(String dsuSlot) { try { return mService.startInstallation(); return mService.startInstallation(dsuSlot); } catch (RemoteException e) { throw new RuntimeException(e.toString()); } Loading core/java/android/os/image/IDynamicSystemService.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -22,9 +22,10 @@ interface IDynamicSystemService { /** * Start DynamicSystem installation. * @param dsuSlot Name used to identify this installation * @return true if the call succeeds */ boolean startInstallation(); boolean startInstallation(@utf8InCpp String dsuSlot); /** * Create a DSU partition. This call may take 60~90 seconds. The caller Loading packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java +10 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.image.DynamicSystemClient; import android.os.image.DynamicSystemManager; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; Loading @@ -74,6 +75,8 @@ public class DynamicSystemInstallationService extends Service // TODO (b/131866826): This is currently for test only. Will move this to System API. static final String KEY_ENABLE_WHEN_COMPLETED = "KEY_ENABLE_WHEN_COMPLETED"; static final String KEY_DSU_SLOT = "KEY_DSU_SLOT"; static final String DEFAULT_DSU_SLOT = "dsu"; /* * Intent actions Loading Loading @@ -244,10 +247,15 @@ 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); String dsuSlot = intent.getStringExtra(KEY_DSU_SLOT); if (TextUtils.isEmpty(dsuSlot)) { dsuSlot = DEFAULT_DSU_SLOT; } // TODO: better constructor or builder mInstallTask = new InstallationAsyncTask( url, systemSize, userdataSize, this, mDynSystem, this); mInstallTask = new InstallationAsyncTask( url, dsuSlot, systemSize, userdataSize, this, mDynSystem, this); mInstallTask.execute(); Loading packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java +19 −4 Original line number Diff line number Diff line Loading @@ -89,10 +89,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog interface ProgressListener { void onProgressUpdate(Progress progress); void onResult(int resultCode, Throwable detail); } private final String mUrl; private final String mDsuSlot; private final long mSystemSize; private final long mUserdataSize; private final Context mContext; Loading @@ -106,9 +108,16 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog private InputStream mStream; private ZipFile mZipFile; InstallationAsyncTask(String url, long systemSize, long userdataSize, Context context, DynamicSystemManager dynSystem, ProgressListener listener) { InstallationAsyncTask( String url, String dsuSlot, long systemSize, long userdataSize, Context context, DynamicSystemManager dynSystem, ProgressListener listener) { mUrl = url; mDsuSlot = dsuSlot; mSystemSize = systemSize; mUserdataSize = userdataSize; mContext = context; Loading @@ -126,14 +135,17 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog verifyAndPrepare(); mDynSystem.startInstallation(); mDynSystem.startInstallation(mDsuSlot); installUserdata(); if (isCancelled()) { mDynSystem.remove(); return null; } if (mUrl == null) { mDynSystem.finishInstallation(); return null; } installImages(); if (isCancelled()) { mDynSystem.remove(); Loading Loading @@ -194,6 +206,9 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog } private void verifyAndPrepare() throws Exception { if (mUrl == null) { return; } String extension = mUrl.substring(mUrl.lastIndexOf('.') + 1); if ("gz".equals(extension) || "gzip".equals(extension)) { Loading packages/DynamicSystemInstallationService/src/com/android/dynsystem/VerificationActivity.java +9 −6 Original line number Diff line number Diff line Loading @@ -28,11 +28,9 @@ import android.os.image.DynamicSystemClient; import android.util.FeatureFlagUtils; import android.util.Log; /** * This Activity starts KeyguardManager and ask the user to confirm * before any installation request. If the device is not protected by * a password, it approves the request by default. * This Activity starts KeyguardManager and ask the user to confirm before any installation request. * If the device is not protected by a password, it approves the request by default. */ public class VerificationActivity extends Activity { Loading Loading @@ -88,11 +86,15 @@ public class VerificationActivity extends Activity { Uri url = callingIntent.getData(); Bundle extras = callingIntent.getExtras(); if (url != null) { sVerifiedUrl = url.toString(); } // start service Intent intent = new Intent(this, DynamicSystemInstallationService.class); if (url != null) { intent.setData(url); } intent.setAction(DynamicSystemClient.ACTION_START_INSTALL); intent.putExtras(extras); Loading @@ -106,6 +108,7 @@ public class VerificationActivity extends Activity { } static boolean isVerified(String url) { if (url == null) return true; return sVerifiedUrl != null && sVerifiedUrl.equals(url); } } Loading
core/java/android/os/image/DynamicSystemManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -106,9 +106,9 @@ public class DynamicSystemManager { * @return true if the call succeeds */ @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean startInstallation() { public boolean startInstallation(String dsuSlot) { try { return mService.startInstallation(); return mService.startInstallation(dsuSlot); } catch (RemoteException e) { throw new RuntimeException(e.toString()); } Loading
core/java/android/os/image/IDynamicSystemService.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -22,9 +22,10 @@ interface IDynamicSystemService { /** * Start DynamicSystem installation. * @param dsuSlot Name used to identify this installation * @return true if the call succeeds */ boolean startInstallation(); boolean startInstallation(@utf8InCpp String dsuSlot); /** * Create a DSU partition. This call may take 60~90 seconds. The caller Loading
packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java +10 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.image.DynamicSystemClient; import android.os.image.DynamicSystemManager; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; Loading @@ -74,6 +75,8 @@ public class DynamicSystemInstallationService extends Service // TODO (b/131866826): This is currently for test only. Will move this to System API. static final String KEY_ENABLE_WHEN_COMPLETED = "KEY_ENABLE_WHEN_COMPLETED"; static final String KEY_DSU_SLOT = "KEY_DSU_SLOT"; static final String DEFAULT_DSU_SLOT = "dsu"; /* * Intent actions Loading Loading @@ -244,10 +247,15 @@ 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); String dsuSlot = intent.getStringExtra(KEY_DSU_SLOT); if (TextUtils.isEmpty(dsuSlot)) { dsuSlot = DEFAULT_DSU_SLOT; } // TODO: better constructor or builder mInstallTask = new InstallationAsyncTask( url, systemSize, userdataSize, this, mDynSystem, this); mInstallTask = new InstallationAsyncTask( url, dsuSlot, systemSize, userdataSize, this, mDynSystem, this); mInstallTask.execute(); Loading
packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java +19 −4 Original line number Diff line number Diff line Loading @@ -89,10 +89,12 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog interface ProgressListener { void onProgressUpdate(Progress progress); void onResult(int resultCode, Throwable detail); } private final String mUrl; private final String mDsuSlot; private final long mSystemSize; private final long mUserdataSize; private final Context mContext; Loading @@ -106,9 +108,16 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog private InputStream mStream; private ZipFile mZipFile; InstallationAsyncTask(String url, long systemSize, long userdataSize, Context context, DynamicSystemManager dynSystem, ProgressListener listener) { InstallationAsyncTask( String url, String dsuSlot, long systemSize, long userdataSize, Context context, DynamicSystemManager dynSystem, ProgressListener listener) { mUrl = url; mDsuSlot = dsuSlot; mSystemSize = systemSize; mUserdataSize = userdataSize; mContext = context; Loading @@ -126,14 +135,17 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog verifyAndPrepare(); mDynSystem.startInstallation(); mDynSystem.startInstallation(mDsuSlot); installUserdata(); if (isCancelled()) { mDynSystem.remove(); return null; } if (mUrl == null) { mDynSystem.finishInstallation(); return null; } installImages(); if (isCancelled()) { mDynSystem.remove(); Loading Loading @@ -194,6 +206,9 @@ class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Prog } private void verifyAndPrepare() throws Exception { if (mUrl == null) { return; } String extension = mUrl.substring(mUrl.lastIndexOf('.') + 1); if ("gz".equals(extension) || "gzip".equals(extension)) { Loading
packages/DynamicSystemInstallationService/src/com/android/dynsystem/VerificationActivity.java +9 −6 Original line number Diff line number Diff line Loading @@ -28,11 +28,9 @@ import android.os.image.DynamicSystemClient; import android.util.FeatureFlagUtils; import android.util.Log; /** * This Activity starts KeyguardManager and ask the user to confirm * before any installation request. If the device is not protected by * a password, it approves the request by default. * This Activity starts KeyguardManager and ask the user to confirm before any installation request. * If the device is not protected by a password, it approves the request by default. */ public class VerificationActivity extends Activity { Loading Loading @@ -88,11 +86,15 @@ public class VerificationActivity extends Activity { Uri url = callingIntent.getData(); Bundle extras = callingIntent.getExtras(); if (url != null) { sVerifiedUrl = url.toString(); } // start service Intent intent = new Intent(this, DynamicSystemInstallationService.class); if (url != null) { intent.setData(url); } intent.setAction(DynamicSystemClient.ACTION_START_INSTALL); intent.putExtras(extras); Loading @@ -106,6 +108,7 @@ public class VerificationActivity extends Activity { } static boolean isVerified(String url) { if (url == null) return true; return sVerifiedUrl != null && sVerifiedUrl.equals(url); } }