diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 8ff56f8cc1397..4bbaaa1c18756 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -939,4 +939,6 @@ public class StorageManager { public static final String OWNER_INFO_KEY = "OwnerInfo"; /** @hide */ public static final String PATTERN_VISIBLE_KEY = "PatternVisible"; + /** @hide */ + public static final String PASSWORD_VISIBLE_KEY = "PasswordVisible"; } diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index e5ef60cc991e5..55b058c55b1d9 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -956,6 +956,29 @@ public class LockPatternUtils { } } + /** + * Set whether the visible password is enabled for cryptkeeper screen. + */ + public void setVisiblePasswordEnabled(boolean enabled, int userId) { + // Update for crypto if owner + if (userId != UserHandle.USER_OWNER) { + return; + } + + IBinder service = ServiceManager.getService("mount"); + if (service == null) { + Log.e(TAG, "Could not find the mount service to update the user info"); + return; + } + + IMountService mountService = IMountService.Stub.asInterface(service); + try { + mountService.setField(StorageManager.PASSWORD_VISIBLE_KEY, enabled ? "1" : "0"); + } catch (RemoteException e) { + Log.e(TAG, "Error changing password visible state", e); + } + } + /** * @return Whether tactile feedback for the pattern is enabled. */