Merge "Making it possible to call setFirstBoot when mInstallD is available" into tm-dev am: bf7fddee01 am: 5c24f38b8d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18029278 Change-Id: I65e582797d96f334bd9df654c187f8134cb400dd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -119,7 +119,7 @@ public class Installer extends SystemService {
|
||||
IInstalld.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES;
|
||||
|
||||
private final boolean mIsolated;
|
||||
|
||||
private volatile boolean mDeferSetFirstBoot;
|
||||
private volatile IInstalld mInstalld;
|
||||
private volatile Object mWarnIfHeld;
|
||||
|
||||
@@ -171,6 +171,7 @@ public class Installer extends SystemService {
|
||||
mInstalld = IInstalld.Stub.asInterface(binder);
|
||||
try {
|
||||
invalidateMounts();
|
||||
executeDeferredActions();
|
||||
} catch (InstallerException ignored) {
|
||||
}
|
||||
} else {
|
||||
@@ -179,6 +180,15 @@ public class Installer extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform any deferred actions on mInstalld while the connection could not be made.
|
||||
*/
|
||||
private void executeDeferredActions() throws InstallerException {
|
||||
if (mDeferSetFirstBoot) {
|
||||
setFirstBoot();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do several pre-flight checks before making a remote call.
|
||||
*
|
||||
@@ -291,8 +301,15 @@ public class Installer extends SystemService {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
mInstalld.setFirstBoot();
|
||||
} catch (RemoteException e) {
|
||||
// mInstalld might be null if the connection could not be established.
|
||||
if (mInstalld != null) {
|
||||
mInstalld.setFirstBoot();
|
||||
} else {
|
||||
// if it is null while trying to set the first boot, set a flag to try and set the
|
||||
// first boot when the connection is eventually established
|
||||
mDeferSetFirstBoot = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw InstallerException.from(e);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user