Merge "Block sleep options in Settings app when DISALLOW_CONFIG_SCREEN_TIMEOUT is set."
This commit is contained in:
committed by
Android (Google) Code Review
commit
a9f6d41635
@@ -13,9 +13,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.display;
|
package com.android.settings.display;
|
||||||
|
|
||||||
import android.app.admin.DevicePolicyManager;
|
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -25,10 +27,9 @@ import com.android.settings.TimeoutListPreference;
|
|||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
|
|
||||||
|
|
||||||
public class TimeoutPreferenceController extends AbstractPreferenceController implements
|
public class TimeoutPreferenceController extends AbstractPreferenceController implements
|
||||||
PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
|
PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
|
||||||
|
|
||||||
@@ -69,6 +70,13 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im
|
|||||||
timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin);
|
timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin);
|
||||||
}
|
}
|
||||||
updateTimeoutPreferenceDescription(timeoutListPreference, currentTimeout);
|
updateTimeoutPreferenceDescription(timeoutListPreference, currentTimeout);
|
||||||
|
|
||||||
|
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||||
|
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||||
|
UserHandle.myUserId());
|
||||||
|
if(admin != null) {
|
||||||
|
timeoutListPreference.removeUnusableTimeouts(0/* disable all*/, admin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,8 +20,12 @@ import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static junit.framework.Assert.assertEquals;
|
||||||
|
import static junit.framework.Assert.assertTrue;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -34,16 +38,20 @@ import com.android.settings.TestConfig;
|
|||||||
import com.android.settings.TimeoutListPreference;
|
import com.android.settings.TimeoutListPreference;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
|
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
|
||||||
@@ -93,4 +101,34 @@ public class TimeoutPreferenceControllerTest {
|
|||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
verify(mPreference).removeUnusableTimeouts(timeout, null);
|
verify(mPreference).removeUnusableTimeouts(timeout, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateStateWithAdminTimeoutsAndRestriction() {
|
||||||
|
final int profileUserId = UserHandle.myUserId();
|
||||||
|
final long timeout = 100;
|
||||||
|
when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
|
||||||
|
ShadowDevicePolicyManagerWrapper.setMaximumTimeToLock(profileUserId, timeout);
|
||||||
|
|
||||||
|
int userId = UserHandle.myUserId();
|
||||||
|
List<UserManager.EnforcingUser> enforcingUsers = new ArrayList<>();
|
||||||
|
// Add two enforcing users so that RestrictedLockUtils.checkIfRestrictionEnforced returns
|
||||||
|
// non-null.
|
||||||
|
enforcingUsers.add(new UserManager.EnforcingUser(userId,
|
||||||
|
UserManager.RESTRICTION_SOURCE_DEVICE_OWNER));
|
||||||
|
enforcingUsers.add(new UserManager.EnforcingUser(userId,
|
||||||
|
UserManager.RESTRICTION_SOURCE_PROFILE_OWNER));
|
||||||
|
when(mUserManager.getUserRestrictionSources(
|
||||||
|
UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, UserHandle.of(userId)))
|
||||||
|
.thenReturn(enforcingUsers);
|
||||||
|
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
ArgumentCaptor<Long> longCaptor = ArgumentCaptor.forClass(Long.class);
|
||||||
|
ArgumentCaptor<EnforcedAdmin> adminCaptor = ArgumentCaptor.forClass(EnforcedAdmin.class);
|
||||||
|
|
||||||
|
verify(mPreference, times(2)).removeUnusableTimeouts(
|
||||||
|
longCaptor.capture(), adminCaptor.capture());
|
||||||
|
assertEquals(0, (long)longCaptor.getValue());
|
||||||
|
assertTrue(adminCaptor.getValue() != null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -66,7 +66,8 @@ public class UserRestrictionTest {
|
|||||||
UserManager.DISALLOW_CONFIG_VPN,
|
UserManager.DISALLOW_CONFIG_VPN,
|
||||||
UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS,
|
UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS,
|
||||||
UserManager.DISALLOW_AIRPLANE_MODE,
|
UserManager.DISALLOW_AIRPLANE_MODE,
|
||||||
UserManager.DISALLOW_CONFIG_BRIGHTNESS
|
UserManager.DISALLOW_CONFIG_BRIGHTNESS,
|
||||||
|
UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT
|
||||||
);
|
);
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
Reference in New Issue
Block a user