From b6dad935ec04ad2352dbd9f22529efa63986534b Mon Sep 17 00:00:00 2001 From: Vishwath Mohan Date: Tue, 11 Dec 2018 11:59:01 -0800 Subject: [PATCH] Add settings to control Extended Access mode. 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 | 11 +++++ res/xml/screen_lock_settings.xml | 15 +++++- ...gentsExtendUnlockPreferenceController.java | 48 +++++++++++++++++++ ...stLostLocksScreenPreferenceController.java | 48 +++++++++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java create mode 100644 src/com/android/settings/security/trustagent/TrustLostLocksScreenPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml index b6d923953bf..6a5c7bbde65 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -798,6 +798,17 @@ Show lockdown option Display power button option that turns off Smart Lock, fingerprint unlocking, and notifications on the lock screen + + + SmartLock only extends unlock + + If enabled, SmartLock will keep your device unlocked for longer, but can no longer unlock a locked device. + + + Lock screen when trust is lost + + If enabled, the device will lock when the last trust agent loses trust + None diff --git a/res/xml/screen_lock_settings.xml b/res/xml/screen_lock_settings.xml index 43f96e92a3c..29c8de984cc 100644 --- a/res/xml/screen_lock_settings.xml +++ b/res/xml/screen_lock_settings.xml @@ -40,4 +40,17 @@ android:key="power_button_instantly_locks" android:title="@string/lockpattern_settings_enable_power_button_instantly_locks" /> - \ No newline at end of file + + + + + + diff --git a/src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java b/src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java new file mode 100644 index 00000000000..bfbebaff865 --- /dev/null +++ b/src/com/android/settings/security/trustagent/TrustAgentsExtendUnlockPreferenceController.java @@ -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 index 00000000000..b5e0dd76ae2 --- /dev/null +++ b/src/com/android/settings/security/trustagent/TrustLostLocksScreenPreferenceController.java @@ -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; + } +}