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
This commit is contained in:
Vishwath Mohan
2018-12-11 11:59:01 -08:00
parent ca32293e76
commit b6dad935ec
4 changed files with 121 additions and 1 deletions

View File

@@ -798,6 +798,17 @@
<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]-->

View File

@@ -40,4 +40,17 @@
android:key="power_button_instantly_locks"
android:title="@string/lockpattern_settings_enable_power_button_instantly_locks" />
</PreferenceScreen>
<!-- 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>

View File

@@ -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;
}
}

View File

@@ -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;
}
}