Add SystemApi for retrieving device flash lock state
Bug: 26039090
Change-Id: Ib51c4862d897cc91a0788379c761ed49a2adf271
diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java
index a291cc7..2085f32 100644
--- a/services/core/java/com/android/server/PersistentDataBlockService.java
+++ b/services/core/java/com/android/server/PersistentDataBlockService.java
@@ -27,6 +27,7 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.service.persistentdata.IPersistentDataBlockService;
+import android.service.persistentdata.PersistentDataBlockManager;
import android.util.Slog;
import com.android.internal.R;
@@ -72,6 +73,9 @@
private static final int MAX_DATA_BLOCK_SIZE = 1024 * 100;
public static final int DIGEST_SIZE_BYTES = 32;
private static final String OEM_UNLOCK_PROP = "sys.oem_unlock_allowed";
+ private static final String FLASH_LOCK_PROP = "ro.boot.flash.locked";
+ private static final String FLASH_LOCK_LOCKED = "1";
+ private static final String FLASH_LOCK_UNLOCKED = "0";
private final Context mContext;
private final String mDataBlockFile;
@@ -454,6 +458,20 @@
}
@Override
+ public int getFlashLockState() {
+ enforceOemUnlockPermission();
+ String locked = SystemProperties.get(FLASH_LOCK_PROP);
+ switch (locked) {
+ case FLASH_LOCK_LOCKED:
+ return PersistentDataBlockManager.FLASH_LOCK_LOCKED;
+ case FLASH_LOCK_UNLOCKED:
+ return PersistentDataBlockManager.FLASH_LOCK_UNLOCKED;
+ default:
+ return PersistentDataBlockManager.FLASH_LOCK_UNKNOWN;
+ }
+ }
+
+ @Override
public int getDataBlockSize() {
enforcePersistentDataBlockAccess();