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()); } + + }