From 754ca518422a2a633fc4d49436db7b15b4be0e84 Mon Sep 17 00:00:00 2001 From: yuemingw Date: Wed, 3 Jan 2018 18:09:31 +0000 Subject: [PATCH] Disable UI in Settings app when DISALLOW_CONFIG_LOCATION_MODE is set. Bug: 67674888 Test: m -j RunSettingsRoboTest Change-Id: I13a4fa4a3122bfd9b84f935c0aa83c019490eac9 --- .../settings/location/LocationEnabler.java | 9 ++++++++- .../location/LocationEnablerTest.java | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/location/LocationEnabler.java b/src/com/android/settings/location/LocationEnabler.java index 5c5399ceff9..4dcdac0c456 100644 --- a/src/com/android/settings/location/LocationEnabler.java +++ b/src/com/android/settings/location/LocationEnabler.java @@ -34,6 +34,7 @@ import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; import static com.android.settingslib.Utils.updateLocationMode; +import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; /** * A class that listens to location settings change and modifies location settings @@ -140,8 +141,14 @@ public class LocationEnabler implements LifecycleObserver, OnResume, OnPause { } RestrictedLockUtils.EnforcedAdmin getShareLocationEnforcedAdmin(int userId) { - return RestrictedLockUtils.checkIfRestrictionEnforced( + RestrictedLockUtils.EnforcedAdmin admin = checkIfRestrictionEnforced( mContext, UserManager.DISALLOW_SHARE_LOCATION, userId); + + if (admin == null) { + admin = RestrictedLockUtils.checkIfRestrictionEnforced( + mContext, UserManager.DISALLOW_CONFIG_LOCATION_MODE, userId); + } + return admin; } boolean hasShareLocationRestriction(int userId) { diff --git a/tests/robotests/src/com/android/settings/location/LocationEnablerTest.java b/tests/robotests/src/com/android/settings/location/LocationEnablerTest.java index 462b926d383..f456f4109e5 100644 --- a/tests/robotests/src/com/android/settings/location/LocationEnablerTest.java +++ b/tests/robotests/src/com/android/settings/location/LocationEnablerTest.java @@ -209,6 +209,23 @@ public class LocationEnablerTest { assertThat(mEnabler.isManagedProfileRestrictedByBase()).isTrue(); } + @Test + public void setRestriction_getShareLocationEnforcedAdmin_shouldReturnEnforcedAdmin() { + int userId = UserHandle.myUserId(); + List 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_LOCATION_MODE, UserHandle.of(userId))) + .thenReturn(enforcingUsers); + + assertThat(mEnabler.getShareLocationEnforcedAdmin(userId) != null).isTrue(); + } + private void mockManagedProfile() { final List userProfiles = new ArrayList<>(); final UserHandle userHandle = mock(UserHandle.class); @@ -223,4 +240,6 @@ public class LocationEnablerTest { private static ArgumentMatcher actionMatches(String expected) { return intent -> TextUtils.equals(expected, intent.getAction()); } + + }