Loading AconfigFlags.bp +8 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ aconfig_srcjars = [ ":android.provider.flags-aconfig-java{.generated_srcjars}", ":android.chre.flags-aconfig-java{.generated_srcjars}", ":android.speech.flags-aconfig-java{.generated_srcjars}", ":power_flags_lib{.generated_srcjars}", ] filegroup { Loading Loading @@ -932,3 +933,10 @@ java_aconfig_library { aconfig_declarations: "android.speech.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } // Power java_aconfig_library { name: "power_flags_lib", aconfig_declarations: "power_flags", defaults: ["framework-minus-apex-aconfig-java-defaults"], } services/core/java/com/android/server/power/PowerManagerService.java +9 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ import com.android.server.power.batterysaver.BatterySaverController; import com.android.server.power.batterysaver.BatterySaverPolicy; import com.android.server.power.batterysaver.BatterySaverStateMachine; import com.android.server.power.batterysaver.BatterySavingStats; import com.android.server.power.feature.PowerManagerFlags; import dalvik.annotation.optimization.NeverCompile; Loading Loading @@ -329,6 +330,8 @@ public final class PowerManagerService extends SystemService // True if battery saver is supported on this device. private final boolean mBatterySaverSupported; private final PowerManagerFlags mFeatureFlags; private boolean mDisableScreenWakeLocksWhileCached; private LightsManager mLightsManager; Loading Loading @@ -1079,6 +1082,10 @@ public final class PowerManagerService extends SystemService DeviceConfigParameterProvider createDeviceConfigParameterProvider() { return new DeviceConfigParameterProvider(DeviceConfigInterface.REAL); } PowerManagerFlags getFlags() { return new PowerManagerFlags(); } } /** Interface for checking an app op permission */ Loading Loading @@ -1145,6 +1152,7 @@ public final class PowerManagerService extends SystemService mNativeWrapper = injector.createNativeWrapper(); mSystemProperties = injector.createSystemPropertiesWrapper(); mClock = injector.createClock(); mFeatureFlags = injector.getFlags(); mInjector = injector; mHandlerThread = new ServiceThread(TAG, Loading Loading @@ -4802,6 +4810,7 @@ public final class PowerManagerService extends SystemService mAmbientDisplaySuppressionController.dump(pw); mLowPowerStandbyController.dump(pw); mFeatureFlags.dump(pw); } private void dumpProto(FileDescriptor fd) { Loading services/core/java/com/android/server/power/feature/Android.bp 0 → 100644 +7 −0 Original line number Diff line number Diff line aconfig_declarations { name: "power_flags", package: "com.android.server.power.feature.flags", srcs: [ "*.aconfig", ], } services/core/java/com/android/server/power/feature/PowerManagerFlags.java 0 → 100644 +91 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.power.feature; import android.text.TextUtils; import android.util.Slog; import com.android.server.power.feature.flags.Flags; import java.io.PrintWriter; import java.util.function.Supplier; /** * Utility class to read the flags used in the power manager server. */ public class PowerManagerFlags { private static final boolean DEBUG = false; private static final String TAG = "PowerManagerFlags"; private final FlagState mEarlyScreenTimeoutDetectorFlagState = new FlagState( Flags.FLAG_ENABLE_EARLY_SCREEN_TIMEOUT_DETECTOR, Flags::enableEarlyScreenTimeoutDetector); /** Returns whether early-screen-timeout-detector is enabled on not. */ public boolean isEarlyScreenTimeoutDetectorEnabled() { return mEarlyScreenTimeoutDetectorFlagState.isEnabled(); } /** * dumps all flagstates * @param pw printWriter */ public void dump(PrintWriter pw) { pw.println("PowerManagerFlags:"); pw.println(" " + mEarlyScreenTimeoutDetectorFlagState); } private static class FlagState { private final String mName; private final Supplier<Boolean> mFlagFunction; private boolean mEnabledSet; private boolean mEnabled; private FlagState(String name, Supplier<Boolean> flagFunction) { mName = name; mFlagFunction = flagFunction; } private boolean isEnabled() { if (mEnabledSet) { if (DEBUG) { Slog.d(TAG, mName + ": mEnabled. Recall = " + mEnabled); } return mEnabled; } mEnabled = mFlagFunction.get(); if (DEBUG) { Slog.d(TAG, mName + ": mEnabled. Flag value = " + mEnabled); } mEnabledSet = true; return mEnabled; } @Override public String toString() { // remove com.android.server.power.feature.flags. from the beginning of the name. // align all isEnabled() values. // Adjust lengths if we end up with longer names final int nameLength = mName.length(); return TextUtils.substring(mName, 39, nameLength) + ": " + TextUtils.formatSimple("%" + (91 - nameLength) + "s%s", " " , isEnabled()) + " (def:" + mFlagFunction.get() + ")"; } } } services/core/java/com/android/server/power/feature/power_flags.aconfig 0 → 100644 +11 −0 Original line number Diff line number Diff line package: "com.android.server.power.feature.flags" # Important: Flags must be accessed through PowerManagerFlags. flag { name: "enable_early_screen_timeout_detector" namespace: "power_manager" description: "Feature flag for Early Screen Timeout detector" bug: "309861917" is_fixed_read_only: true } Loading
AconfigFlags.bp +8 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ aconfig_srcjars = [ ":android.provider.flags-aconfig-java{.generated_srcjars}", ":android.chre.flags-aconfig-java{.generated_srcjars}", ":android.speech.flags-aconfig-java{.generated_srcjars}", ":power_flags_lib{.generated_srcjars}", ] filegroup { Loading Loading @@ -932,3 +933,10 @@ java_aconfig_library { aconfig_declarations: "android.speech.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } // Power java_aconfig_library { name: "power_flags_lib", aconfig_declarations: "power_flags", defaults: ["framework-minus-apex-aconfig-java-defaults"], }
services/core/java/com/android/server/power/PowerManagerService.java +9 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ import com.android.server.power.batterysaver.BatterySaverController; import com.android.server.power.batterysaver.BatterySaverPolicy; import com.android.server.power.batterysaver.BatterySaverStateMachine; import com.android.server.power.batterysaver.BatterySavingStats; import com.android.server.power.feature.PowerManagerFlags; import dalvik.annotation.optimization.NeverCompile; Loading Loading @@ -329,6 +330,8 @@ public final class PowerManagerService extends SystemService // True if battery saver is supported on this device. private final boolean mBatterySaverSupported; private final PowerManagerFlags mFeatureFlags; private boolean mDisableScreenWakeLocksWhileCached; private LightsManager mLightsManager; Loading Loading @@ -1079,6 +1082,10 @@ public final class PowerManagerService extends SystemService DeviceConfigParameterProvider createDeviceConfigParameterProvider() { return new DeviceConfigParameterProvider(DeviceConfigInterface.REAL); } PowerManagerFlags getFlags() { return new PowerManagerFlags(); } } /** Interface for checking an app op permission */ Loading Loading @@ -1145,6 +1152,7 @@ public final class PowerManagerService extends SystemService mNativeWrapper = injector.createNativeWrapper(); mSystemProperties = injector.createSystemPropertiesWrapper(); mClock = injector.createClock(); mFeatureFlags = injector.getFlags(); mInjector = injector; mHandlerThread = new ServiceThread(TAG, Loading Loading @@ -4802,6 +4810,7 @@ public final class PowerManagerService extends SystemService mAmbientDisplaySuppressionController.dump(pw); mLowPowerStandbyController.dump(pw); mFeatureFlags.dump(pw); } private void dumpProto(FileDescriptor fd) { Loading
services/core/java/com/android/server/power/feature/Android.bp 0 → 100644 +7 −0 Original line number Diff line number Diff line aconfig_declarations { name: "power_flags", package: "com.android.server.power.feature.flags", srcs: [ "*.aconfig", ], }
services/core/java/com/android/server/power/feature/PowerManagerFlags.java 0 → 100644 +91 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.power.feature; import android.text.TextUtils; import android.util.Slog; import com.android.server.power.feature.flags.Flags; import java.io.PrintWriter; import java.util.function.Supplier; /** * Utility class to read the flags used in the power manager server. */ public class PowerManagerFlags { private static final boolean DEBUG = false; private static final String TAG = "PowerManagerFlags"; private final FlagState mEarlyScreenTimeoutDetectorFlagState = new FlagState( Flags.FLAG_ENABLE_EARLY_SCREEN_TIMEOUT_DETECTOR, Flags::enableEarlyScreenTimeoutDetector); /** Returns whether early-screen-timeout-detector is enabled on not. */ public boolean isEarlyScreenTimeoutDetectorEnabled() { return mEarlyScreenTimeoutDetectorFlagState.isEnabled(); } /** * dumps all flagstates * @param pw printWriter */ public void dump(PrintWriter pw) { pw.println("PowerManagerFlags:"); pw.println(" " + mEarlyScreenTimeoutDetectorFlagState); } private static class FlagState { private final String mName; private final Supplier<Boolean> mFlagFunction; private boolean mEnabledSet; private boolean mEnabled; private FlagState(String name, Supplier<Boolean> flagFunction) { mName = name; mFlagFunction = flagFunction; } private boolean isEnabled() { if (mEnabledSet) { if (DEBUG) { Slog.d(TAG, mName + ": mEnabled. Recall = " + mEnabled); } return mEnabled; } mEnabled = mFlagFunction.get(); if (DEBUG) { Slog.d(TAG, mName + ": mEnabled. Flag value = " + mEnabled); } mEnabledSet = true; return mEnabled; } @Override public String toString() { // remove com.android.server.power.feature.flags. from the beginning of the name. // align all isEnabled() values. // Adjust lengths if we end up with longer names final int nameLength = mName.length(); return TextUtils.substring(mName, 39, nameLength) + ": " + TextUtils.formatSimple("%" + (91 - nameLength) + "s%s", " " , isEnabled()) + " (def:" + mFlagFunction.get() + ")"; } } }
services/core/java/com/android/server/power/feature/power_flags.aconfig 0 → 100644 +11 −0 Original line number Diff line number Diff line package: "com.android.server.power.feature.flags" # Important: Flags must be accessed through PowerManagerFlags. flag { name: "enable_early_screen_timeout_detector" namespace: "power_manager" description: "Feature flag for Early Screen Timeout detector" bug: "309861917" is_fixed_read_only: true }