Add page Settings->Security & lock screen->Lock screen preferences.

- add the new preference screen that contains configuration for lock
screen notification, add user when locked, and owner info.
- refactor SecuritySettings to use the new owner info controller.

Fix: 36163515
Test: make RunSettingsRoboTests

Change-Id: I3bada8f652f89ed0af7aebc03f0bf2f637296b4d
This commit is contained in:
Doris Ling
2017-03-16 13:20:15 -07:00
parent 866497392d
commit 93582995da
13 changed files with 520 additions and 38 deletions

View File

@@ -16,7 +16,6 @@
package com.android.settings;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -67,6 +66,7 @@ import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.search2.SearchFeatureProvider;
import com.android.settings.security.OwnerInfoPreferenceController;
import com.android.settings.security.SecurityFeatureProvider;
import com.android.settings.trustagent.TrustAgentManager;
import com.android.settings.widget.GearPreference;
@@ -917,11 +917,10 @@ public class SecuritySettings extends SettingsPreferenceFragment
}
public static class SecuritySubSettings extends SettingsPreferenceFragment
implements OnPreferenceChangeListener {
implements OnPreferenceChangeListener, OwnerInfoPreferenceController.OwnerInfoCallback {
private static final String KEY_VISIBLE_PATTERN = "visiblepattern";
private static final String KEY_LOCK_AFTER_TIMEOUT = "lock_after_timeout";
private static final String KEY_OWNER_INFO_SETTINGS = "owner_info_settings";
private static final String KEY_POWER_INSTANTLY_LOCKS = "power_button_instantly_locks";
// These switch preferences need special handling since they're not all stored in Settings.
@@ -931,11 +930,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
private TimeoutListPreference mLockAfter;
private SwitchPreference mVisiblePattern;
private SwitchPreference mPowerButtonInstantlyLocks;
private RestrictedPreference mOwnerInfoPref;
private TrustAgentManager mTrustAgentManager;
private LockPatternUtils mLockPatternUtils;
private DevicePolicyManager mDPM;
private OwnerInfoPreferenceController mOwnerInfoPreferenceController;
@Override
public int getMetricsCategory() {
@@ -950,6 +949,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
mTrustAgentManager = securityFeatureProvider.getTrustAgentManager();
mLockPatternUtils = new LockPatternUtils(getContext());
mDPM = getContext().getSystemService(DevicePolicyManager.class);
mOwnerInfoPreferenceController =
new OwnerInfoPreferenceController(getContext(), this, null /* lifecycle */);
createPreferenceHierarchy();
}
@@ -968,7 +969,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
mLockPatternUtils.getPowerButtonInstantlyLocks(MY_USER_ID));
}
updateOwnerInfo();
mOwnerInfoPreferenceController.updateSummary();
}
@Override
@@ -1010,26 +1011,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
trustAgentLabel));
}
mOwnerInfoPref = (RestrictedPreference) findPreference(KEY_OWNER_INFO_SETTINGS);
if (mOwnerInfoPref != null) {
if (mLockPatternUtils.isDeviceOwnerInfoEnabled()) {
EnforcedAdmin admin = RestrictedLockUtils.getDeviceOwner(getActivity());
mOwnerInfoPref.setDisabledByAdmin(admin);
} else {
mOwnerInfoPref.setDisabledByAdmin(null);
mOwnerInfoPref.setEnabled(!mLockPatternUtils.isLockScreenDisabled(MY_USER_ID));
if (mOwnerInfoPref.isEnabled()) {
mOwnerInfoPref.setOnPreferenceClickListener(
new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
OwnerInfoSettings.show(SecuritySubSettings.this);
return true;
}
});
}
}
}
mOwnerInfoPreferenceController.displayPreference(getPreferenceScreen());
mOwnerInfoPreferenceController.updateEnableState();
for (int i = 0; i < SWITCH_PREFERENCE_KEYS.length; i++) {
final Preference pref = findPreference(SWITCH_PREFERENCE_KEYS[i]);
@@ -1093,17 +1076,9 @@ public class SecuritySettings extends SettingsPreferenceFragment
mLockAfter.setSummary(summary);
}
public void updateOwnerInfo() {
if (mOwnerInfoPref != null) {
if (mLockPatternUtils.isDeviceOwnerInfoEnabled()) {
mOwnerInfoPref.setSummary(
mLockPatternUtils.getDeviceOwnerInfo());
} else {
mOwnerInfoPref.setSummary(mLockPatternUtils.isOwnerInfoEnabled(MY_USER_ID)
? mLockPatternUtils.getOwnerInfo(MY_USER_ID)
: getString(R.string.owner_info_settings_summary));
}
}
@Override
public void onOwnerInfoUpdated() {
mOwnerInfoPreferenceController.updateSummary();
}
private static int getResIdForLockUnlockSubScreen(Context context,