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

Commit 9eb22262 authored by Felipe Leme's avatar Felipe Leme Committed by Automerger Merge Worker
Browse files

Merge "Disabled DevicePolicyManager.setLocationEnabled() for automotive." into...

Merge "Disabled DevicePolicyManager.setLocationEnabled() for automotive." into sc-dev am: 05645200

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14299132

Change-Id: Idd5ba4639b2254fd530b55dcf0262a7224a10222
parents 9550d2f6 05645200
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -10368,6 +10368,9 @@ 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
     * @throws SecurityException if {@code admin} is not a device owner.
+12 −4
Original line number Diff line number Diff line
@@ -11931,17 +11931,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        final CallerIdentity caller = getCallerIdentity(who);
        Preconditions.checkCallAuthorization(isDeviceOwner(caller));
        UserHandle userHandle = caller.getUserHandle();
        if (mIsAutomotive) {
            Slogf.v(LOG_TAG, "setLocationEnabled(%s, %b): ignoring for user %s on automotive build",
                    who.flattenToShortString(), locationEnabled, userHandle);
            return;
        }
        mInjector.binderWithCleanCallingIdentity(() -> {
            boolean wasLocationEnabled = mInjector.getLocationManager().isLocationEnabledForUser(
                    caller.getUserHandle());
            mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled,
                    caller.getUserHandle());
                    userHandle);
            Slogf.v(LOG_TAG, "calling locationManager.setLocationEnabledForUser(%b, %s)",
                    locationEnabled, userHandle);
            mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, userHandle);
            // make a best effort to only show the notification if the admin is actually enabling
            // location. this is subject to race conditions with settings changes, but those are
            // unlikely to realistically interfere
            if (locationEnabled && !wasLocationEnabled) {
                showLocationSettingsEnabledNotification(caller.getUserHandle());
                showLocationSettingsEnabledNotification(userHandle);
            }
        });