Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2deff369 authored by Felipe Leme's avatar Felipe Leme
Browse files

Changed behavior of DPMS.setLocationEnabled() for automotive.

It should only be ignored when it's called to disable location.

Test: atest com.android.cts.devicepolicy.DeviceOwnerTest#testSetLocationEnabled
Fixes: 186263875

Change-Id: I71a4d91196f15b6e13bc0e87290bc0a9418ef87d
parent dd3707ad
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -10369,11 +10369,11 @@ public class DevicePolicyManager {
    /**
     * Called by device owners to set the user's global location setting.
     *
     * <p><b>Note: </b> this call is ignored on
     * {@link android.content.pm.PackageManager#FEATURE_AUTOMOTIVE automotive builds}.
     *
     * @param admin Which {@link DeviceAdminReceiver} this request is associated with
     * @param locationEnabled whether location should be enabled or disabled
     * @param locationEnabled whether location should be enabled or disabled. <b>Note: </b> on
     * {@link android.content.pm.PackageManager#FEATURE_AUTOMOTIVE automotive builds}, calls to
     * disable will be ignored.
     * @throws SecurityException if {@code admin} is not a device owner.
     */
    public void setLocationEnabled(@NonNull ComponentName admin, boolean locationEnabled) {
+4 −4
Original line number Diff line number Diff line
@@ -11987,8 +11987,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        Preconditions.checkCallAuthorization(isDeviceOwner(caller));
        UserHandle userHandle = caller.getUserHandle();
        if (mIsAutomotive) {
            Slogf.v(LOG_TAG, "setLocationEnabled(%s, %b): ignoring for user %s on automotive build",
        if (mIsAutomotive && !locationEnabled) {
            Slogf.i(LOG_TAG, "setLocationEnabled(%s, %b): ignoring for user %s on automotive build",
                    who.flattenToShortString(), locationEnabled, userHandle);
            return;
        }
@@ -11996,8 +11996,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        mInjector.binderWithCleanCallingIdentity(() -> {
            boolean wasLocationEnabled = mInjector.getLocationManager().isLocationEnabledForUser(
                    userHandle);
            Slogf.v(LOG_TAG, "calling locationManager.setLocationEnabledForUser(%b, %s)",
                    locationEnabled, userHandle);
            Slogf.v(LOG_TAG, "calling locationMgr.setLocationEnabledForUser(%b, %s) when it was %b",
                    locationEnabled, userHandle, wasLocationEnabled);
            mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, userHandle);
            // make a best effort to only show the notification if the admin is actually enabling