Merge "On Settings lockscreen changes send new safety status to Safety Center." into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1a2adf5115
@@ -75,6 +75,7 @@ import com.android.settings.biometrics.BiometricEnrollActivity;
|
|||||||
import com.android.settings.biometrics.BiometricEnrollBase;
|
import com.android.settings.biometrics.BiometricEnrollBase;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
|
import com.android.settings.safetycenter.LockScreenSafetySource;
|
||||||
import com.android.settings.search.SearchFeatureProvider;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
|
||||||
@@ -856,6 +857,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
}
|
}
|
||||||
mLockPatternUtils.setLockScreenDisabled(disabled, mUserId);
|
mLockPatternUtils.setLockScreenDisabled(disabled, mUserId);
|
||||||
getActivity().setResult(Activity.RESULT_OK);
|
getActivity().setResult(Activity.RESULT_OK);
|
||||||
|
LockScreenSafetySource.onLockScreenChange(getContext());
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,13 +18,13 @@ package com.android.settings.password;
|
|||||||
|
|
||||||
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
|
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
|
||||||
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
|
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
|
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.PASSWORD_RECENTLY_USED;
|
import static android.app.admin.DevicePolicyResources.Strings.Settings.PASSWORD_RECENTLY_USED;
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.PIN_RECENTLY_USED;
|
import static android.app.admin.DevicePolicyResources.Strings.Settings.PIN_RECENTLY_USED;
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PASSWORD_HEADER;
|
import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PASSWORD_HEADER;
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PIN_HEADER;
|
import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_WORK_PROFILE_PIN_HEADER;
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PASSWORD_HEADER;
|
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PASSWORD_HEADER;
|
||||||
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PIN_HEADER;
|
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PIN_HEADER;
|
||||||
|
import static android.app.admin.DevicePolicyResources.Strings.UNDEFINED;
|
||||||
|
|
||||||
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
|
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
|
||||||
import static com.android.internal.widget.PasswordValidationError.CONTAINS_INVALID_CHARACTERS;
|
import static com.android.internal.widget.PasswordValidationError.CONTAINS_INVALID_CHARACTERS;
|
||||||
|
@@ -30,6 +30,7 @@ import androidx.fragment.app.Fragment;
|
|||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.internal.widget.LockscreenCredential;
|
import com.android.internal.widget.LockscreenCredential;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.safetycenter.LockScreenSafetySource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An invisible retained worker fragment to track the AsyncWork that saves (and optionally
|
* An invisible retained worker fragment to track the AsyncWork that saves (and optionally
|
||||||
@@ -110,6 +111,7 @@ abstract class SaveChosenLockWorkerBase extends Fragment {
|
|||||||
if (mUnificationProfileCredential != null) {
|
if (mUnificationProfileCredential != null) {
|
||||||
mUnificationProfileCredential.zeroize();
|
mUnificationProfileCredential.zeroize();
|
||||||
}
|
}
|
||||||
|
LockScreenSafetySource.onLockScreenChange(getContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBlocking(boolean blocking) {
|
public void setBlocking(boolean blocking) {
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.safetycenter;
|
package com.android.settings.safetycenter;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
@@ -72,6 +73,13 @@ public final class LockScreenSafetySource {
|
|||||||
SafetyCenterManagerWrapper.get().sendSafetyCenterUpdate(context, safetySourceData);
|
SafetyCenterManagerWrapper.get().sendSafetyCenterUpdate(context, safetySourceData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Notifies Safety Center of a change in lock screen settings. */
|
||||||
|
public static void onLockScreenChange(Context context) {
|
||||||
|
sendSafetyData(
|
||||||
|
context,
|
||||||
|
new ScreenLockPreferenceDetailsUtils(context, SettingsEnums.SAFETY_CENTER));
|
||||||
|
}
|
||||||
|
|
||||||
private static IconAction createGearMenuIconAction(Context context,
|
private static IconAction createGearMenuIconAction(Context context,
|
||||||
ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) {
|
ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) {
|
||||||
return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction(
|
return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction(
|
||||||
|
@@ -33,7 +33,9 @@ import android.safetycenter.SafetySourceStatus.IconAction;
|
|||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.settings.security.ScreenLockPreferenceDetailsUtils;
|
import com.android.settings.security.ScreenLockPreferenceDetailsUtils;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.ResourcesUtils;
|
import com.android.settings.testutils.ResourcesUtils;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -59,11 +61,17 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private ScreenLockPreferenceDetailsUtils mScreenLockPreferenceDetailsUtils;
|
private ScreenLockPreferenceDetailsUtils mScreenLockPreferenceDetailsUtils;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private LockPatternUtils mLockPatternUtils;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mApplicationContext = ApplicationProvider.getApplicationContext();
|
mApplicationContext = ApplicationProvider.getApplicationContext();
|
||||||
SafetyCenterManagerWrapper.sInstance = mSafetyCenterManagerWrapper;
|
SafetyCenterManagerWrapper.sInstance = mSafetyCenterManagerWrapper;
|
||||||
|
final FakeFeatureFactory featureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
when(featureFactory.securityFeatureProvider.getLockPatternUtils(mApplicationContext))
|
||||||
|
.thenReturn(mLockPatternUtils);
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -72,8 +80,10 @@ public class LockScreenSafetySourceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenSafetyCenterIsDisabled_sendsNoData() {
|
public void sendSafetyData_whenScreenLockIsEnabled_whenSafetyCenterIsDisabled_sendsNoData() {
|
||||||
|
whenScreenLockIsEnabled();
|
||||||
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false);
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false);
|
||||||
|
when(mScreenLockPreferenceDetailsUtils.isAvailable()).thenReturn(true);
|
||||||
|
|
||||||
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
||||||
mScreenLockPreferenceDetailsUtils);
|
mScreenLockPreferenceDetailsUtils);
|
||||||
@@ -95,6 +105,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenScreenLockIsEnabled_sendsData() {
|
public void sendSafetyData_whenScreenLockIsEnabled_sendsData() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
|
|
||||||
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
||||||
mScreenLockPreferenceDetailsUtils);
|
mScreenLockPreferenceDetailsUtils);
|
||||||
@@ -119,6 +130,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenLockPatternIsSecure_sendsStatusLevelOk() {
|
public void sendSafetyData_whenLockPatternIsSecure_sendsStatusLevelOk() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
when(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).thenReturn(true);
|
when(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).thenReturn(true);
|
||||||
|
|
||||||
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
||||||
@@ -136,6 +148,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenLockPatternIsNotSecure_sendsStatusLevelRecommendation() {
|
public void sendSafetyData_whenLockPatternIsNotSecure_sendsStatusLevelRecommendation() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
when(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).thenReturn(false);
|
when(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).thenReturn(false);
|
||||||
|
|
||||||
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
||||||
@@ -153,6 +166,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenPasswordQualityIsManaged_sendsDisabled() {
|
public void sendSafetyData_whenPasswordQualityIsManaged_sendsDisabled() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
when(mScreenLockPreferenceDetailsUtils.isPasswordQualityManaged(anyInt(), any()))
|
when(mScreenLockPreferenceDetailsUtils.isPasswordQualityManaged(anyInt(), any()))
|
||||||
.thenReturn(true);
|
.thenReturn(true);
|
||||||
|
|
||||||
@@ -170,6 +184,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenPasswordQualityIsNotManaged_sendsEnabled() {
|
public void sendSafetyData_whenPasswordQualityIsNotManaged_sendsEnabled() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
when(mScreenLockPreferenceDetailsUtils.isPasswordQualityManaged(anyInt(), any()))
|
when(mScreenLockPreferenceDetailsUtils.isPasswordQualityManaged(anyInt(), any()))
|
||||||
.thenReturn(false);
|
.thenReturn(false);
|
||||||
|
|
||||||
@@ -187,6 +202,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenShouldShowGearMenu_sendsGearMenuActionIcon() {
|
public void sendSafetyData_whenShouldShowGearMenu_sendsGearMenuActionIcon() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
final Intent launchScreenLockSettings = new Intent(FAKE_ACTION_SCREEN_LOCK_SETTINGS);
|
final Intent launchScreenLockSettings = new Intent(FAKE_ACTION_SCREEN_LOCK_SETTINGS);
|
||||||
when(mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent())
|
when(mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent())
|
||||||
.thenReturn(launchScreenLockSettings);
|
.thenReturn(launchScreenLockSettings);
|
||||||
@@ -208,6 +224,7 @@ public class LockScreenSafetySourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendSafetyData_whenShouldNotShowGearMenu_sendsNoGearMenuActionIcon() {
|
public void sendSafetyData_whenShouldNotShowGearMenu_sendsNoGearMenuActionIcon() {
|
||||||
whenScreenLockIsEnabled();
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
when(mScreenLockPreferenceDetailsUtils.shouldShowGearMenu()).thenReturn(false);
|
when(mScreenLockPreferenceDetailsUtils.shouldShowGearMenu()).thenReturn(false);
|
||||||
|
|
||||||
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
LockScreenSafetySource.sendSafetyData(mApplicationContext,
|
||||||
@@ -221,8 +238,27 @@ public class LockScreenSafetySourceTest {
|
|||||||
assertThat(safetySourceStatus.getIconAction()).isNull();
|
assertThat(safetySourceStatus.getIconAction()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void whenScreenLockIsEnabled() {
|
@Test
|
||||||
|
public void onLockScreenChange_whenSafetyCenterEnabled_sendsData() {
|
||||||
|
whenScreenLockIsEnabled();
|
||||||
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
|
||||||
|
|
||||||
|
LockScreenSafetySource.onLockScreenChange(mApplicationContext);
|
||||||
|
|
||||||
|
verify(mSafetyCenterManagerWrapper).sendSafetyCenterUpdate(any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onLockScreenChange_whenSafetyCenterDisabled_sendsNoData() {
|
||||||
|
whenScreenLockIsEnabled();
|
||||||
|
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false);
|
||||||
|
|
||||||
|
LockScreenSafetySource.onLockScreenChange(mApplicationContext);
|
||||||
|
|
||||||
|
verify(mSafetyCenterManagerWrapper, never()).sendSafetyCenterUpdate(any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void whenScreenLockIsEnabled() {
|
||||||
when(mScreenLockPreferenceDetailsUtils.isAvailable()).thenReturn(true);
|
when(mScreenLockPreferenceDetailsUtils.isAvailable()).thenReturn(true);
|
||||||
when(mScreenLockPreferenceDetailsUtils.getSummary(anyInt())).thenReturn(SUMMARY);
|
when(mScreenLockPreferenceDetailsUtils.getSummary(anyInt())).thenReturn(SUMMARY);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user