OSDN Git Service

Honor password visible setting in CryptKeeper
authorPaul Lawrence <paullawrence@google.com>
Mon, 18 May 2015 20:25:01 +0000 (13:25 -0700)
committerPaul Lawrence <paullawrence@google.com>
Wed, 27 May 2015 20:33:46 +0000 (20:33 +0000)
Requires matching framework change:
  https://googleplex-android-review.git.corp.google.com/#/c/692822/

Bug: 20184626
Change-Id: I04bfb9ed61a7b40fbc28fbc0b4b10bf848b34a2c

src/com/android/settings/CryptKeeper.java
src/com/android/settings/CryptKeeperConfirm.java
src/com/android/settings/SecuritySettings.java

index 653a781..b4f19dd 100644 (file)
@@ -474,6 +474,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
                 int passwordType = StorageManager.CRYPT_TYPE_PASSWORD;
                 String owner_info;
                 boolean pattern_visible;
+                boolean password_visible;
 
                 @Override
                 public Void doInBackground(Void... v) {
@@ -482,6 +483,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
                         passwordType = service.getPasswordType();
                         owner_info = service.getField(StorageManager.OWNER_INFO_KEY);
                         pattern_visible = !("0".equals(service.getField(StorageManager.PATTERN_VISIBLE_KEY)));
+                        password_visible = !("0".equals(service.getField(StorageManager.PASSWORD_VISIBLE_KEY)));
                     } catch (Exception e) {
                         Log.e(TAG, "Error calling mount service " + e);
                     }
@@ -491,6 +493,9 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
 
                 @Override
                 public void onPostExecute(java.lang.Void v) {
+                    Settings.System.putInt(getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD,
+                                  password_visible ? 1 : 0);
+
                     if (passwordType == StorageManager.CRYPT_TYPE_PIN) {
                         setContentView(R.layout.crypt_keeper_pin_entry);
                         mStatusString = R.string.enter_pin;
index 513a428..45b50f6 100644 (file)
@@ -27,6 +27,7 @@ import android.os.IBinder;
 import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.os.storage.IMountService;
+import android.provider.Settings;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -127,6 +128,11 @@ public class CryptKeeperConfirm extends InstrumentedFragment {
                 utils.setOwnerInfo(utils.getOwnerInfo(UserHandle.USER_OWNER),
                                    UserHandle.USER_OWNER);
             }
+            int value = Settings.System.getInt(getContext().getContentResolver(),
+                                               Settings.System.TEXT_SHOW_PASSWORD,
+                                               1);
+            utils.setVisiblePasswordEnabled(value != 0, UserHandle.USER_OWNER);
+
             Intent intent = new Intent(getActivity(), Blank.class);
             intent.putExtras(getArguments());
             startActivity(intent);
index 1c0f445..8f6c849 100644 (file)
@@ -689,6 +689,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
         } else if (KEY_SHOW_PASSWORD.equals(key)) {
             Settings.System.putInt(getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD,
                     ((Boolean) value) ? 1 : 0);
+            lockPatternUtils.setVisiblePasswordEnabled((Boolean) value, MY_USER_ID);
         } else if (KEY_TOGGLE_INSTALL_APPLICATIONS.equals(key)) {
             if ((Boolean) value) {
                 mToggleAppInstallation.setChecked(false);