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

Commit 8ac72191 authored by Fiona Campbell's avatar Fiona Campbell Committed by Android (Google) Code Review
Browse files

Merge "Go idle on docking and dreaming intent"

parents b787ef7e acd7debc
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -45,7 +45,10 @@ import android.app.compat.CompatChanges;
import android.companion.virtual.IVirtualDevice;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.content.res.Resources;
@@ -421,6 +424,32 @@ public final class DisplayManagerService extends SystemService {
    // Receives notifications about changes to Settings.
    private SettingsObserver mSettingsObserver;

    // Keeps note of what state the device is in, used for idle screen brightness mode.
    private boolean mIsDocked;
    private boolean mIsDreaming;

    private final BroadcastReceiver mIdleModeReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final DisplayManagerInternal dmi =
                    LocalServices.getService(DisplayManagerInternal.class);
            if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
                int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
                        Intent.EXTRA_DOCK_STATE_UNDOCKED);
                mIsDocked = dockState == Intent.EXTRA_DOCK_STATE_DESK
                        || dockState == Intent.EXTRA_DOCK_STATE_LE_DESK
                        || dockState == Intent.EXTRA_DOCK_STATE_HE_DESK;
            }
            if (Intent.ACTION_DREAMING_STARTED.equals(intent.getAction())) {
                mIsDreaming = true;
            } else if (Intent.ACTION_DREAMING_STOPPED.equals(intent.getAction())) {
                mIsDreaming = false;
            }
            setDockedAndIdleEnabled(/* enabled= */(mIsDocked && mIsDreaming),
                    Display.DEFAULT_DISPLAY);
        }
    };

    private final boolean mAllowNonNativeRefreshRateOverride;

    private final BrightnessSynchronizer mBrightnessSynchronizer;
@@ -616,6 +645,13 @@ public final class DisplayManagerService extends SystemService {
        mSettingsObserver = new SettingsObserver();

        mBrightnessSynchronizer.startSynchronizing();

        final IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_DREAMING_STARTED);
        filter.addAction(Intent.ACTION_DREAMING_STOPPED);
        filter.addAction(Intent.ACTION_DOCK_EVENT);

        mContext.registerReceiver(mIdleModeReceiver, filter);
    }

    @VisibleForTesting
@@ -2096,6 +2132,16 @@ public final class DisplayManagerService extends SystemService {
        }
    }

    void setDockedAndIdleEnabled(boolean enabled, int displayId) {
        synchronized (mSyncRoot) {
            final DisplayPowerController displayPowerController = mDisplayPowerControllers.get(
                    displayId);
            if (displayPowerController != null) {
                displayPowerController.setAutomaticScreenBrightnessMode(enabled);
            }
        }
    }

    private void clearViewportsLocked() {
        mViewports.clear();
    }
+18 −0
Original line number Diff line number Diff line
@@ -76,6 +76,10 @@ class DisplayManagerShellCommand extends ShellCommand {
                return setUserDisabledHdrTypes();
            case "get-user-disabled-hdr-types":
                return getUserDisabledHdrTypes();
            case "dock":
                return setDockedAndIdle();
            case "undock":
                return unsetDockedAndIdle();
            default:
                return handleDefaultCommands(cmd);
        }
@@ -124,6 +128,10 @@ class DisplayManagerShellCommand extends ShellCommand {
        pw.println("    Sets the user disabled HDR types as TYPES");
        pw.println("  get-user-disabled-hdr-types");
        pw.println("    Returns the user disabled HDR types");
        pw.println("  dock");
        pw.println("    Sets brightness to docked + idle screen brightness mode");
        pw.println("  undock");
        pw.println("    Sets brightness to active (normal) screen brightness mode");
        pw.println();
        Intent.printIntentArgsHelp(pw , "");
    }
@@ -345,4 +353,14 @@ class DisplayManagerShellCommand extends ShellCommand {
                return -1;
        }
    }

    private int setDockedAndIdle() {
        mService.setDockedAndIdleEnabled(true, Display.DEFAULT_DISPLAY);
        return 0;
    }

    private int unsetDockedAndIdle() {
        mService.setDockedAndIdleEnabled(false, Display.DEFAULT_DISPLAY);
        return 0;
    }
}
+0 −5
Original line number Diff line number Diff line
@@ -395,11 +395,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    @Nullable
    private BrightnessMappingStrategy mIdleModeBrightnessMapper;

    // If these are both true, and mIdleModeBrightnessMapper != null,
    // then we are in idle screen brightness mode.
    private boolean mIsDreaming;
    private boolean mIsDocked;

    // The current brightness configuration.
    @Nullable
    private BrightnessConfiguration mBrightnessConfiguration;