Merge "Revert "RecoverySystem: Fix the issue in installPackage().""
This commit is contained in:
@@ -25,5 +25,5 @@ interface IRecoverySystem {
|
|||||||
boolean uncrypt(in String packageFile, IRecoverySystemProgressListener listener);
|
boolean uncrypt(in String packageFile, IRecoverySystemProgressListener listener);
|
||||||
boolean setupBcb(in String command);
|
boolean setupBcb(in String command);
|
||||||
boolean clearBcb();
|
boolean clearBcb();
|
||||||
void rebootRecoveryWithCommand(in String command, in boolean update);
|
void rebootRecoveryWithCommand(in String command);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -491,10 +491,15 @@ public class RecoverySystem {
|
|||||||
command += securityArg;
|
command += securityArg;
|
||||||
}
|
}
|
||||||
|
|
||||||
// RECOVERY_SERVICE writes to BCB (bootloader control block) and triggers the reboot.
|
|
||||||
RecoverySystem rs = (RecoverySystem) context.getSystemService(
|
RecoverySystem rs = (RecoverySystem) context.getSystemService(
|
||||||
Context.RECOVERY_SERVICE);
|
Context.RECOVERY_SERVICE);
|
||||||
rs.rebootRecoveryWithCommand(command, true /* update */);
|
if (!rs.setupBcb(command)) {
|
||||||
|
throw new IOException("Setup BCB failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Having set up the BCB (bootloader control block), go ahead and reboot
|
||||||
|
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||||
|
pm.reboot(PowerManager.REBOOT_RECOVERY_UPDATE);
|
||||||
|
|
||||||
throw new IOException("Reboot failed (no permissions?)");
|
throw new IOException("Reboot failed (no permissions?)");
|
||||||
}
|
}
|
||||||
@@ -708,7 +713,7 @@ public class RecoverySystem {
|
|||||||
// Write the command into BCB (bootloader control block) and boot from
|
// Write the command into BCB (bootloader control block) and boot from
|
||||||
// there. Will not return unless failed.
|
// there. Will not return unless failed.
|
||||||
RecoverySystem rs = (RecoverySystem) context.getSystemService(Context.RECOVERY_SERVICE);
|
RecoverySystem rs = (RecoverySystem) context.getSystemService(Context.RECOVERY_SERVICE);
|
||||||
rs.rebootRecoveryWithCommand(command.toString(), false);
|
rs.rebootRecoveryWithCommand(command.toString());
|
||||||
|
|
||||||
throw new IOException("Reboot failed (no permissions?)");
|
throw new IOException("Reboot failed (no permissions?)");
|
||||||
}
|
}
|
||||||
@@ -908,9 +913,9 @@ public class RecoverySystem {
|
|||||||
* Talks to RecoverySystemService via Binder to set up the BCB command and
|
* Talks to RecoverySystemService via Binder to set up the BCB command and
|
||||||
* reboot into recovery accordingly.
|
* reboot into recovery accordingly.
|
||||||
*/
|
*/
|
||||||
private void rebootRecoveryWithCommand(String command, boolean update) {
|
private void rebootRecoveryWithCommand(String command) {
|
||||||
try {
|
try {
|
||||||
mService.rebootRecoveryWithCommand(command, update);
|
mService.rebootRecoveryWithCommand(command);
|
||||||
} catch (RemoteException ignored) {
|
} catch (RemoteException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ public final class RecoverySystemService extends SystemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override // Binder call
|
@Override // Binder call
|
||||||
public void rebootRecoveryWithCommand(String command, boolean update) {
|
public void rebootRecoveryWithCommand(String command) {
|
||||||
if (DEBUG) Slog.d(TAG, "rebootRecoveryWithCommand: [" + command + "]");
|
if (DEBUG) Slog.d(TAG, "rebootRecoveryWithCommand: [" + command + "]");
|
||||||
synchronized (sRequestLock) {
|
synchronized (sRequestLock) {
|
||||||
if (!setupOrClearBcb(true, command)) {
|
if (!setupOrClearBcb(true, command)) {
|
||||||
@@ -190,10 +190,7 @@ public final class RecoverySystemService extends SystemService {
|
|||||||
|
|
||||||
// Having set up the BCB, go ahead and reboot.
|
// Having set up the BCB, go ahead and reboot.
|
||||||
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
|
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
|
||||||
// PowerManagerService may additionally request uncrypting the package when it's
|
pm.reboot(PowerManager.REBOOT_RECOVERY);
|
||||||
// to install an update (REBOOT_RECOVERY_UPDATE).
|
|
||||||
pm.reboot(update ? PowerManager.REBOOT_RECOVERY_UPDATE :
|
|
||||||
PowerManager.REBOOT_RECOVERY);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user