Fix "max failed login attempts" disclosure

Among other things, the managed device info page informs the user when
their administrator sets the "max failed login attempts" policy. This
disclosure does not show up when set by the Device Owner right now
because the code expects it to have been set by a Profile Owner.

This was a regression introduced by ag/2039754.

Bug: 63696536
Test: CTSVerifier: Managed Provisioning > Device Owner Tests >
Test:     Managed device info tests > Wipe on authentication failure

Change-Id: I5c53f325a1acfb98c72178ac9dab78f18f714c51
This commit is contained in:
Bartosz Fabianowski
2017-07-17 12:41:52 +02:00
parent 4b4ad6efc2
commit 3a0e1f8ea7
4 changed files with 23 additions and 3 deletions

View File

@@ -44,6 +44,13 @@ public interface DevicePolicyManagerWrapper {
*/
int getMaximumFailedPasswordsForWipe(@Nullable ComponentName admin, int userHandle);
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerComponentOnCallingUser()}.
*
* @see android.app.admin.DevicePolicyManager#getDeviceOwnerComponentOnCallingUser
*/
ComponentName getDeviceOwnerComponentOnCallingUser();
/**
* Calls {@code DevicePolicyManager.getDeviceOwnerComponentOnAnyUser()}.
*

View File

@@ -41,6 +41,11 @@ public class DevicePolicyManagerWrapperImpl implements DevicePolicyManagerWrappe
return mDpm.getMaximumFailedPasswordsForWipe(admin, userHandle);
}
@Override
public ComponentName getDeviceOwnerComponentOnCallingUser() {
return mDpm.getDeviceOwnerComponentOnCallingUser();
}
@Override
public ComponentName getDeviceOwnerComponentOnAnyUser() {
return mDpm.getDeviceOwnerComponentOnAnyUser();

View File

@@ -158,11 +158,14 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
@Override
public int getMaximumFailedPasswordsBeforeWipeInCurrentUser() {
final ComponentName profileOwner = mDpm.getProfileOwnerAsUser(MY_USER_ID);
if (profileOwner == null) {
ComponentName owner = mDpm.getDeviceOwnerComponentOnCallingUser();
if (owner == null) {
owner = mDpm.getProfileOwnerAsUser(MY_USER_ID);
}
if (owner == null) {
return 0;
}
return mDpm.getMaximumFailedPasswordsForWipe(profileOwner, MY_USER_ID);
return mDpm.getMaximumFailedPasswordsForWipe(owner, MY_USER_ID);
}
@Override

View File

@@ -231,6 +231,7 @@ public final class EnterprisePrivacyFeatureProviderImplTest {
@Test
public void testGetMaximumFailedPasswordsForWipeInCurrentUser() {
when(mDevicePolicyManager.getDeviceOwnerComponentOnCallingUser()).thenReturn(null);
when(mDevicePolicyManager.getProfileOwnerAsUser(MY_USER_ID)).thenReturn(null);
when(mDevicePolicyManager.getMaximumFailedPasswordsForWipe(OWNER, MY_USER_ID))
.thenReturn(10);
@@ -238,6 +239,10 @@ public final class EnterprisePrivacyFeatureProviderImplTest {
when(mDevicePolicyManager.getProfileOwnerAsUser(MY_USER_ID)).thenReturn(OWNER);
assertThat(mProvider.getMaximumFailedPasswordsBeforeWipeInCurrentUser()).isEqualTo(10);
when(mDevicePolicyManager.getDeviceOwnerComponentOnCallingUser()).thenReturn(OWNER);
when(mDevicePolicyManager.getProfileOwnerAsUser(MY_USER_ID)).thenReturn(null);
assertThat(mProvider.getMaximumFailedPasswordsBeforeWipeInCurrentUser()).isEqualTo(10);
}
@Test