Ignore the reboot to normal intent when DSU is locked
This feature provides the application with the ability to lock the device into DSU mode, allowing only authorized users to exit. Bug: 275484855 Test: manual testing with a slot name ends with ".lock" Change-Id: Ie00fd897daf2dfb11c2c792887a0e95ee164cea3
This commit is contained in:
@@ -285,4 +285,16 @@ public class DynamicSystemManager {
|
||||
throw new RuntimeException(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the active DSU slot
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM)
|
||||
public String getActiveDsuSlot() {
|
||||
try {
|
||||
return mService.getActiveDsuSlot();
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,4 +145,10 @@ interface IDynamicSystemService
|
||||
*/
|
||||
@EnforcePermission("MANAGE_DYNAMIC_SYSTEM")
|
||||
long suggestScratchSize();
|
||||
|
||||
/**
|
||||
* Get the active DSU slot
|
||||
*/
|
||||
@EnforcePermission("MANAGE_DYNAMIC_SYSTEM")
|
||||
String getActiveDsuSlot();
|
||||
}
|
||||
|
||||
@@ -423,7 +423,10 @@ public class DynamicSystemInstallationService extends Service
|
||||
Log.e(TAG, "It's already running in normal system.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mDynSystem.getActiveDsuSlot().endsWith(".lock")) {
|
||||
Log.e(TAG, "Ignore the reboot intent for a locked DSU slot");
|
||||
return;
|
||||
}
|
||||
if (!mDynSystem.setEnable(/* enable = */ false, /* oneShot = */ false)) {
|
||||
Log.e(TAG, "Failed to disable DynamicSystem.");
|
||||
|
||||
|
||||
@@ -226,9 +226,7 @@ public class DynamicSystemService extends IDynamicSystemService.Stub {
|
||||
IGsiService gsiService = getGsiService();
|
||||
if (enable) {
|
||||
try {
|
||||
if (mDsuSlot == null) {
|
||||
mDsuSlot = gsiService.getActiveDsuSlot();
|
||||
}
|
||||
getActiveDsuSlot();
|
||||
GsiServiceCallback callback = new GsiServiceCallback();
|
||||
synchronized (callback) {
|
||||
gsiService.enableGsiAsync(oneShot, mDsuSlot, callback);
|
||||
@@ -287,4 +285,15 @@ public class DynamicSystemService extends IDynamicSystemService.Stub {
|
||||
|
||||
return getGsiService().suggestScratchSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
@EnforcePermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM)
|
||||
public String getActiveDsuSlot() throws RemoteException {
|
||||
super.getActiveDsuSlot_enforcePermission();
|
||||
|
||||
if (mDsuSlot == null) {
|
||||
mDsuSlot = getGsiService().getActiveDsuSlot();
|
||||
}
|
||||
return mDsuSlot;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user