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

Commit 278a28df authored by Lais Andrade's avatar Lais Andrade
Browse files

Remove powerHint from IPowerManager.aidl

Also removes sendPowerHint, setInteractive and setFeature from
PowerManagerService, replacing calls to these methods to existing
setPowerBoost and setPowerMode native methods.

This is a relanding CL whose original is ag/10891954

Reason for revert: Reverting the original changes had no effect on the perf regression:
https://dashboards.corp.google.com/google::_233805d0_deb2_44ce_8f21_d31f71af27e0?f=build_creation_timestamp:bt:1594364400000000,1595228400000000&f=build_target:in:flame-userdebug&f=build_branch:in:git_master&f=metric_key:eq:gfxinfo_com.android.systemui_jank_percentile_95-mean&f=atp_test_name:eq:health%2Fmicrobench%2Fsystemui%2Fsystemui-jank-suite&f=test_name:eq:android.platform.test.scenario.sysui.power.PowerMenuMicrobenchmark%23testPower_verifySystemPowerMenuAppears

Reverted Changes:
I52bb144d6:Revert removal of power hint from PowerManager.aid...
Id087f6867:Revert removal of power hint from PowerManager.aid...

Bug: b/150878220
Test: atest FrameworksServicesTests:PowerManagerServiceTest
Change-Id: Ic53a97c006668cfb4013f67ef163a0e7af97519c
parent ba437e8a
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -32,7 +32,6 @@ interface IPowerManager
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    void releaseWakeLock(IBinder lock, int flags);
    void releaseWakeLock(IBinder lock, int flags);
    void updateWakeLockUids(IBinder lock, in int[] uids);
    void updateWakeLockUids(IBinder lock, in int[] uids);
    oneway void powerHint(int hintId, int data);
    oneway void setPowerBoost(int boost, int durationMs);
    oneway void setPowerBoost(int boost, int durationMs);
    oneway void setPowerMode(int mode, boolean enabled);
    oneway void setPowerMode(int mode, boolean enabled);


+0 −6
Original line number Original line Diff line number Diff line
@@ -195,12 +195,6 @@ public abstract class PowerManagerInternal {


    public abstract void uidIdle(int uid);
    public abstract void uidIdle(int uid);


    /**
     * The hintId sent through this method should be in-line with the
     * PowerHint defined in android/hardware/power/<version 1.0 & up>/IPower.h
     */
    public abstract void powerHint(int hintId, int data);

    /**
    /**
     * Boost: It is sent when user interacting with the device, for example,
     * Boost: It is sent when user interacting with the device, for example,
     * touchscreen events are incoming.
     * touchscreen events are incoming.
+8 −58
Original line number Original line Diff line number Diff line
@@ -44,8 +44,8 @@ import android.hardware.SystemSensorManager;
import android.hardware.display.AmbientDisplayConfiguration;
import android.hardware.display.AmbientDisplayConfiguration;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest;
import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest;
import android.hardware.power.Boost;
import android.hardware.power.Mode;
import android.hardware.power.Mode;
import android.hardware.power.V1_0.PowerHint;
import android.net.Uri;
import android.net.Uri;
import android.os.BatteryManager;
import android.os.BatteryManager;
import android.os.BatteryManagerInternal;
import android.os.BatteryManagerInternal;
@@ -203,9 +203,6 @@ public final class PowerManagerService extends SystemService
    // How long a partial wake lock must be held until we consider it a long wake lock.
    // How long a partial wake lock must be held until we consider it a long wake lock.
    static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000;
    static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000;


    // Power features defined in hardware/libhardware/include/hardware/power.h.
    private static final int POWER_FEATURE_DOUBLE_TAP_TO_WAKE = 1;

    // Default setting for double tap to wake.
    // Default setting for double tap to wake.
    private static final int DEFAULT_DOUBLE_TAP_TO_WAKE = 0;
    private static final int DEFAULT_DOUBLE_TAP_TO_WAKE = 0;


@@ -325,7 +322,7 @@ public final class PowerManagerService extends SystemService
    private long mLastUserActivityTime;
    private long mLastUserActivityTime;
    private long mLastUserActivityTimeNoChangeLights;
    private long mLastUserActivityTimeNoChangeLights;


    // Timestamp of last interactive power hint.
    // Timestamp of last time power boost interaction was sent.
    private long mLastInteractivePowerHintTime;
    private long mLastInteractivePowerHintTime;


    // Timestamp of the last screen brightness boost.
    // Timestamp of the last screen brightness boost.
@@ -719,21 +716,11 @@ public final class PowerManagerService extends SystemService
            PowerManagerService.nativeReleaseSuspendBlocker(name);
            PowerManagerService.nativeReleaseSuspendBlocker(name);
        }
        }


        /** Wrapper for PowerManager.nativeSetInteractive */
        public void nativeSetInteractive(boolean enable) {
            PowerManagerService.nativeSetInteractive(enable);
        }

        /** Wrapper for PowerManager.nativeSetAutoSuspend */
        /** Wrapper for PowerManager.nativeSetAutoSuspend */
        public void nativeSetAutoSuspend(boolean enable) {
        public void nativeSetAutoSuspend(boolean enable) {
            PowerManagerService.nativeSetAutoSuspend(enable);
            PowerManagerService.nativeSetAutoSuspend(enable);
        }
        }


        /** Wrapper for PowerManager.nativeSendPowerHint */
        public void nativeSendPowerHint(int hintId, int data) {
            PowerManagerService.nativeSendPowerHint(hintId, data);
        }

        /** Wrapper for PowerManager.nativeSetPowerBoost */
        /** Wrapper for PowerManager.nativeSetPowerBoost */
        public void nativeSetPowerBoost(int boost, int durationMs) {
        public void nativeSetPowerBoost(int boost, int durationMs) {
            PowerManagerService.nativeSetPowerBoost(boost, durationMs);
            PowerManagerService.nativeSetPowerBoost(boost, durationMs);
@@ -744,11 +731,6 @@ public final class PowerManagerService extends SystemService
            return PowerManagerService.nativeSetPowerMode(mode, enabled);
            return PowerManagerService.nativeSetPowerMode(mode, enabled);
        }
        }


        /** Wrapper for PowerManager.nativeSetFeature */
        public void nativeSetFeature(int featureId, int data) {
            PowerManagerService.nativeSetFeature(featureId, data);
        }

        /** Wrapper for PowerManager.nativeForceSuspend */
        /** Wrapper for PowerManager.nativeForceSuspend */
        public boolean nativeForceSuspend() {
        public boolean nativeForceSuspend() {
            return PowerManagerService.nativeForceSuspend();
            return PowerManagerService.nativeForceSuspend();
@@ -851,12 +833,9 @@ public final class PowerManagerService extends SystemService
    private native void nativeInit();
    private native void nativeInit();
    private static native void nativeAcquireSuspendBlocker(String name);
    private static native void nativeAcquireSuspendBlocker(String name);
    private static native void nativeReleaseSuspendBlocker(String name);
    private static native void nativeReleaseSuspendBlocker(String name);
    private static native void nativeSetInteractive(boolean enable);
    private static native void nativeSetAutoSuspend(boolean enable);
    private static native void nativeSetAutoSuspend(boolean enable);
    private static native void nativeSendPowerHint(int hintId, int data);
    private static native void nativeSetPowerBoost(int boost, int durationMs);
    private static native void nativeSetPowerBoost(int boost, int durationMs);
    private static native boolean nativeSetPowerMode(int mode, boolean enabled);
    private static native boolean nativeSetPowerMode(int mode, boolean enabled);
    private static native void nativeSetFeature(int featureId, int data);
    private static native boolean nativeForceSuspend();
    private static native boolean nativeForceSuspend();


    public PowerManagerService(Context context) {
    public PowerManagerService(Context context) {
@@ -1000,8 +979,8 @@ public final class PowerManagerService extends SystemService


            mNativeWrapper.nativeInit(this);
            mNativeWrapper.nativeInit(this);
            mNativeWrapper.nativeSetAutoSuspend(false);
            mNativeWrapper.nativeSetAutoSuspend(false);
            mNativeWrapper.nativeSetInteractive(true);
            mNativeWrapper.nativeSetPowerMode(Mode.INTERACTIVE, true);
            mNativeWrapper.nativeSetFeature(POWER_FEATURE_DOUBLE_TAP_TO_WAKE, 0);
            mNativeWrapper.nativeSetPowerMode(Mode.DOUBLE_TAP_TO_WAKE, false);
            mInjector.invalidateIsInteractiveCaches();
            mInjector.invalidateIsInteractiveCaches();
        }
        }
    }
    }
@@ -1252,8 +1231,7 @@ public final class PowerManagerService extends SystemService
                            UserHandle.USER_CURRENT) != 0;
                            UserHandle.USER_CURRENT) != 0;
            if (doubleTapWakeEnabled != mDoubleTapWakeEnabled) {
            if (doubleTapWakeEnabled != mDoubleTapWakeEnabled) {
                mDoubleTapWakeEnabled = doubleTapWakeEnabled;
                mDoubleTapWakeEnabled = doubleTapWakeEnabled;
                mNativeWrapper.nativeSetFeature(
                mNativeWrapper.nativeSetPowerMode(Mode.DOUBLE_TAP_TO_WAKE, mDoubleTapWakeEnabled);
                        POWER_FEATURE_DOUBLE_TAP_TO_WAKE, mDoubleTapWakeEnabled ? 1 : 0);
            }
            }
        }
        }


@@ -1612,7 +1590,7 @@ public final class PowerManagerService extends SystemService
        Trace.traceBegin(Trace.TRACE_TAG_POWER, "userActivity");
        Trace.traceBegin(Trace.TRACE_TAG_POWER, "userActivity");
        try {
        try {
            if (eventTime > mLastInteractivePowerHintTime) {
            if (eventTime > mLastInteractivePowerHintTime) {
                powerHintInternal(PowerHint.INTERACTION, 0);
                setPowerBoostInternal(Boost.INTERACTION, 0);
                mLastInteractivePowerHintTime = eventTime;
                mLastInteractivePowerHintTime = eventTime;
            }
            }


@@ -3171,7 +3149,7 @@ public final class PowerManagerService extends SystemService
            mHalInteractiveModeEnabled = enable;
            mHalInteractiveModeEnabled = enable;
            Trace.traceBegin(Trace.TRACE_TAG_POWER, "setHalInteractive(" + enable + ")");
            Trace.traceBegin(Trace.TRACE_TAG_POWER, "setHalInteractive(" + enable + ")");
            try {
            try {
                mNativeWrapper.nativeSetInteractive(enable);
                mNativeWrapper.nativeSetPowerMode(Mode.INTERACTIVE, enable);
            } finally {
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_POWER);
                Trace.traceEnd(Trace.TRACE_TAG_POWER);
            }
            }
@@ -3645,19 +3623,6 @@ public final class PowerManagerService extends SystemService
        mIsVrModeEnabled = enabled;
        mIsVrModeEnabled = enabled;
    }
    }


    private void powerHintInternal(int hintId, int data) {
        // Maybe filter the event.
        switch (hintId) {
            case PowerHint.LAUNCH: // 1: activate launch boost 0: deactivate.
                if (data == 1 && mBatterySaverController.isLaunchBoostDisabled()) {
                    return;
                }
                break;
        }

        mNativeWrapper.nativeSendPowerHint(hintId, data);
    }

    private void setPowerBoostInternal(int boost, int durationMs) {
    private void setPowerBoostInternal(int boost, int durationMs) {
        // Maybe filter the event.
        // Maybe filter the event.
        mNativeWrapper.nativeSetPowerBoost(boost, durationMs);
        mNativeWrapper.nativeSetPowerBoost(boost, durationMs);
@@ -4404,7 +4369,7 @@ public final class PowerManagerService extends SystemService
    private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() {
    private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() {
        @Override
        @Override
        public void onVrStateChanged(boolean enabled) {
        public void onVrStateChanged(boolean enabled) {
            powerHintInternal(PowerHint.VR_MODE, enabled ? 1 : 0);
            setPowerModeInternal(Mode.VR, enabled);


            synchronized (mLock) {
            synchronized (mLock) {
                if (mIsVrModeEnabled != enabled) {
                if (mIsVrModeEnabled != enabled) {
@@ -4714,16 +4679,6 @@ public final class PowerManagerService extends SystemService
            acquireWakeLock(lock, flags, tag, packageName, new WorkSource(uid), null);
            acquireWakeLock(lock, flags, tag, packageName, new WorkSource(uid), null);
        }
        }


        @Override // Binder call
        public void powerHint(int hintId, int data) {
            if (!mSystemReady) {
                // Service not ready yet, so who the heck cares about power hints, bah.
                return;
            }
            mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
            powerHintInternal(hintId, data);
        }

        @Override // Binder call
        @Override // Binder call
        public void setPowerBoost(int boost, int durationMs) {
        public void setPowerBoost(int boost, int durationMs) {
            if (!mSystemReady) {
            if (!mSystemReady) {
@@ -5558,11 +5513,6 @@ public final class PowerManagerService extends SystemService
            uidIdleInternal(uid);
            uidIdleInternal(uid);
        }
        }


        @Override
        public void powerHint(int hintId, int data) {
            powerHintInternal(hintId, data);
        }

        @Override
        @Override
        public void setPowerBoost(int boost, int durationMs) {
        public void setPowerBoost(int boost, int durationMs) {
            setPowerBoostInternal(boost, durationMs);
            setPowerBoostInternal(boost, durationMs);
+2 −2
Original line number Original line Diff line number Diff line
@@ -23,7 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageManagerInternal;
import android.hardware.power.V1_0.PowerHint;
import android.hardware.power.Mode;
import android.os.BatteryManager;
import android.os.BatteryManager;
import android.os.BatterySaverPolicyConfig;
import android.os.BatterySaverPolicyConfig;
import android.os.Handler;
import android.os.Handler;
@@ -474,7 +474,7 @@ public class BatterySaverController implements BatterySaverPolicyListener {


        final PowerManagerInternal pmi = LocalServices.getService(PowerManagerInternal.class);
        final PowerManagerInternal pmi = LocalServices.getService(PowerManagerInternal.class);
        if (pmi != null) {
        if (pmi != null) {
            pmi.powerHint(PowerHint.LOW_POWER, isEnabled() ? 1 : 0);
            pmi.setPowerMode(Mode.LOW_POWER, isEnabled());
        }
        }


        updateBatterySavingStats();
        updateBatterySavingStats();
+3 −3
Original line number Original line Diff line number Diff line
@@ -144,7 +144,7 @@ import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.Region;
import android.hardware.input.InputManager;
import android.hardware.input.InputManager;
import android.hardware.power.V1_0.PowerHint;
import android.hardware.power.Boost;
import android.os.Handler;
import android.os.Handler;
import android.os.Looper;
import android.os.Looper;
import android.os.Message;
import android.os.Message;
@@ -567,8 +567,8 @@ public class DisplayPolicy {
                    @Override
                    @Override
                    public void onFling(int duration) {
                    public void onFling(int duration) {
                        if (mService.mPowerManagerInternal != null) {
                        if (mService.mPowerManagerInternal != null) {
                            mService.mPowerManagerInternal.powerHint(
                            mService.mPowerManagerInternal.setPowerBoost(
                                    PowerHint.INTERACTION, duration);
                                    Boost.INTERACTION, duration);
                        }
                        }
                    }
                    }


Loading