OSDN Git Service

Add settings to control Extended Access mode.
authorVishwath Mohan <vishwath@google.com>
Tue, 11 Dec 2018 19:59:01 +0000 (11:59 -0800)
committerVishwath Mohan <vishwath@google.com>
Thu, 13 Dec 2018 19:44:33 +0000 (19:44 +0000)
This CL adds settings (and two toggle controls) that help configure
how trust (from Trust Agents) should be interpreted by the platform,
allowing them to function in a purely extend unlock mode (where they
can extend how long an already unlocked device stays unlocked, but
cannot unlock a locked device).

These are temporary settings to help with dogfooding the new behavior,
and will eventually be removed. b/120871688 below is the tracking bug
to remove them.

Bug: 111435975
Bug: 120871688
Test: Tested with SmartLock modalities to confirm behavior in both
legacy and extend unlock modes is WAI.
Change-Id: If25098520ba98e82c98cc51fb226d8f2ce1aba80

res/values/strings.xml
res/xml/screen_lock_settings.xml
src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java [new file with mode: 0644]
src/com/android/settings/security/trustagent/TrustLostLocksScreenPreferenceController.java [new file with mode: 0644]

index b6d9239..6a5c7bb 100644 (file)
     <string name="lockdown_settings_title">Show lockdown option</string>
     <!-- Text shown for the description of the lockdown option -->
     <string name="lockdown_settings_summary">Display power button option that turns off Smart Lock, fingerprint unlocking, and notifications on the lock screen</string>
+
+    <!-- Text shown for the title of the extend unlock mode option for trust agents [CHAR LIMIT=40] -->
+    <string name="trust_agents_extend_unlock_title">SmartLock only extends unlock</string>
+    <!-- Text shown for the description of the extend unlock mode option [CHAR LIMIT=NONE] -->
+    <string name="trust_agents_extend_unlock_summary">If enabled, SmartLock will keep your device unlocked for longer, but can no longer unlock a locked device.</string>
+
+    <!-- Text shown for the title of the lock when trust lost option [CHAR LIMIT=40] -->
+    <string name="trust_lost_locks_screen_title">Lock screen when trust is lost</string>
+    <!-- Text shown for the description of the lock when trust lost option [CHAR LIMIT=NONE -->
+    <string name="trust_lost_locks_screen_summary">If enabled, the device will lock when the last trust agent loses trust</string>
+
     <!-- Text shown for summary of owner info setting (if none set) [CHAR LIMIT=40]-->
     <string name="owner_info_settings_summary">None</string>
     <!-- Description of how many characters are used in owner info [CHAR LIMIT=40]-->
index 43f96e9..29c8de9 100644 (file)
         android:key="power_button_instantly_locks"
         android:title="@string/lockpattern_settings_enable_power_button_instantly_locks" />
 
-</PreferenceScreen>
\ No newline at end of file
+    <!-- Temporarily available to evaluate extend unlock mode for SmartLock -->
+    <SwitchPreference
+        android:key="security_setting_trust_agents_extend_unlock"
+        android:title="@string/trust_agents_extend_unlock_title"
+        android:summary="@string/trust_agents_extend_unlock_summary"
+        settings:controller="com.android.settings.security.trustagent.TrustAgentsExtendUnlockPreferenceController" />
+
+    <SwitchPreference
+        android:key="security_setting_trust_lost_locks_screen"
+        android:title="@string/trust_lost_locks_screen_title"
+        android:summary="@string/trust_lost_locks_screen_summary"
+        settings:controller="com.android.settings.security.trustagent.TrustLostLocksScreenPreferenceController" />
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java b/src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java
new file mode 100644 (file)
index 0000000..bfbebaf
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.security.trustagent;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.settings.core.TogglePreferenceController;
+
+public class TrustAgentsExtendUnlockPreferenceController extends TogglePreferenceController {
+
+    public TrustAgentsExtendUnlockPreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TRUST_AGENTS_EXTEND_UNLOCK, 1) == 1;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.TRUST_AGENTS_EXTEND_UNLOCK, isChecked ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/settings/security/trustagent/TrustLostLocksScreenPreferenceController.java b/src/com/android/settings/security/trustagent/TrustLostLocksScreenPreferenceController.java
new file mode 100644 (file)
index 0000000..b5e0dd7
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.security.trustagent;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.settings.core.TogglePreferenceController;
+
+public class TrustLostLocksScreenPreferenceController extends TogglePreferenceController {
+
+    public TrustLostLocksScreenPreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_WHEN_TRUST_LOST, 1) == 1;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_WHEN_TRUST_LOST, isChecked ? 1 : 0);
+        return true;
+    }
+}