OSDN Git Service

Accessibility no longer overrides strong encryption (Settings).
authorSvetoslav <svetoslavganov@google.com>
Fri, 17 Oct 2014 21:37:02 +0000 (14:37 -0700)
committerSvetoslav <svetoslavganov@google.com>
Fri, 17 Oct 2014 21:41:58 +0000 (14:41 -0700)
Updating the accessibility layer behavior to reflect the new
model where accessibility no longer overrides strong encryption.
Now enabling an accessibility service lowers the encryption
level but the user can bump it up in settings if desired.

bug:17881324

Change-Id: Iaf46cbabf1c19c193ea39b35add27aaa4ff509e4

src/com/android/settings/ChooseLockGeneric.java
src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java

index 89ba20b..40fa69e 100644 (file)
@@ -331,6 +331,10 @@ public class ChooseLockGeneric extends SettingsActivity {
         }
 
         private void updatePreferenceSummaryIfNeeded() {
+            if (LockPatternUtils.isDeviceEncrypted()) {
+                return;
+            }
+
             if (AccessibilityManager.getInstance(getActivity()).getEnabledAccessibilityServiceList(
                     AccessibilityServiceInfo.FEEDBACK_ALL_MASK).isEmpty()) {
                 return;
index 71b5862..08fba67 100644 (file)
@@ -55,7 +55,7 @@ public class ToggleAccessibilityServicePreferenceFragment
     private static final int DIALOG_ID_ENABLE_WARNING = 1;
     private static final int DIALOG_ID_DISABLE_WARNING = 2;
 
-    public static final int ACTIVITY_REQUEST_CONFIRM_CREDENTIAL = 1;
+    public static final int ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION = 1;
 
     private LockPatternUtils mLockPatternUtils;
 
@@ -284,9 +284,17 @@ public class ToggleAccessibilityServicePreferenceFragment
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == ACTIVITY_REQUEST_CONFIRM_CREDENTIAL) {
+        if (requestCode == ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION) {
             if (resultCode == Activity.RESULT_OK) {
                 handleConfirmServiceEnabled(true);
+                // The user confirmed that they accept weaker encryption when
+                // enabling the accessibility service, so change encryption.
+                // Since we came here asynchronously, check encryption again.
+                if (LockPatternUtils.isDeviceEncrypted()) {
+                    mLockPatternUtils.clearEncryptionPassword();
+                    Settings.Global.putInt(getContentResolver(),
+                            Settings.Global.REQUIRE_PASSWORD_TO_DECRYPT, 0);
+                }
             } else {
                 handleConfirmServiceEnabled(false);
             }
@@ -302,7 +310,8 @@ public class ToggleAccessibilityServicePreferenceFragment
                     if (LockPatternUtils.isDeviceEncrypted()) {
                         String title = createConfirmCredentialReasonMessage();
                         Intent intent = ConfirmDeviceCredentialActivity.createIntent(title, null);
-                        startActivityForResult(intent, ACTIVITY_REQUEST_CONFIRM_CREDENTIAL);
+                        startActivityForResult(intent,
+                                ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION);
                     } else {
                         handleConfirmServiceEnabled(true);
                     }