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

Commit b7c8877b authored by Felipe Leme's avatar Felipe Leme Committed by Jordan Jozwiak
Browse files

Do not power off display on lockNow() on automotive builds.

Test: manual verification
Fixes: 171517112

Change-Id: I410e06b911b099c0ed4b7b4e3ac493c9a272fa6b
Merged-In: I410e06b911b099c0ed4b7b4e3ac493c9a272fa6b
(cherry picked from commit fc586009)
parent 5df07126
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -4263,6 +4263,9 @@ public class DevicePolicyManager {
     * This method can be called on the {@link DevicePolicyManager} instance returned by
     * {@link #getParentProfileInstance(ComponentName)} in order to lock the parent profile.
     * <p>
     * NOTE: on {@link android.content.pm.PackageManager#FEATURE_AUTOMOTIVE automotive builds}, this
     * method doesn't turn off the screen as it would be a driving safety distraction.
     * <p>
     * Equivalent to calling {@link #lockNow(int)} with no flags.
     *
     * @throws SecurityException if the calling application does not own an active administrator
@@ -4306,6 +4309,9 @@ public class DevicePolicyManager {
     * Calling the method twice in this order ensures that all users are locked and does not
     * stop the device admin on the managed profile from issuing a second call to lock its own
     * profile.
     * <p>
     * NOTE: on {@link android.content.pm.PackageManager#FEATURE_AUTOMOTIVE automotive builds}, this
     * method doesn't turn off the screen as it would be a driving safety distraction.
     *
     * @param flags May be 0 or {@link #FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY}.
     * @throws SecurityException if the calling application does not own an active administrator
+17 −3
Original line number Diff line number Diff line
@@ -640,6 +640,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
     */
    final boolean mIsWatch;
    /**
     * Whether or not this device is an automotive.
     */
    private final boolean mIsAutomotive;
    /**
     * Whether this device has the telephony feature.
     */
@@ -2567,6 +2572,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                .hasSystemFeature(PackageManager.FEATURE_WATCH);
        mHasTelephonyFeature = mInjector.getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
        mIsAutomotive = mInjector.getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
        mBackgroundHandler = BackgroundThread.getHandler();
        // Needed when mHasFeature == false, because it controls the certificate warning text.
@@ -6080,9 +6087,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                // Require authentication for the device or profile
                if (userToLock == UserHandle.USER_ALL) {
                    if (mIsAutomotive) {
                        if (VERBOSE_LOG) {
                            Slog.v(LOG_TAG, "lockNow(): not powering off display on automotive"
                                    + " build");
                        }
                    } else {
                        // Power off the display
                        mInjector.powerManagerGoToSleep(SystemClock.uptimeMillis(),
                                PowerManager.GO_TO_SLEEP_REASON_DEVICE_ADMIN, 0);
                    }
                    mInjector.getIWindowManager().lockNow(null);
                } else {
                    mInjector.getTrustManager().setDeviceLockedForUser(userToLock, true);