Managed system update API council changes.
Clarify the errorMessage Javadoc and rename InstallUpdateCallback.
Bug: 123697817
Test: Not applicable
Change-Id: I257b6353310e56bf1877a6f97bf1977ef5962af9
diff --git a/api/current.txt b/api/current.txt
index 10d55f5c..f6a7b70 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -6684,7 +6684,7 @@
method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate, @NonNull String);
method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, boolean);
method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, int);
- method public void installSystemUpdate(@NonNull android.content.ComponentName, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.InstallUpdateCallback);
+ method public void installSystemUpdate(@NonNull android.content.ComponentName, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback);
method public boolean isActivePasswordSufficient();
method public boolean isAdminActive(@NonNull android.content.ComponentName);
method public boolean isAffiliatedUser();
@@ -6951,8 +6951,8 @@
field public static final int WIPE_SILENTLY = 8; // 0x8
}
- public abstract static class DevicePolicyManager.InstallUpdateCallback {
- ctor public DevicePolicyManager.InstallUpdateCallback();
+ public abstract static class DevicePolicyManager.InstallSystemUpdateCallback {
+ ctor public DevicePolicyManager.InstallSystemUpdateCallback();
method public void onInstallUpdateError(int, String);
field public static final int UPDATE_ERROR_BATTERY_LOW = 5; // 0x5
field public static final int UPDATE_ERROR_FILE_NOT_FOUND = 4; // 0x4
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 8861151..9b6b81e 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -2125,7 +2125,7 @@
* Callback used in {@link #installSystemUpdate} to indicate that there was an error while
* trying to install an update.
*/
- public abstract static class InstallUpdateCallback {
+ public abstract static class InstallSystemUpdateCallback {
/** Represents an unknown error while trying to install an update. */
public static final int UPDATE_ERROR_UNKNOWN = 1;
@@ -2144,7 +2144,12 @@
/** Represents the battery being too low to apply an update. */
public static final int UPDATE_ERROR_BATTERY_LOW = 5;
- /** Method invoked when there was an error while installing an update. */
+ /**
+ * Method invoked when there was an error while installing an update.
+ *
+ * <p>The given error message is not intended to be user-facing. It is intended to be
+ * reported back to the IT admin to be read.
+ */
public void onInstallUpdateError(
@InstallUpdateCallbackErrorConstants int errorCode, String errorMessage) {
}
@@ -2154,11 +2159,11 @@
* @hide
*/
@IntDef(prefix = { "UPDATE_ERROR_" }, value = {
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN,
- InstallUpdateCallback.UPDATE_ERROR_INCORRECT_OS_VERSION,
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
- InstallUpdateCallback.UPDATE_ERROR_FILE_NOT_FOUND,
- InstallUpdateCallback.UPDATE_ERROR_BATTERY_LOW
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN,
+ InstallSystemUpdateCallback.UPDATE_ERROR_INCORRECT_OS_VERSION,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
+ InstallSystemUpdateCallback.UPDATE_ERROR_FILE_NOT_FOUND,
+ InstallSystemUpdateCallback.UPDATE_ERROR_BATTERY_LOW
})
@Retention(RetentionPolicy.SOURCE)
public @interface InstallUpdateCallbackErrorConstants {}
@@ -10431,9 +10436,9 @@
* doesn't necessarily mean that the update has been applied successfully. The caller should
* additionally check the system version with {@link android.os.Build#FINGERPRINT} or {@link
* android.os.Build.VERSION}. If an error occurs during processing the OTA before the reboot,
- * the caller will be notified by {@link InstallUpdateCallback}. If device does not have
+ * the caller will be notified by {@link InstallSystemUpdateCallback}. If device does not have
* sufficient battery level, the installation will fail with error {@link
- * InstallUpdateCallback#UPDATE_ERROR_BATTERY_LOW}.
+ * InstallSystemUpdateCallback#UPDATE_ERROR_BATTERY_LOW}.
*
* @param admin The {@link DeviceAdminReceiver} that this request is associated with.
* @param updateFilePath An Uri of the file that contains the update. The file should be
@@ -10445,7 +10450,7 @@
public void installSystemUpdate(
@NonNull ComponentName admin, @NonNull Uri updateFilePath,
@NonNull @CallbackExecutor Executor executor,
- @NonNull InstallUpdateCallback callback) {
+ @NonNull InstallSystemUpdateCallback callback) {
throwIfParentInstance("installUpdate");
if (mService == null) {
return;
@@ -10465,19 +10470,20 @@
} catch (FileNotFoundException e) {
Log.w(TAG, e);
executeCallback(
- InstallUpdateCallback.UPDATE_ERROR_FILE_NOT_FOUND, Log.getStackTraceString(e),
+ InstallSystemUpdateCallback.UPDATE_ERROR_FILE_NOT_FOUND,
+ Log.getStackTraceString(e),
executor, callback);
} catch (IOException e) {
Log.w(TAG, e);
executeCallback(
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN, Log.getStackTraceString(e),
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN, Log.getStackTraceString(e),
executor, callback);
}
}
private void executeCallback(int errorCode, String errorMessage,
@NonNull @CallbackExecutor Executor executor,
- @NonNull InstallUpdateCallback callback) {
+ @NonNull InstallSystemUpdateCallback callback) {
executor.execute(() -> callback.onInstallUpdateError(errorCode, errorMessage));
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java b/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java
index de5dd17..d5cfab9 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java
@@ -16,7 +16,7 @@
package com.android.server.devicepolicy;
-import android.app.admin.DevicePolicyManager.InstallUpdateCallback;
+import android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback;
import android.app.admin.StartInstallingUpdateCallback;
import android.content.Context;
import android.os.ParcelFileDescriptor;
@@ -62,41 +62,43 @@
private static Map<Integer, Integer> buildErrorCodesMap() {
Map<Integer, Integer> map = new HashMap<>();
- map.put(UpdateEngine.ErrorCodeConstants.ERROR, InstallUpdateCallback.UPDATE_ERROR_UNKNOWN);
+ map.put(
+ UpdateEngine.ErrorCodeConstants.ERROR,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN);
map.put(
DOWNLOAD_STATE_INITIALIZATION_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_INCORRECT_OS_VERSION);
+ InstallSystemUpdateCallback.UPDATE_ERROR_INCORRECT_OS_VERSION);
map.put(
UpdateEngine.ErrorCodeConstants.PAYLOAD_TIMESTAMP_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_INCORRECT_OS_VERSION);
+ InstallSystemUpdateCallback.UPDATE_ERROR_INCORRECT_OS_VERSION);
// Error constants corresponding to errors related to bad update file.
map.put(
UpdateEngine.ErrorCodeConstants.DOWNLOAD_PAYLOAD_VERIFICATION_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
map.put(
UpdateEngine.ErrorCodeConstants.PAYLOAD_SIZE_MISMATCH_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
map.put(
UpdateEngine.ErrorCodeConstants.PAYLOAD_MISMATCHED_TYPE_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
map.put(
UpdateEngine.ErrorCodeConstants.PAYLOAD_HASH_MISMATCH_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID);
// Error constants corresponding to errors related to devices bad state.
map.put(
UpdateEngine.ErrorCodeConstants.POST_INSTALL_RUNNER_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN);
map.put(
UpdateEngine.ErrorCodeConstants.INSTALL_DEVICE_OPEN_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN);
map.put(
UpdateEngine.ErrorCodeConstants.DOWNLOAD_TRANSFER_ERROR,
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN);
map.put(
UpdateEngine.ErrorCodeConstants.UPDATED_BUT_NOT_ACTIVE,
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN);
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN);
return map;
}
@@ -153,12 +155,13 @@
} catch (ZipException e) {
Log.w(UpdateInstaller.TAG, e);
notifyCallbackOnError(
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
Log.getStackTraceString(e));
} catch (IOException e) {
Log.w(UpdateInstaller.TAG, e);
notifyCallbackOnError(
- InstallUpdateCallback.UPDATE_ERROR_UNKNOWN, Log.getStackTraceString(e));
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN,
+ Log.getStackTraceString(e));
}
}
@@ -185,7 +188,7 @@
if (mSizeForUpdate == -1) {
Log.w(UpdateInstaller.TAG, "Failed to find payload entry in the given package.");
notifyCallbackOnError(
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
"Failed to find payload entry in the given package.");
return;
}
@@ -210,7 +213,7 @@
if (entry.getMethod() != ZipEntry.STORED) {
Log.w(UpdateInstaller.TAG, "Invalid compression method.");
notifyCallbackOnError(
- InstallUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UPDATE_FILE_INVALID,
"Invalid compression method.");
return false;
}
@@ -263,7 +266,7 @@
} else {
mUpdateInstaller.notifyCallbackOnError(
errorCodesMap.getOrDefault(
- errorCode, InstallUpdateCallback.UPDATE_ERROR_UNKNOWN),
+ errorCode, InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN),
errorStringsMap.getOrDefault(errorCode, UNKNOWN_ERROR + errorCode));
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/NonAbUpdateInstaller.java b/services/devicepolicy/java/com/android/server/devicepolicy/NonAbUpdateInstaller.java
index 5f1e926..582306c 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/NonAbUpdateInstaller.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/NonAbUpdateInstaller.java
@@ -16,7 +16,7 @@
package com.android.server.devicepolicy;
-import android.app.admin.DevicePolicyManager;
+import android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback;
import android.app.admin.StartInstallingUpdateCallback;
import android.content.Context;
import android.os.ParcelFileDescriptor;
@@ -45,7 +45,7 @@
} catch (IOException e) {
Log.w(TAG, "IO error while trying to install non AB update.", e);
notifyCallbackOnError(
- DevicePolicyManager.InstallUpdateCallback.UPDATE_ERROR_UNKNOWN,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN,
Log.getStackTraceString(e));
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/UpdateInstaller.java b/services/devicepolicy/java/com/android/server/devicepolicy/UpdateInstaller.java
index cf68ccf..7148ed4 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/UpdateInstaller.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/UpdateInstaller.java
@@ -18,7 +18,7 @@
import android.annotation.Nullable;
import android.app.admin.DevicePolicyEventLogger;
-import android.app.admin.DevicePolicyManager;
+import android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback;
import android.app.admin.StartInstallingUpdateCallback;
import android.content.Context;
import android.content.Intent;
@@ -66,7 +66,7 @@
mCopiedUpdateFile = null;
if (!isBatteryLevelSufficient()) {
notifyCallbackOnError(
- DevicePolicyManager.InstallUpdateCallback.UPDATE_ERROR_BATTERY_LOW,
+ InstallSystemUpdateCallback.UPDATE_ERROR_BATTERY_LOW,
"The battery level must be above "
+ mConstants.BATTERY_THRESHOLD_NOT_CHARGING + " while not charging or"
+ "above " + mConstants.BATTERY_THRESHOLD_CHARGING + " while charging");
@@ -76,7 +76,7 @@
mCopiedUpdateFile = copyUpdateFileToDataOtaPackageDir();
if (mCopiedUpdateFile == null) {
notifyCallbackOnError(
- DevicePolicyManager.InstallUpdateCallback.UPDATE_ERROR_UNKNOWN,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN,
"Error while copying file.");
return;
}
@@ -111,7 +111,7 @@
} catch (IOException e) {
Log.w(TAG, "Failed to copy update file to OTA directory", e);
notifyCallbackOnError(
- DevicePolicyManager.InstallUpdateCallback.UPDATE_ERROR_UNKNOWN,
+ InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN,
Log.getStackTraceString(e));
return null;
}