diff options
-rw-r--r-- | Android.bp | 2 | ||||
-rw-r--r-- | api/system-current.txt | 57 | ||||
-rw-r--r-- | config/boot-image-profile.txt | 11 | ||||
-rw-r--r-- | config/preloaded-classes | 3 | ||||
-rw-r--r-- | core/java/android/app/SystemServiceRegistry.java | 16 | ||||
-rw-r--r-- | core/java/android/content/Context.java | 5 | ||||
-rw-r--r-- | core/java/android/os/image/DynamicSystemClient.java (renamed from core/java/android/content/DynamicAndroidClient.java) | 120 | ||||
-rw-r--r-- | core/java/android/os/image/DynamicSystemManager.java (renamed from core/java/android/os/DynamicAndroidManager.java) | 57 | ||||
-rw-r--r-- | core/java/android/os/image/IDynamicSystemService.aidl (renamed from core/java/android/os/IDynamicAndroidService.aidl) | 14 | ||||
-rw-r--r-- | core/java/android/util/FeatureFlagUtils.java | 2 | ||||
-rw-r--r-- | core/res/AndroidManifest.xml | 4 | ||||
-rw-r--r-- | data/etc/privapp-permissions-platform.xml | 4 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/Android.mk (renamed from packages/DynamicAndroidInstallationService/Android.mk) | 2 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/AndroidManifest.xml (renamed from packages/DynamicAndroidInstallationService/AndroidManifest.xml) | 18 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/MODULE_LICENSE_APACHE2 (renamed from packages/DynamicAndroidInstallationService/MODULE_LICENSE_APACHE2) | 0 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/NOTICE (renamed from packages/DynamicAndroidInstallationService/NOTICE) | 0 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/res/drawable/ic_system_update_googblue_24dp.xml (renamed from packages/DynamicAndroidInstallationService/res/drawable/ic_system_update_googblue_24dp.xml) | 0 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/res/values/strings.xml (renamed from packages/DynamicAndroidInstallationService/res/values/strings.xml) | 18 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java (renamed from packages/DynamicAndroidInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java) | 10 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java (renamed from packages/DynamicAndroidInstallationService/src/com/android/dynandroid/DynamicAndroidInstallationService.java) | 132 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java (renamed from packages/DynamicAndroidInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java) | 22 | ||||
-rw-r--r-- | packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java (renamed from packages/DynamicAndroidInstallationService/src/com/android/dynandroid/VerificationActivity.java) | 14 | ||||
-rw-r--r-- | services/art-profile | 10 | ||||
-rw-r--r-- | services/core/java/com/android/server/DynamicSystemService.java (renamed from services/core/java/com/android/server/DynamicAndroidService.java) | 14 | ||||
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 8 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/DynamicSystemServiceTest.java (renamed from services/tests/servicestests/src/com/android/server/DynamicAndroidServiceTest.java) | 16 |
26 files changed, 304 insertions, 255 deletions
diff --git a/Android.bp b/Android.bp index c571fa0e5cfc..93788ee7be1e 100644 --- a/Android.bp +++ b/Android.bp @@ -248,7 +248,6 @@ java_defaults { "core/java/android/os/ICancellationSignal.aidl", "core/java/android/os/IDeviceIdentifiersPolicyService.aidl", "core/java/android/os/IDeviceIdleController.aidl", - "core/java/android/os/IDynamicAndroidService.aidl", "core/java/android/os/IHardwarePropertiesManager.aidl", ":libincident_aidl", "core/java/android/os/IMaintenanceActivityListener.aidl", @@ -272,6 +271,7 @@ java_defaults { "core/java/android/os/IUserManager.aidl", ":libvibrator_aidl", "core/java/android/os/IVibratorService.aidl", + "core/java/android/os/image/IDynamicSystemService.aidl", "core/java/android/os/storage/IStorageManager.aidl", "core/java/android/os/storage/IStorageEventListener.aidl", "core/java/android/os/storage/IStorageShutdownObserver.aidl", diff --git a/api/system-current.txt b/api/system-current.txt index 0154e282775c..32ddab9e8f04 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1349,7 +1349,6 @@ package android.content { field public static final String BACKUP_SERVICE = "backup"; field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions"; field public static final String CONTEXTHUB_SERVICE = "contexthub"; - field public static final String DYNAMIC_ANDROID_SERVICE = "dynamic_android"; field public static final String EUICC_CARD_SERVICE = "euicc_card"; field public static final String HDMI_CONTROL_SERVICE = "hdmi_control"; field public static final String NETD_SERVICE = "netd"; @@ -1376,32 +1375,6 @@ package android.content { method public void sendOrderedBroadcast(android.content.Intent, String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle); } - public class DynamicAndroidClient { - ctor public DynamicAndroidClient(@NonNull android.content.Context); - method public void bind(); - method public void setOnStatusChangedListener(@NonNull android.content.DynamicAndroidClient.OnStatusChangedListener, @NonNull java.util.concurrent.Executor); - method public void setOnStatusChangedListener(@NonNull android.content.DynamicAndroidClient.OnStatusChangedListener); - method public void start(String, long); - method public void start(String, long, long); - method public void unbind(); - field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6 - field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4 - field public static final int CAUSE_ERROR_IO = 3; // 0x3 - field public static final int CAUSE_ERROR_IPC = 5; // 0x5 - field public static final int CAUSE_INSTALL_CANCELLED = 2; // 0x2 - field public static final int CAUSE_INSTALL_COMPLETED = 1; // 0x1 - field public static final int CAUSE_NOT_SPECIFIED = 0; // 0x0 - field public static final int STATUS_IN_PROGRESS = 2; // 0x2 - field public static final int STATUS_IN_USE = 4; // 0x4 - field public static final int STATUS_NOT_STARTED = 1; // 0x1 - field public static final int STATUS_READY = 3; // 0x3 - field public static final int STATUS_UNKNOWN = 0; // 0x0 - } - - public static interface DynamicAndroidClient.OnStatusChangedListener { - method public void onStatusChanged(int, int, long); - } - public class Intent implements java.lang.Cloneable android.os.Parcelable { field public static final String ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED"; field public static final String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY"; @@ -5662,6 +5635,36 @@ package android.os { } +package android.os.image { + + public class DynamicSystemClient { + ctor public DynamicSystemClient(@NonNull android.content.Context); + method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void bind(); + method public void setOnStatusChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener); + method public void setOnStatusChangedListener(@NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener); + method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void start(@NonNull String, long); + method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void start(@NonNull String, long, long); + method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void unbind(); + field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6 + field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4 + field public static final int CAUSE_ERROR_IO = 3; // 0x3 + field public static final int CAUSE_ERROR_IPC = 5; // 0x5 + field public static final int CAUSE_INSTALL_CANCELLED = 2; // 0x2 + field public static final int CAUSE_INSTALL_COMPLETED = 1; // 0x1 + field public static final int CAUSE_NOT_SPECIFIED = 0; // 0x0 + field public static final int STATUS_IN_PROGRESS = 2; // 0x2 + field public static final int STATUS_IN_USE = 4; // 0x4 + field public static final int STATUS_NOT_STARTED = 1; // 0x1 + field public static final int STATUS_READY = 3; // 0x3 + field public static final int STATUS_UNKNOWN = 0; // 0x0 + } + + public static interface DynamicSystemClient.OnStatusChangedListener { + method public void onStatusChanged(int, int, long); + } + +} + package android.os.storage { public class StorageManager { diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt index d740961cac2a..a3776c4b4d32 100644 --- a/config/boot-image-profile.txt +++ b/config/boot-image-profile.txt @@ -4759,7 +4759,6 @@ HPLandroid/os/IDeviceIdleController$Stub$Proxy;->addPowerSaveTempWhitelistAppFor HPLandroid/os/IDeviceIdleController$Stub$Proxy;->addPowerSaveTempWhitelistAppForSms(Ljava/lang/String;ILjava/lang/String;)J HPLandroid/os/IDeviceIdleController$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HPLandroid/os/IDeviceIdleController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -HPLandroid/os/IDynamicAndroidService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/os/IHardwarePropertiesManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HPLandroid/os/IHardwarePropertiesManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/os/IInstalld$Stub$Proxy;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V @@ -5081,6 +5080,7 @@ HPLandroid/os/health/HealthStatsWriter;->writeLongsMap(Landroid/os/Parcel;Landro HPLandroid/os/health/HealthStatsWriter;->writeParcelableMap(Landroid/os/Parcel;Landroid/util/ArrayMap;)V HPLandroid/os/health/TimerStat;-><init>(IJ)V HPLandroid/os/health/TimerStat;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/image/IDynamicSystemService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HPLandroid/os/storage/IStorageManager$Stub$Proxy;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V HPLandroid/os/storage/IStorageManager$Stub$Proxy;->changeEncryptionPassword(ILjava/lang/String;)I @@ -24027,7 +24027,6 @@ HSPLandroid/os/IDeviceIdleController$Stub$Proxy;->isPowerSaveWhitelistApp(Ljava/ HSPLandroid/os/IDeviceIdleController$Stub;-><init>()V HSPLandroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController; HSPLandroid/os/IDumpstate$Stub;-><init>()V -HSPLandroid/os/IDynamicAndroidService$Stub;-><init>()V HSPLandroid/os/IExternalVibratorService$Stub;-><init>()V HSPLandroid/os/IHardwarePropertiesManager$Stub;-><init>()V HSPLandroid/os/IIncidentCompanion$Stub;-><init>()V @@ -24837,6 +24836,7 @@ HSPLandroid/os/ZygoteProcess;->waitForConnectionToZygote(Ljava/lang/String;)V HSPLandroid/os/ZygoteProcess;->zygoteSendArgsAndGetResult(Landroid/os/ZygoteProcess$ZygoteState;ZLjava/util/ArrayList;)Landroid/os/Process$ProcessStartResult; HSPLandroid/os/health/HealthStatsParceler$1;-><init>()V HSPLandroid/os/health/TimerStat$1;-><init>()V +HSPLandroid/os/image/IDynamicSystemService$Stub;-><init>()V HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/storage/IStorageEventListener$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume; @@ -47386,7 +47386,6 @@ Landroid/os/DeviceIdleManager; Landroid/os/DropBoxManager$Entry$1; Landroid/os/DropBoxManager$Entry; Landroid/os/DropBoxManager; -Landroid/os/DynamicAndroidManager; Landroid/os/Environment$UserEnvironment; Landroid/os/Environment; Landroid/os/EventLogTags; @@ -47428,8 +47427,6 @@ Landroid/os/IDeviceIdleController$Stub; Landroid/os/IDeviceIdleController; Landroid/os/IDumpstate$Stub; Landroid/os/IDumpstate; -Landroid/os/IDynamicAndroidService$Stub; -Landroid/os/IDynamicAndroidService; Landroid/os/IExternalVibratorService$Stub; Landroid/os/IExternalVibratorService; Landroid/os/IHardwarePropertiesManager$Stub; @@ -47689,6 +47686,10 @@ Landroid/os/health/HealthStatsWriter; Landroid/os/health/SystemHealthManager; Landroid/os/health/TimerStat$1; Landroid/os/health/TimerStat; +Landroid/os/image/DynamicSystemClient; +Landroid/os/image/DynamicSystemManager; +Landroid/os/image/IDynamicSystemService$Stub; +Landroid/os/image/IDynamicSystemService; Landroid/os/storage/DiskInfo; Landroid/os/storage/IObbActionListener$Stub; Landroid/os/storage/IObbActionListener; diff --git a/config/preloaded-classes b/config/preloaded-classes index fda028de33f3..abdbab2a29eb 100644 --- a/config/preloaded-classes +++ b/config/preloaded-classes @@ -2724,7 +2724,6 @@ android.os.DeviceIdleManager android.os.DropBoxManager$Entry$1 android.os.DropBoxManager$Entry android.os.DropBoxManager -android.os.DynamicAndroidManager android.os.Environment$UserEnvironment android.os.Environment android.os.EventLogTags @@ -2909,6 +2908,8 @@ android.os.health.HealthStatsParceler android.os.health.SystemHealthManager android.os.health.TimerStat$1 android.os.health.TimerStat +android.os.image.DynamicSystemClient +android.os.image.DynamicSystemManager android.os.storage.IObbActionListener$Stub android.os.storage.IObbActionListener android.os.storage.IStorageManager$Stub$Proxy diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 4d280b76b3fa..d67bfb6c9c84 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -131,13 +131,11 @@ import android.os.BugreportManager; import android.os.Build; import android.os.DeviceIdleManager; import android.os.DropBoxManager; -import android.os.DynamicAndroidManager; import android.os.HardwarePropertiesManager; import android.os.IBatteryPropertiesRegistrar; import android.os.IBinder; import android.os.IDeviceIdleController; import android.os.IDumpstate; -import android.os.IDynamicAndroidService; import android.os.IHardwarePropertiesManager; import android.os.IPowerManager; import android.os.IRecoverySystem; @@ -155,6 +153,8 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.Vibrator; import android.os.health.SystemHealthManager; +import android.os.image.DynamicSystemManager; +import android.os.image.IDynamicSystemService; import android.os.storage.StorageManager; import android.permission.PermissionControllerManager; import android.permission.PermissionManager; @@ -1275,15 +1275,15 @@ final class SystemServiceRegistry { IRollbackManager.Stub.asInterface(b)); }}); - registerService(Context.DYNAMIC_ANDROID_SERVICE, DynamicAndroidManager.class, - new CachedServiceFetcher<DynamicAndroidManager>() { + registerService(Context.DYNAMIC_SYSTEM_SERVICE, DynamicSystemManager.class, + new CachedServiceFetcher<DynamicSystemManager>() { @Override - public DynamicAndroidManager createService(ContextImpl ctx) + public DynamicSystemManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( - Context.DYNAMIC_ANDROID_SERVICE); - return new DynamicAndroidManager( - IDynamicAndroidService.Stub.asInterface(b)); + Context.DYNAMIC_SYSTEM_SERVICE); + return new DynamicSystemManager( + IDynamicSystemService.Stub.asInterface(b)); }}); //CHECKSTYLE:ON IndentationCheck } diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index fb933b1a7163..310e506f13c6 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -4644,11 +4644,10 @@ public abstract class Context { /** * Use with {@link #getSystemService(String)} to retrieve an - * {@link android.os.DynamicAndroidManager}. + * {@link android.os.image.DynamicSystemManager}. * @hide */ - @SystemApi - public static final String DYNAMIC_ANDROID_SERVICE = "dynamic_android"; + public static final String DYNAMIC_SYSTEM_SERVICE = "dynamic_system"; /** * Determine whether the given permission is allowed for a particular diff --git a/core/java/android/content/DynamicAndroidClient.java b/core/java/android/os/image/DynamicSystemClient.java index 571cba429ea9..33a6ee888d0a 100644 --- a/core/java/android/content/DynamicAndroidClient.java +++ b/core/java/android/os/image/DynamicSystemClient.java @@ -13,12 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.content; +package android.os.image; +import android.annotation.BytesLong; import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -34,12 +40,28 @@ import java.lang.ref.WeakReference; import java.util.concurrent.Executor; /** - * This class contains methods and constants used to start DynamicAndroid - * installation, and a listener for progress update. + * <p>This class contains methods and constants used to start a {@code DynamicSystem} installation, + * and a listener for status updates.</p> + * + * <p>{@code DynamicSystem} allows user to run certified system images in a non destructive manner + * without needing to prior OEM unlock. While running in {@code DynamicSystem}, persitent storage + * for factory reset protection (FRP) remains unchanged. The new system is installed in a + * temporarily allocated partition. After the installation is completed, the device will be running + * in the new system on next reboot. Then, when the user reboots the device again, it will leave + * {@code DynamicSystem} and go back into the original system. Since the userdata for + * {@code DynamicSystem} is also newly created during the installation, running in + * {@code DynamicSystem} doesn't change user's app data.</p> + * + * <p>With {@link #setOnStatusChangedListener}, API users can register an + * {@link #OnStatusChangedListener} and get status updates and cause when the installation is + * started, stopped, or cancelled. It also sends progress updates during the installation. With + * {@link #start}, API users can start an installation with the {@link Uri} to a gzipped system + * image. The {@link Uri} can be a web URL or a content Uri to a local path.</p> + * * @hide */ @SystemApi -public class DynamicAndroidClient { +public class DynamicSystemClient { /** @hide */ @IntDef(prefix = { "STATUS_" }, value = { STATUS_UNKNOWN, @@ -64,23 +86,23 @@ public class DynamicAndroidClient { @Retention(RetentionPolicy.SOURCE) public @interface StatusChangedCause {} - private static final String TAG = "DynAndroidClient"; + private static final String TAG = "DynSystemClient"; private static final long DEFAULT_USERDATA_SIZE = (10L << 30); - /** Listener for installation status update. */ + /** Listener for installation status updates. */ public interface OnStatusChangedListener { /** * This callback is called when installation status is changed, and when the - * client is {@link #bind} to DynamicAndroid installation service. + * client is {@link #bind} to {@code DynamicSystem} installation service. * - * @param status status code, also defined in {@code DynamicAndroidClient}. - * @param cause cause code, also defined in {@code DynamicAndroidClient}. + * @param status status code, also defined in {@code DynamicSystemClient}. + * @param cause cause code, also defined in {@code DynamicSystemClient}. * @param progress number of bytes installed. */ void onStatusChanged(@InstallationStatus int status, @StatusChangedCause int cause, - long progress); + @BytesLong long progress); } /* @@ -98,7 +120,7 @@ public class DynamicAndroidClient { /** Installation is finished but the user has not launched it. */ public static final int STATUS_READY = 3; - /** Device is running in Dynamic Android. */ + /** Device is running in {@code DynamicSystem}. */ public static final int STATUS_IN_USE = 4; /* @@ -113,7 +135,7 @@ public class DynamicAndroidClient { /** Status changed because installation is cancelled. */ public static final int CAUSE_INSTALL_CANCELLED = 2; - /** Installation failed due to IOException. */ + /** Installation failed due to {@code IOException}. */ public static final int CAUSE_ERROR_IO = 3; /** Installation failed because the image URL source is not supported. */ @@ -141,7 +163,7 @@ public class DynamicAndroidClient { public static final int MSG_UNREGISTER_LISTENER = 2; /** - * Message for status update. + * Message for status updates. * @hide */ public static final int MSG_POST_STATUS = 3; @@ -150,7 +172,7 @@ public class DynamicAndroidClient { * Messages keys */ /** - * Message key, for progress update. + * Message key, for progress updates. * @hide */ public static final String KEY_INSTALLED_SIZE = "KEY_INSTALLED_SIZE"; @@ -163,14 +185,14 @@ public class DynamicAndroidClient { * @hide */ public static final String ACTION_START_INSTALL = - "android.content.action.START_INSTALL"; + "android.os.image.action.START_INSTALL"; /** - * Intent action: notify user if we are currently running in Dynamic Android. + * Intent action: notify user if we are currently running in {@code DynamicSystem}. * @hide */ public static final String ACTION_NOTIFY_IF_IN_USE = - "android.content.action.NOTIFY_IF_IN_USE"; + "android.os.image.action.NOTIFY_IF_IN_USE"; /* * Intent Keys @@ -195,16 +217,16 @@ public class DynamicAndroidClient { private static class IncomingHandler extends Handler { - private final WeakReference<DynamicAndroidClient> mWeakClient; + private final WeakReference<DynamicSystemClient> mWeakClient; - IncomingHandler(DynamicAndroidClient service) { + IncomingHandler(DynamicSystemClient service) { super(Looper.getMainLooper()); mWeakClient = new WeakReference<>(service); } @Override public void handleMessage(Message msg) { - DynamicAndroidClient service = mWeakClient.get(); + DynamicSystemClient service = mWeakClient.get(); if (service != null) { service.handleMessage(msg); @@ -212,9 +234,9 @@ public class DynamicAndroidClient { } } - private class DynAndroidServiceConnection implements ServiceConnection { + private class DynSystemServiceConnection implements ServiceConnection { public void onServiceConnected(ComponentName className, IBinder service) { - Slog.v(TAG, "DynAndroidService connected"); + Slog.v(TAG, "DynSystemService connected"); mService = new Messenger(service); @@ -232,13 +254,13 @@ public class DynamicAndroidClient { } public void onServiceDisconnected(ComponentName className) { - Slog.v(TAG, "DynAndroidService disconnected"); + Slog.v(TAG, "DynSystemService disconnected"); mService = null; } } private final Context mContext; - private final DynAndroidServiceConnection mConnection; + private final DynSystemServiceConnection mConnection; private final Messenger mMessenger; private boolean mBound; @@ -247,12 +269,16 @@ public class DynamicAndroidClient { private Messenger mService; /** + * Create a new {@code DynamicSystem} client. + * + * @param context a {@link Context} will be used to bind the installation service. + * * @hide */ @SystemApi - public DynamicAndroidClient(@NonNull Context context) { + public DynamicSystemClient(@NonNull Context context) { mContext = context; - mConnection = new DynAndroidServiceConnection(); + mConnection = new DynSystemServiceConnection(); mMessenger = new Messenger(new IncomingHandler(this)); } @@ -261,8 +287,8 @@ public class DynamicAndroidClient { * the executor. */ public void setOnStatusChangedListener( - @NonNull OnStatusChangedListener listener, - @NonNull @CallbackExecutor Executor executor) { + @NonNull @CallbackExecutor Executor executor, + @NonNull OnStatusChangedListener listener) { mListener = listener; mExecutor = executor; } @@ -278,12 +304,15 @@ public class DynamicAndroidClient { } /** - * Bind to DynamicAndroidInstallationService. + * Bind to {@code DynamicSystem} installation service. Binding to the installation service + * allows it to send status updates to {@link #OnStatusChangedListener}. It is recommanded + * to bind before calling {@link #start} and get status updates. */ + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public void bind() { Intent intent = new Intent(); - intent.setClassName("com.android.dynandroid", - "com.android.dynandroid.DynamicAndroidInstallationService"); + intent.setClassName("com.android.dynsystem", + "com.android.dynsystem.DynamicSystemInstallationService"); mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); @@ -291,8 +320,10 @@ public class DynamicAndroidClient { } /** - * Unbind from DynamicAndroidInstallationService. + * Unbind from {@code DynamicSystem} installation service. Unbinding from the installation + * service stops it from sending following status updates. */ + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public void unbind() { if (!mBound) { return; @@ -315,27 +346,40 @@ public class DynamicAndroidClient { } /** - * Start installing DynamicAndroid from URL with default userdata size. + * Start installing {@code DynamicSystem} from URL with default userdata size. + * + * Calling this function will first start an Activity to confirm device credential, using + * {@link KeyguardManager}. If it's confirmed, the installation service will be started. + * + * This function doesn't require prior calling {@link #bind}. * * @param systemUrl A network URL or a file URL to system image. * @param systemSize size of system image. */ - public void start(String systemUrl, long systemSize) { + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) + public void start(@NonNull String systemUrl, @BytesLong long systemSize) { start(systemUrl, systemSize, DEFAULT_USERDATA_SIZE); } /** - * Start installing DynamicAndroid from URL. + * Start installing {@code DynamicSystem} from URL. + * + * Calling this function will first start an Activity to confirm device credential, using + * {@link KeyguardManager}. If it's confirmed, the installation service will be started. + * + * This function doesn't require prior calling {@link #bind}. * * @param systemUrl A network URL or a file URL to system image. * @param systemSize size of system image. * @param userdataSize bytes reserved for userdata. */ - public void start(String systemUrl, long systemSize, long userdataSize) { + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) + public void start(@NonNull String systemUrl, @BytesLong long systemSize, + @BytesLong long userdataSize) { Intent intent = new Intent(); - intent.setClassName("com.android.dynandroid", - "com.android.dynandroid.VerificationActivity"); + intent.setClassName("com.android.dynsystem", + "com.android.dynsystem.VerificationActivity"); intent.setAction(ACTION_START_INSTALL); diff --git a/core/java/android/os/DynamicAndroidManager.java b/core/java/android/os/image/DynamicSystemManager.java index 5238896016ee..0458c2a8b735 100644 --- a/core/java/android/os/DynamicAndroidManager.java +++ b/core/java/android/os/image/DynamicSystemManager.java @@ -14,50 +14,51 @@ * limitations under the License. */ -package android.os; +package android.os.image; import android.annotation.RequiresPermission; import android.annotation.SystemService; import android.content.Context; import android.gsi.GsiProgress; +import android.os.RemoteException; /** - * The DynamicAndroidManager offers a mechanism to use a new Android image temporarily. After the + * The DynamicSystemManager offers a mechanism to use a new system image temporarily. After the * installation, the device can reboot into this image with a new created /data. This image will * last until the next reboot and then the device will go back to the original image. However the * installed image and the new created /data are not deleted but disabled. Thus the application can * either re-enable the installed image by calling {@link #toggle} or use the {@link #remove} to * delete it completely. In other words, there are three device states: no installation, installed - * and running. The procedure to install a DynamicAndroid starts with a {@link #startInstallation}, + * and running. The procedure to install a DynamicSystem starts with a {@link #startInstallation}, * followed by a series of {@link #write} and ends with a {@link commit}. Once the installation is * complete, the device state changes from no installation to the installed state and a followed - * reboot will change its state to running. Note one instance of dynamic android can exist on a - * given device thus the {@link #startInstallation} will fail if the device is currently running a - * DynamicAndroid. + * reboot will change its state to running. Note one instance of DynamicSystem can exist on a given + * device thus the {@link #startInstallation} will fail if the device is currently running a + * DynamicSystem. * * @hide */ -@SystemService(Context.DYNAMIC_ANDROID_SERVICE) -public class DynamicAndroidManager { - private static final String TAG = "DynamicAndroidManager"; +@SystemService(Context.DYNAMIC_SYSTEM_SERVICE) +public class DynamicSystemManager { + private static final String TAG = "DynamicSystemManager"; - private final IDynamicAndroidService mService; + private final IDynamicSystemService mService; /** {@hide} */ - public DynamicAndroidManager(IDynamicAndroidService service) { + public DynamicSystemManager(IDynamicSystemService service) { mService = service; } - /** The DynamicAndroidManager.Session represents a started session for the installation. */ + /** The DynamicSystemManager.Session represents a started session for the installation. */ public class Session { private Session() {} /** - * Write a chunk of the DynamicAndroid system image + * Write a chunk of the DynamicSystem system image * * @return {@code true} if the call succeeds. {@code false} if there is any native runtime * error. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean write(byte[] buf) { try { return mService.write(buf); @@ -72,7 +73,7 @@ public class DynamicAndroidManager { * @return {@code true} if the call succeeds. {@code false} if there is any native runtime * error. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean commit() { try { return mService.commit(); @@ -82,16 +83,16 @@ public class DynamicAndroidManager { } } /** - * Start DynamicAndroid installation. This call may take an unbounded amount of time. The caller + * Start DynamicSystem installation. This call may take an unbounded amount of time. The caller * may use another thread to call the getStartProgress() to get the progress. * * @param systemSize system size in bytes * @param userdataSize userdata size in bytes * @return {@code true} if the call succeeds. {@code false} either the device does not contain - * enough space or a DynamicAndroid is currently in use where the {@link #isInUse} would be + * enough space or a DynamicSystem is currently in use where the {@link #isInUse} would be * true. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public Session startInstallation(long systemSize, long userdataSize) { try { if (mService.startInstallation(systemSize, userdataSize)) { @@ -112,7 +113,7 @@ public class DynamicAndroidManager { * status field can be IGsiService.STATUS_NO_OPERATION, IGsiService.STATUS_WORKING or * IGsiService.STATUS_COMPLETE. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public GsiProgress getInstallationProgress() { try { return mService.getInstallationProgress(); @@ -129,7 +130,7 @@ public class DynamicAndroidManager { * @return {@code true} if the call succeeds. {@code false} if there is no installation * currently. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean abort() { try { return mService.abort(); @@ -138,8 +139,8 @@ public class DynamicAndroidManager { } } - /** @return {@code true} if the device is running a dynamic android */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + /** @return {@code true} if the device is running a dynamic system */ + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean isInUse() { try { return mService.isInUse(); @@ -148,8 +149,8 @@ public class DynamicAndroidManager { } } - /** @return {@code true} if the device has a dynamic android installed */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + /** @return {@code true} if the device has a dynamic system installed */ + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean isInstalled() { try { return mService.isInstalled(); @@ -159,11 +160,11 @@ public class DynamicAndroidManager { } /** - * Remove DynamicAndroid installation if present + * Remove DynamicSystem installation if present * * @return {@code true} if the call succeeds. {@code false} if there is no installed image. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean remove() { try { return mService.remove(); @@ -173,11 +174,11 @@ public class DynamicAndroidManager { } /** - * Enable DynamicAndroid when it's not enabled, otherwise, disable it. + * Enable DynamicSystem when it's not enabled, otherwise, disable it. * * @return {@code true} if the call succeeds. {@code false} if there is no installed image. */ - @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) public boolean toggle() { try { return mService.toggle(); diff --git a/core/java/android/os/IDynamicAndroidService.aidl b/core/java/android/os/image/IDynamicSystemService.aidl index 0b28799c8dd0..15f5b68e354b 100644 --- a/core/java/android/os/IDynamicAndroidService.aidl +++ b/core/java/android/os/image/IDynamicSystemService.aidl @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.os; +package android.os.image; import android.gsi.GsiProgress; /** {@hide} */ -interface IDynamicAndroidService +interface IDynamicSystemService { /** - * Start DynamicAndroid installation. This call may take 60~90 seconds. The caller + * Start DynamicSystem installation. This call may take 60~90 seconds. The caller * may use another thread to call the getStartProgress() to get the progress. * * @param systemSize system size in bytes @@ -53,26 +53,26 @@ interface IDynamicAndroidService boolean isInUse(); /** - * @return true if the device has an DynamicAndroid image installed + * @return true if the device has an DynamicSystem image installed */ boolean isInstalled(); /** - * Remove DynamicAndroid installation if present + * Remove DynamicSystem installation if present * * @return true if the call succeeds */ boolean remove(); /** - * Enable DynamicAndroid when it's not enabled, otherwise, disable it. + * Enable DynamicSystem when it's not enabled, otherwise, disable it. * * @return true if the call succeeds */ boolean toggle(); /** - * Write a chunk of the DynamicAndroid system image + * Write a chunk of the DynamicSystem system image * * @return true if the call succeeds */ diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index de10ffb80bee..04bb0e3b50e2 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -52,7 +52,7 @@ public class FeatureFlagUtils { DEFAULT_FLAGS.put("settings_slice_injection", "true"); DEFAULT_FLAGS.put("settings_systemui_theme", "true"); DEFAULT_FLAGS.put("settings_mainline_module", "true"); - DEFAULT_FLAGS.put("settings_dynamic_android", "false"); + DEFAULT_FLAGS.put("settings_dynamic_system", "false"); DEFAULT_FLAGS.put(SEAMLESS_TRANSFER, "false"); DEFAULT_FLAGS.put(HEARING_AID_SETTINGS, "false"); DEFAULT_FLAGS.put(SAFETY_HUB, "false"); diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 5427147aa32a..e944eeb4180d 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1849,8 +1849,8 @@ <permission android:name="android.permission.HARDWARE_TEST" android:protectionLevel="signature" /> - <!-- @hide Allows an application to manage DynamicAndroid image --> - <permission android:name="android.permission.MANAGE_DYNAMIC_ANDROID" + <!-- @hide Allows an application to manage DynamicSystem image --> + <permission android:name="android.permission.MANAGE_DYNAMIC_SYSTEM" android:protectionLevel="signature" /> <!-- @SystemApi Allows access to Broadcast Radio diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index fcd5d566f250..8b0ac78da921 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -329,9 +329,9 @@ applications that come with the platform <permission name="android.permission.CONTROL_VPN"/> </privapp-permissions> - <privapp-permissions package="com.android.dynandroid"> + <privapp-permissions package="com.android.dynsystem"> <permission name="android.permission.REBOOT"/> - <permission name="android.permission.MANAGE_DYNAMIC_ANDROID"/> + <permission name="android.permission.MANAGE_DYNAMIC_SYSTEM"/> </privapp-permissions> </permissions> diff --git a/packages/DynamicAndroidInstallationService/Android.mk b/packages/DynamicSystemInstallationService/Android.mk index 13d96ac3906e..16aca1bd07c5 100644 --- a/packages/DynamicAndroidInstallationService/Android.mk +++ b/packages/DynamicSystemInstallationService/Android.mk @@ -8,7 +8,7 @@ LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, res) LOCAL_USE_AAPT2 := true -LOCAL_PACKAGE_NAME := DynamicAndroidInstallationService +LOCAL_PACKAGE_NAME := DynamicSystemInstallationService LOCAL_CERTIFICATE := platform LOCAL_PRIVILEGED_MODULE := true LOCAL_PRIVATE_PLATFORM_APIS := true diff --git a/packages/DynamicAndroidInstallationService/AndroidManifest.xml b/packages/DynamicSystemInstallationService/AndroidManifest.xml index 32acad4d5ab0..291111713977 100644 --- a/packages/DynamicAndroidInstallationService/AndroidManifest.xml +++ b/packages/DynamicSystemInstallationService/AndroidManifest.xml @@ -1,10 +1,10 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.dynandroid" + package="com.android.dynsystem" android:sharedUserId="android.uid.system"> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.INTERNET" /> - <uses-permission android:name="android.permission.MANAGE_DYNAMIC_ANDROID" /> + <uses-permission android:name="android.permission.MANAGE_DYNAMIC_SYSTEM" /> <uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> @@ -13,24 +13,24 @@ android:label="@string/app_name"> <service - android:name=".DynamicAndroidInstallationService" + android:name=".DynamicSystemInstallationService" android:enabled="true" android:exported="true" - android:permission="android.permission.MANAGE_DYNAMIC_ANDROID" - android:process=":dynandroid"> + android:permission="android.permission.MANAGE_DYNAMIC_SYSTEM" + android:process=":dynsystem"> <intent-filter> - <action android:name="android.content.action.NOTIFY_IF_IN_USE" /> + <action android:name="android.os.image.action.NOTIFY_IF_IN_USE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <activity android:name=".VerificationActivity" android:exported="true" - android:permission="android.permission.MANAGE_DYNAMIC_ANDROID" + android:permission="android.permission.MANAGE_DYNAMIC_SYSTEM" android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar" - android:process=":dynandroid"> + android:process=":dynsystem"> <intent-filter> - <action android:name="android.content.action.START_INSTALL" /> + <action android:name="android.os.image.action.START_INSTALL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> diff --git a/packages/DynamicAndroidInstallationService/MODULE_LICENSE_APACHE2 b/packages/DynamicSystemInstallationService/MODULE_LICENSE_APACHE2 index e69de29bb2d1..e69de29bb2d1 100644 --- a/packages/DynamicAndroidInstallationService/MODULE_LICENSE_APACHE2 +++ b/packages/DynamicSystemInstallationService/MODULE_LICENSE_APACHE2 diff --git a/packages/DynamicAndroidInstallationService/NOTICE b/packages/DynamicSystemInstallationService/NOTICE index c5b1efa7aac7..c5b1efa7aac7 100644 --- a/packages/DynamicAndroidInstallationService/NOTICE +++ b/packages/DynamicSystemInstallationService/NOTICE diff --git a/packages/DynamicAndroidInstallationService/res/drawable/ic_system_update_googblue_24dp.xml b/packages/DynamicSystemInstallationService/res/drawable/ic_system_update_googblue_24dp.xml index acf1567ab7fe..acf1567ab7fe 100644 --- a/packages/DynamicAndroidInstallationService/res/drawable/ic_system_update_googblue_24dp.xml +++ b/packages/DynamicSystemInstallationService/res/drawable/ic_system_update_googblue_24dp.xml diff --git a/packages/DynamicAndroidInstallationService/res/values/strings.xml b/packages/DynamicSystemInstallationService/res/values/strings.xml index 03c7c28c7036..a72e4e2c1b74 100644 --- a/packages/DynamicAndroidInstallationService/res/values/strings.xml +++ b/packages/DynamicSystemInstallationService/res/values/strings.xml @@ -12,14 +12,14 @@ <!-- password page description [CHAR LIMIT=128] --> <string name="keyguard_description">Please enter your password and continue to AndroidOnTap installation</string> - <!-- Displayed on notification: DynAndroid installation is completed [CHAR LIMIT=128] --> + <!-- Displayed on notification: AndroidOnTap installation is completed [CHAR LIMIT=128] --> <string name="notification_install_completed">New system is ready, you can reboot into it or discard it.</string> - <!-- Displayed on notification: DynAndroid installation is in progress [CHAR LIMIT=128] --> + <!-- Displayed on notification: AndroidOnTap installation is in progress [CHAR LIMIT=128] --> <string name="notification_install_inprogress">Installation is in progress.</string> - <!-- Displayed on notification: DynAndroid installation is in progress [CHAR LIMIT=128] --> + <!-- Displayed on notification: AndroidOnTap installation is in progress [CHAR LIMIT=128] --> <string name="notification_install_failed">Installation Failed.</string> <!-- Displayed on notification: We are running in AndroidOnTap [CHAR LIMIT=128] --> - <string name="notification_dynandroid_in_use">We are running in AndroidOnTap.</string> + <string name="notification_dynsystem_in_use">We are running in AndroidOnTap.</string> <!-- Action on notification: Cancel installation [CHAR LIMIT=16] --> <string name="notification_action_cancel">Cancel</string> @@ -28,11 +28,11 @@ <!-- Action on notification: Uninstall AndroidOnTap [CHAR LIMIT=16] --> <string name="notification_action_uninstall">Uninstall</string> <!-- Action on notification: Reboot to AndroidOnTap [CHAR LIMIT=16] --> - <string name="notification_action_reboot_to_dynandroid">Reboot</string> + <string name="notification_action_reboot_to_dynsystem">Reboot</string> - <!-- Toast when installed DynamicAndroid is discarded [CHAR LIMIT=64] --> - <string name="toast_dynandroid_discarded">Installed AndroidOnTap is discarded.</string> - <!-- Toast when we fail to launch into DynamicAndroid [CHAR LIMIT=64] --> - <string name="toast_failed_to_reboot_to_dynandroid">Failed to reboot into AndroidOnTap.</string> + <!-- Toast when installed AndroidOnTap is discarded [CHAR LIMIT=64] --> + <string name="toast_dynsystem_discarded">Installed AndroidOnTap is discarded.</string> + <!-- Toast when we fail to launch into AndroidOnTap [CHAR LIMIT=64] --> + <string name="toast_failed_to_reboot_to_dynsystem">Failed to reboot into AndroidOnTap.</string> </resources> diff --git a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java index dd1be897b2ea..38576ee47283 100644 --- a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java @@ -14,20 +14,20 @@ * limitations under the License. */ -package com.android.dynandroid; +package com.android.dynsystem; import android.content.BroadcastReceiver; import android.content.Context; -import android.content.DynamicAndroidClient; import android.content.Intent; import android.os.UserHandle; +import android.os.image.DynamicSystemClient; import android.util.Log; /** * A BoardcastReceiver waiting for ACTION_BOOT_COMPLETED and ask * the service to display a notification if we are currently running - * in DynamicAndroid. + * in DynamicSystem. */ public class BootCompletedReceiver extends BroadcastReceiver { @@ -41,9 +41,9 @@ public class BootCompletedReceiver extends BroadcastReceiver { if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { Intent startServiceIntent = new Intent( - context, DynamicAndroidInstallationService.class); + context, DynamicSystemInstallationService.class); - startServiceIntent.setAction(DynamicAndroidClient.ACTION_NOTIFY_IF_IN_USE); + startServiceIntent.setAction(DynamicSystemClient.ACTION_NOTIFY_IF_IN_USE); context.startServiceAsUser(startServiceIntent, UserHandle.SYSTEM); } } diff --git a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/DynamicAndroidInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java index d942babf78a6..df2c57181904 100644 --- a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/DynamicAndroidInstallationService.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java @@ -14,28 +14,28 @@ * limitations under the License. */ -package com.android.dynandroid; - -import static android.content.DynamicAndroidClient.ACTION_NOTIFY_IF_IN_USE; -import static android.content.DynamicAndroidClient.ACTION_START_INSTALL; -import static android.content.DynamicAndroidClient.CAUSE_ERROR_EXCEPTION; -import static android.content.DynamicAndroidClient.CAUSE_ERROR_INVALID_URL; -import static android.content.DynamicAndroidClient.CAUSE_ERROR_IO; -import static android.content.DynamicAndroidClient.CAUSE_INSTALL_CANCELLED; -import static android.content.DynamicAndroidClient.CAUSE_INSTALL_COMPLETED; -import static android.content.DynamicAndroidClient.CAUSE_NOT_SPECIFIED; -import static android.content.DynamicAndroidClient.STATUS_IN_PROGRESS; -import static android.content.DynamicAndroidClient.STATUS_IN_USE; -import static android.content.DynamicAndroidClient.STATUS_NOT_STARTED; -import static android.content.DynamicAndroidClient.STATUS_READY; +package com.android.dynsystem; + import static android.os.AsyncTask.Status.FINISHED; import static android.os.AsyncTask.Status.PENDING; import static android.os.AsyncTask.Status.RUNNING; - -import static com.android.dynandroid.InstallationAsyncTask.RESULT_ERROR_EXCEPTION; -import static com.android.dynandroid.InstallationAsyncTask.RESULT_ERROR_INVALID_URL; -import static com.android.dynandroid.InstallationAsyncTask.RESULT_ERROR_IO; -import static com.android.dynandroid.InstallationAsyncTask.RESULT_OK; +import static android.os.image.DynamicSystemClient.ACTION_NOTIFY_IF_IN_USE; +import static android.os.image.DynamicSystemClient.ACTION_START_INSTALL; +import static android.os.image.DynamicSystemClient.CAUSE_ERROR_EXCEPTION; +import static android.os.image.DynamicSystemClient.CAUSE_ERROR_INVALID_URL; +import static android.os.image.DynamicSystemClient.CAUSE_ERROR_IO; +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.STATUS_IN_PROGRESS; +import static android.os.image.DynamicSystemClient.STATUS_IN_USE; +import static android.os.image.DynamicSystemClient.STATUS_NOT_STARTED; +import static android.os.image.DynamicSystemClient.STATUS_READY; + +import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_EXCEPTION; +import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_INVALID_URL; +import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_IO; +import static com.android.dynsystem.InstallationAsyncTask.RESULT_OK; import android.app.Notification; import android.app.NotificationChannel; @@ -43,16 +43,16 @@ import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; -import android.content.DynamicAndroidClient; import android.content.Intent; import android.os.Bundle; -import android.os.DynamicAndroidManager; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Messenger; import android.os.PowerManager; import android.os.RemoteException; +import android.os.image.DynamicSystemClient; +import android.os.image.DynamicSystemManager; import android.util.Log; import android.widget.Toast; @@ -60,31 +60,31 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; /** - * This class is the service in charge of DynamicAndroid installation. + * This class is the service in charge of DynamicSystem installation. * It also posts status to notification bar and wait for user's * cancel and confirm commnands. */ -public class DynamicAndroidInstallationService extends Service +public class DynamicSystemInstallationService extends Service implements InstallationAsyncTask.InstallStatusListener { - private static final String TAG = "DynAndroidInstallationService"; + private static final String TAG = "DynSystemInstallationService"; /* * Intent actions */ private static final String ACTION_CANCEL_INSTALL = - "com.android.dynandroid.ACTION_CANCEL_INSTALL"; + "com.android.dynsystem.ACTION_CANCEL_INSTALL"; private static final String ACTION_DISCARD_INSTALL = - "com.android.dynandroid.ACTION_DISCARD_INSTALL"; - private static final String ACTION_REBOOT_TO_DYN_ANDROID = - "com.android.dynandroid.ACTION_REBOOT_TO_DYN_ANDROID"; + "com.android.dynsystem.ACTION_DISCARD_INSTALL"; + private static final String ACTION_REBOOT_TO_DYN_SYSTEM = + "com.android.dynsystem.ACTION_REBOOT_TO_DYN_SYSTEM"; private static final String ACTION_REBOOT_TO_NORMAL = - "com.android.dynandroid.ACTION_REBOOT_TO_NORMAL"; + "com.android.dynsystem.ACTION_REBOOT_TO_NORMAL"; /* * For notification */ - private static final String NOTIFICATION_CHANNEL_ID = "com.android.dynandroid"; + private static final String NOTIFICATION_CHANNEL_ID = "com.android.dynsystem"; private static final int NOTIFICATION_ID = 1; /* @@ -97,15 +97,15 @@ public class DynamicAndroidInstallationService extends Service final Messenger mMessenger = new Messenger(new IncomingHandler(this)); static class IncomingHandler extends Handler { - private final WeakReference<DynamicAndroidInstallationService> mWeakService; + private final WeakReference<DynamicSystemInstallationService> mWeakService; - IncomingHandler(DynamicAndroidInstallationService service) { + IncomingHandler(DynamicSystemInstallationService service) { mWeakService = new WeakReference<>(service); } @Override public void handleMessage(Message msg) { - DynamicAndroidInstallationService service = mWeakService.get(); + DynamicSystemInstallationService service = mWeakService.get(); if (service != null) { service.handleMessage(msg); @@ -113,7 +113,7 @@ public class DynamicAndroidInstallationService extends Service } } - private DynamicAndroidManager mDynAndroid; + private DynamicSystemManager mDynSystem; private NotificationManager mNM; private long mSystemSize; @@ -130,7 +130,7 @@ public class DynamicAndroidInstallationService extends Service prepareNotification(); - mDynAndroid = (DynamicAndroidManager) getSystemService(Context.DYNAMIC_ANDROID_SERVICE); + mDynSystem = (DynamicSystemManager) getSystemService(Context.DYNAMIC_SYSTEM_SERVICE); } @Override @@ -156,8 +156,8 @@ public class DynamicAndroidInstallationService extends Service executeCancelCommand(); } else if (ACTION_DISCARD_INSTALL.equals(action)) { executeDiscardCommand(); - } else if (ACTION_REBOOT_TO_DYN_ANDROID.equals(action)) { - executeRebootToDynAndroidCommand(); + } else if (ACTION_REBOOT_TO_DYN_SYSTEM.equals(action)) { + executeRebootToDynSystemCommand(); } else if (ACTION_REBOOT_TO_NORMAL.equals(action)) { executeRebootToNormalCommand(); } else if (ACTION_NOTIFY_IF_IN_USE.equals(action)) { @@ -215,17 +215,17 @@ public class DynamicAndroidInstallationService extends Service return; } - if (isInDynamicAndroid()) { - Log.e(TAG, "We are already running in DynamicAndroid"); + if (isInDynamicSystem()) { + Log.e(TAG, "We are already running in DynamicSystem"); return; } - String url = intent.getStringExtra(DynamicAndroidClient.KEY_SYSTEM_URL); - mSystemSize = intent.getLongExtra(DynamicAndroidClient.KEY_SYSTEM_SIZE, 0); - mUserdataSize = intent.getLongExtra(DynamicAndroidClient.KEY_USERDATA_SIZE, 0); + String url = intent.getStringExtra(DynamicSystemClient.KEY_SYSTEM_URL); + mSystemSize = intent.getLongExtra(DynamicSystemClient.KEY_SYSTEM_SIZE, 0); + mUserdataSize = intent.getLongExtra(DynamicSystemClient.KEY_USERDATA_SIZE, 0); mInstallTask = new InstallationAsyncTask( - url, mSystemSize, mUserdataSize, mDynAndroid, this); + url, mSystemSize, mUserdataSize, mDynSystem, this); mInstallTask.execute(); @@ -251,7 +251,7 @@ public class DynamicAndroidInstallationService extends Service } private void executeDiscardCommand() { - if (isInDynamicAndroid()) { + if (isInDynamicSystem()) { Log.e(TAG, "We are now running in AOT, please reboot to normal system first"); return; } @@ -262,16 +262,16 @@ public class DynamicAndroidInstallationService extends Service } Toast.makeText(this, - getString(R.string.toast_dynandroid_discarded), + getString(R.string.toast_dynsystem_discarded), Toast.LENGTH_LONG).show(); resetTaskAndStop(); postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED); - mDynAndroid.remove(); + mDynSystem.remove(); } - private void executeRebootToDynAndroidCommand() { + private void executeRebootToDynSystemCommand() { if (mInstallTask == null || mInstallTask.getStatus() != FINISHED) { Log.e(TAG, "Trying to reboot to AOT while there is no complete installation"); return; @@ -282,10 +282,10 @@ public class DynamicAndroidInstallationService extends Service mNM.cancel(NOTIFICATION_ID); Toast.makeText(this, - getString(R.string.toast_failed_to_reboot_to_dynandroid), + getString(R.string.toast_failed_to_reboot_to_dynsystem), Toast.LENGTH_LONG).show(); - mDynAndroid.remove(); + mDynSystem.remove(); return; } @@ -293,12 +293,12 @@ public class DynamicAndroidInstallationService extends Service PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); if (powerManager != null) { - powerManager.reboot("dynandroid"); + powerManager.reboot("dynsystem"); } } private void executeRebootToNormalCommand() { - if (!isInDynamicAndroid()) { + if (!isInDynamicSystem()) { Log.e(TAG, "It's already running in normal system."); return; } @@ -346,7 +346,7 @@ public class DynamicAndroidInstallationService extends Service } private PendingIntent createPendingIntent(String action) { - Intent intent = new Intent(this, DynamicAndroidInstallationService.class); + Intent intent = new Intent(this, DynamicSystemInstallationService.class); intent.setAction(action); return PendingIntent.getService(this, 0, intent, 0); } @@ -375,8 +375,8 @@ public class DynamicAndroidInstallationService extends Service builder.setContentText(getString(R.string.notification_install_completed)); builder.addAction(new Notification.Action.Builder( - null, getString(R.string.notification_action_reboot_to_dynandroid), - createPendingIntent(ACTION_REBOOT_TO_DYN_ANDROID)).build()); + null, getString(R.string.notification_action_reboot_to_dynsystem), + createPendingIntent(ACTION_REBOOT_TO_DYN_SYSTEM)).build()); builder.addAction(new Notification.Action.Builder( null, getString(R.string.notification_action_discard), @@ -385,7 +385,7 @@ public class DynamicAndroidInstallationService extends Service break; case STATUS_IN_USE: - builder.setContentText(getString(R.string.notification_dynandroid_in_use)); + builder.setContentText(getString(R.string.notification_dynsystem_in_use)); builder.addAction(new Notification.Action.Builder( null, getString(R.string.notification_action_uninstall), @@ -409,7 +409,7 @@ public class DynamicAndroidInstallationService extends Service } private boolean verifyRequest(Intent intent) { - String url = intent.getStringExtra(DynamicAndroidClient.KEY_SYSTEM_URL); + String url = intent.getStringExtra(DynamicSystemClient.KEY_SYSTEM_URL); return VerificationActivity.isVerified(url); } @@ -443,16 +443,16 @@ public class DynamicAndroidInstallationService extends Service private void notifyOneClient(Messenger client, int status, int cause) throws RemoteException { Bundle bundle = new Bundle(); - bundle.putLong(DynamicAndroidClient.KEY_INSTALLED_SIZE, mInstalledSize); + bundle.putLong(DynamicSystemClient.KEY_INSTALLED_SIZE, mInstalledSize); client.send(Message.obtain(null, - DynamicAndroidClient.MSG_POST_STATUS, status, cause, bundle)); + DynamicSystemClient.MSG_POST_STATUS, status, cause, bundle)); } private int getStatus() { - if (isInDynamicAndroid()) { + if (isInDynamicSystem()) { return STATUS_IN_USE; - } else if (isDynamicAndroidInstalled()) { + } else if (isDynamicSystemInstalled()) { return STATUS_READY; } else if (mInstallTask == null) { return STATUS_NOT_STARTED; @@ -479,17 +479,17 @@ public class DynamicAndroidInstallationService extends Service } } - private boolean isInDynamicAndroid() { - return mDynAndroid.isInUse(); + private boolean isInDynamicSystem() { + return mDynSystem.isInUse(); } - private boolean isDynamicAndroidInstalled() { - return mDynAndroid.isInstalled(); + private boolean isDynamicSystemInstalled() { + return mDynSystem.isInstalled(); } void handleMessage(Message msg) { switch (msg.what) { - case DynamicAndroidClient.MSG_REGISTER_LISTENER: + case DynamicSystemClient.MSG_REGISTER_LISTENER: try { Messenger client = msg.replyTo; @@ -505,7 +505,7 @@ public class DynamicAndroidInstallationService extends Service } break; - case DynamicAndroidClient.MSG_UNREGISTER_LISTENER: + case DynamicSystemClient.MSG_UNREGISTER_LISTENER: mClients.remove(msg.replyTo); break; default: diff --git a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java index 03fc7739fcce..052fc0a109b3 100644 --- a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package com.android.dynandroid; +package com.android.dynsystem; import android.gsi.GsiProgress; import android.os.AsyncTask; -import android.os.DynamicAndroidManager; +import android.os.image.DynamicSystemManager; import android.util.Log; import android.webkit.URLUtil; @@ -60,9 +60,9 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { private final String mUrl; private final long mSystemSize; private final long mUserdataSize; - private final DynamicAndroidManager mDynamicAndroid; + private final DynamicSystemManager mDynSystem; private final InstallStatusListener mListener; - private DynamicAndroidManager.Session mInstallationSession; + private DynamicSystemManager.Session mInstallationSession; private int mResult = NO_RESULT; @@ -70,11 +70,11 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { InstallationAsyncTask(String url, long systemSize, long userdataSize, - DynamicAndroidManager dynAndroid, InstallStatusListener listener) { + DynamicSystemManager dynSystem, InstallStatusListener listener) { mUrl = url; mSystemSize = systemSize; mUserdataSize = userdataSize; - mDynamicAndroid = dynAndroid; + mDynSystem = dynSystem; mListener = listener; } @@ -98,7 +98,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { Thread thread = new Thread(() -> { mInstallationSession = - mDynamicAndroid.startInstallation(mSystemSize, mUserdataSize); + mDynSystem.startInstallation(mSystemSize, mUserdataSize); }); @@ -106,12 +106,12 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { while (thread.isAlive()) { if (isCancelled()) { - boolean aborted = mDynamicAndroid.abort(); - Log.d(TAG, "Called DynamicAndroidManager.abort(), result = " + aborted); + boolean aborted = mDynSystem.abort(); + Log.d(TAG, "Called DynamicSystemManager.abort(), result = " + aborted); return RESULT_OK; } - GsiProgress progress = mDynamicAndroid.getInstallationProgress(); + GsiProgress progress = mDynSystem.getInstallationProgress(); installedSize = progress.bytes_processed; if (installedSize > reportedInstalledSize + minStepToReport) { @@ -146,7 +146,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { ? bytes : Arrays.copyOf(bytes, numBytesRead); if (!mInstallationSession.write(writeBuffer)) { - throw new IOException("Failed write() to DynamicAndroid"); + throw new IOException("Failed write() to DynamicSystem"); } installedSize += numBytesRead; diff --git a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/VerificationActivity.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java index c18c4fe689c9..f05930f8ec07 100644 --- a/packages/DynamicAndroidInstallationService/src/com/android/dynandroid/VerificationActivity.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java @@ -14,19 +14,19 @@ * limitations under the License. */ -package com.android.dynandroid; +package com.android.dynsystem; -import static android.content.DynamicAndroidClient.KEY_SYSTEM_SIZE; -import static android.content.DynamicAndroidClient.KEY_SYSTEM_URL; -import static android.content.DynamicAndroidClient.KEY_USERDATA_SIZE; +import static android.os.image.DynamicSystemClient.KEY_SYSTEM_SIZE; +import static android.os.image.DynamicSystemClient.KEY_SYSTEM_URL; +import static android.os.image.DynamicSystemClient.KEY_USERDATA_SIZE; import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; -import android.content.DynamicAndroidClient; import android.content.Intent; import android.os.Bundle; import android.os.UserHandle; +import android.os.image.DynamicSystemClient; import android.util.Log; @@ -88,8 +88,8 @@ public class VerificationActivity extends Activity { sVerifiedUrl = url; // start service - Intent intent = new Intent(this, DynamicAndroidInstallationService.class); - intent.setAction(DynamicAndroidClient.ACTION_START_INSTALL); + Intent intent = new Intent(this, DynamicSystemInstallationService.class); + intent.setAction(DynamicSystemClient.ACTION_START_INSTALL); intent.putExtra(KEY_SYSTEM_URL, url); intent.putExtra(KEY_SYSTEM_SIZE, systemSize); intent.putExtra(KEY_USERDATA_SIZE, userdataSize); diff --git a/services/art-profile b/services/art-profile index 6368c632d5a0..f0b9234ff4a6 100644 --- a/services/art-profile +++ b/services/art-profile @@ -1136,7 +1136,7 @@ Lcom/android/server/DropBoxManagerService$4; Lcom/android/server/DropBoxManagerService$EntryFile; Lcom/android/server/DropBoxManagerService$FileList; Lcom/android/server/DropBoxManagerService; -Lcom/android/server/DynamicAndroidService; +Lcom/android/server/DynamicSystemService; Lcom/android/server/EntropyMixer$1; Lcom/android/server/EntropyMixer$2; Lcom/android/server/EntropyMixer; @@ -4769,9 +4769,9 @@ PLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;JL PLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File; PLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;)Z PLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry; -PLcom/android/server/DynamicAndroidService;->connect(Landroid/os/IBinder$DeathRecipient;)Landroid/gsi/IGsiService; -PLcom/android/server/DynamicAndroidService;->getGsiService()Landroid/gsi/IGsiService; -PLcom/android/server/DynamicAndroidService;->isInUse()Z +PLcom/android/server/DynamicSystemService;->connect(Landroid/os/IBinder$DeathRecipient;)Landroid/gsi/IGsiService; +PLcom/android/server/DynamicSystemService;->getGsiService()Landroid/gsi/IGsiService; +PLcom/android/server/DynamicSystemService;->isInUse()Z PLcom/android/server/EntropyMixer$1;->handleMessage(Landroid/os/Message;)V PLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V PLcom/android/server/EventLogTags;->writeBatterySaverMode(IIIIILjava/lang/String;I)V @@ -15043,7 +15043,7 @@ SPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z SPLcom/android/server/DropBoxManagerService;->onBootPhase(I)V SPLcom/android/server/DropBoxManagerService;->onStart()V SPLcom/android/server/DropBoxManagerService;->trimToFit()J -SPLcom/android/server/DynamicAndroidService;-><init>(Landroid/content/Context;)V +SPLcom/android/server/DynamicSystemService;-><init>(Landroid/content/Context;)V SPLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;)V SPLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V SPLcom/android/server/EntropyMixer;->addDeviceSpecificEntropy()V diff --git a/services/core/java/com/android/server/DynamicAndroidService.java b/services/core/java/com/android/server/DynamicSystemService.java index b02bfb111727..f5bd11cea779 100644 --- a/services/core/java/com/android/server/DynamicAndroidService.java +++ b/services/core/java/com/android/server/DynamicSystemService.java @@ -22,25 +22,25 @@ import android.gsi.GsiProgress; import android.gsi.IGsiService; import android.os.IBinder; import android.os.IBinder.DeathRecipient; -import android.os.IDynamicAndroidService; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; +import android.os.image.IDynamicSystemService; import android.util.Slog; /** - * DynamicAndroidService implements IDynamicAndroidService. It provides permission check before + * DynamicSystemService implements IDynamicSystemService. It provides permission check before * passing requests to gsid */ -public class DynamicAndroidService extends IDynamicAndroidService.Stub implements DeathRecipient { - private static final String TAG = "DynamicAndroidService"; +public class DynamicSystemService extends IDynamicSystemService.Stub implements DeathRecipient { + private static final String TAG = "DynamicSystemService"; private static final String NO_SERVICE_ERROR = "no gsiservice"; private static final int GSID_ROUGH_TIMEOUT_MS = 8192; private Context mContext; private volatile IGsiService mGsiService; - DynamicAndroidService(Context context) { + DynamicSystemService(Context context) { mContext = context; } @@ -93,9 +93,9 @@ public class DynamicAndroidService extends IDynamicAndroidService.Stub implement private void checkPermission() { if (mContext.checkCallingOrSelfPermission( - android.Manifest.permission.MANAGE_DYNAMIC_ANDROID) + android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM) != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException("Requires MANAGE_DYNAMIC_ANDROID permission"); + throw new SecurityException("Requires MANAGE_DYNAMIC_SYSTEM permission"); } } diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 419f52cff578..d4ccb0b77bca 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -849,7 +849,7 @@ public final class SystemServer { private void startOtherServices() { final Context context = mSystemContext; VibratorService vibrator = null; - DynamicAndroidService dynamicAndroid = null; + DynamicSystemService dynamicSystem = null; IStorageManager storageManager = null; NetworkManagementService networkManagement = null; IpSecService ipSecService = null; @@ -968,9 +968,9 @@ public final class SystemServer { ServiceManager.addService("vibrator", vibrator); traceEnd(); - traceBeginAndSlog("StartDynamicAndroidService"); - dynamicAndroid = new DynamicAndroidService(context); - ServiceManager.addService("dynamic_android", dynamicAndroid); + traceBeginAndSlog("StartDynamicSystemService"); + dynamicSystem = new DynamicSystemService(context); + ServiceManager.addService("dynamic_system", dynamicSystem); traceEnd(); if (!isWatch) { diff --git a/services/tests/servicestests/src/com/android/server/DynamicAndroidServiceTest.java b/services/tests/servicestests/src/com/android/server/DynamicSystemServiceTest.java index 149428443fa1..4a9dd9776a1b 100644 --- a/services/tests/servicestests/src/com/android/server/DynamicAndroidServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/DynamicSystemServiceTest.java @@ -16,28 +16,28 @@ package com.android.server; -import android.os.IDynamicAndroidService; import android.os.ServiceManager; +import android.os.image.IDynamicSystemService; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; -public class DynamicAndroidServiceTest extends AndroidTestCase { - private static final String TAG = "DynamicAndroidServiceTests"; - private IDynamicAndroidService mService; +public class DynamicSystemServiceTest extends AndroidTestCase { + private static final String TAG = "DynamicSystemServiceTests"; + private IDynamicSystemService mService; @Override protected void setUp() throws Exception { mService = - IDynamicAndroidService.Stub.asInterface( - ServiceManager.getService("dynamic_android")); + IDynamicSystemService.Stub.asInterface( + ServiceManager.getService("dynamic_system")); } @LargeTest public void test1() { - assertTrue("dynamic_android service available", mService != null); + assertTrue("dynamic_system service available", mService != null); try { mService.startInstallation(1 << 20, 8 << 30); - fail("DynamicAndroidService did not throw SecurityException as expected"); + fail("DynamicSystemService did not throw SecurityException as expected"); } catch (SecurityException e) { // expected } catch (Exception e) { |