Merge "Making it possible to call setFirstBoot when mInstallD is available" into tm-dev am: bf7fddee01
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18029278 Change-Id: Ic01a0c63b88fecd26dac3862d80a159076b84a88 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;
|
IInstalld.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES;
|
||||||
|
|
||||||
private final boolean mIsolated;
|
private final boolean mIsolated;
|
||||||
|
private volatile boolean mDeferSetFirstBoot;
|
||||||
private volatile IInstalld mInstalld;
|
private volatile IInstalld mInstalld;
|
||||||
private volatile Object mWarnIfHeld;
|
private volatile Object mWarnIfHeld;
|
||||||
|
|
||||||
@@ -171,6 +171,7 @@ public class Installer extends SystemService {
|
|||||||
mInstalld = IInstalld.Stub.asInterface(binder);
|
mInstalld = IInstalld.Stub.asInterface(binder);
|
||||||
try {
|
try {
|
||||||
invalidateMounts();
|
invalidateMounts();
|
||||||
|
executeDeferredActions();
|
||||||
} catch (InstallerException ignored) {
|
} catch (InstallerException ignored) {
|
||||||
}
|
}
|
||||||
} else {
|
} 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.
|
* Do several pre-flight checks before making a remote call.
|
||||||
*
|
*
|
||||||
@@ -291,8 +301,15 @@ public class Installer extends SystemService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
// mInstalld might be null if the connection could not be established.
|
||||||
|
if (mInstalld != null) {
|
||||||
mInstalld.setFirstBoot();
|
mInstalld.setFirstBoot();
|
||||||
} catch (RemoteException e) {
|
} 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);
|
throw InstallerException.from(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user