Loading AconfigFlags.bp +8 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ aconfig_srcjars = [ ":com.android.window.flags.window-aconfig-java{.generated_srcjars}", ":android.hardware.biometrics.flags-aconfig-java{.generated_srcjars}", ":com.android.hardware.input-aconfig-java{.generated_srcjars}", ":com.android.input.flags-aconfig-java{.generated_srcjars}", ":com.android.text.flags-aconfig-java{.generated_srcjars}", ":telecom_flags_core_java_lib{.generated_srcjars}", ":telephony_flags_core_java_lib{.generated_srcjars}", Loading @@ -57,6 +58,7 @@ aconfig_srcjars = [ ":android.service.autofill.flags-aconfig-java{.generated_srcjars}", ":com.android.net.flags-aconfig-java{.generated_srcjars}", ":device_policy_aconfig_flags_lib{.generated_srcjars}", ":service-jobscheduler-deviceidle.flags-aconfig-java{.generated_srcjars}", ":surfaceflinger_flags_java_lib{.generated_srcjars}", ] Loading Loading @@ -129,6 +131,12 @@ java_aconfig_library { defaults: ["framework-minus-apex-aconfig-java-defaults"], } java_aconfig_library { name: "com.android.input.flags-aconfig-java", aconfig_declarations: "com.android.input.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } // Text aconfig_declarations { name: "com.android.text.flags-aconfig", Loading Ravenwood.bp +19 −3 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ // limitations under the License. // We need this "trampoline" rule to force soong to give a host-side jar to // framework-minus-apex.ravenwood. Otherwise, soong would mix up the arch (?) and we'd get // framework-minus-apex.ravenwood-base. Otherwise, soong would mix up the arch (?) and we'd get // a dex jar. java_library { name: "framework-minus-apex-for-hoststubgen", Loading @@ -26,7 +26,7 @@ java_library { } // Generate the stub/impl from framework-all, with hidden APIs. java_genrule_host { java_genrule { name: "framework-minus-apex.ravenwood-base", tools: ["hoststubgen"], cmd: "$(location hoststubgen) " + Loading Loading @@ -57,7 +57,9 @@ java_genrule_host { } // Extract the impl jar from "framework-minus-apex.ravenwood-base" for subsequent build rules. java_genrule_host { // Note this emits a "device side" output, so that ravenwood tests can (implicitly) // depend on it. java_genrule { name: "framework-minus-apex.ravenwood", defaults: ["hoststubgen-for-prototype-only-genrule"], cmd: "cp $(in) $(out)", Loading @@ -68,3 +70,17 @@ java_genrule_host { "framework-minus-apex.ravenwood.jar", ], } android_ravenwood_libgroup { name: "ravenwood-runtime", libs: [ "framework-minus-apex.ravenwood", "hoststubgen-helper-runtime.ravenwood", "hoststubgen-helper-framework-runtime.ravenwood", ], } android_ravenwood_libgroup { name: "ravenwood-utils", libs: [], } apex/jobscheduler/service/aconfig/Android.bp +17 −0 Original line number Diff line number Diff line // Device Idle aconfig_declarations { name: "service-deviceidle.flags-aconfig", package: "com.android.server.deviceidle", srcs: [ "device_idle.aconfig", ], } java_aconfig_library { name: "service-jobscheduler-deviceidle.flags-aconfig-java", aconfig_declarations: "service-deviceidle.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], visibility: ["//frameworks/base:__subpackages__"], } // JobScheduler aconfig_declarations { name: "service-job.flags-aconfig", Loading @@ -15,6 +31,7 @@ java_aconfig_library { } service_jobscheduler_aconfig_srcjars = [ ":service-jobscheduler-deviceidle.flags-aconfig-java{.generated_srcjars}", ":service-jobscheduler-job.flags-aconfig-java{.generated_srcjars}", ] Loading apex/jobscheduler/service/aconfig/device_idle.aconfig 0 → 100644 +8 −0 Original line number Diff line number Diff line package: "com.android.server.deviceidle" flag { name: "disable_wakelocks_in_light_idle" namespace: "backstage_power" description: "Disable wakelocks for background apps while Light Device Idle is active" bug: "299329948" } apex/jobscheduler/service/java/com/android/server/job/controllers/idle/DeviceIdlenessTracker.java +29 −13 Original line number Diff line number Diff line Loading @@ -82,6 +82,10 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id * be a negative value if the device is not in state to be considered idle. */ private long mIdlenessCheckScheduledElapsed = -1; /** * Time (in the elapsed realtime timebase) when the device can be considered idle. */ private long mIdleStartElapsed = Long.MAX_VALUE; private IdlenessListener mIdleListener; private final UiModeManager.OnProjectionStateChangedListener mOnProjectionStateChangedListener = Loading Loading @@ -191,11 +195,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id } mProjectionActive = projectionActive; if (mProjectionActive) { cancelIdlenessCheck(); if (mIdle) { mIdle = false; mIdleListener.reportNewIdleState(mIdle); } exitIdle(); } else { maybeScheduleIdlenessCheck("Projection ended"); } Loading @@ -209,6 +209,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id pw.print(" mDockIdle: "); pw.println(mDockIdle); pw.print(" mProjectionActive: "); pw.println(mProjectionActive); pw.print(" mIdlenessCheckScheduledElapsed: "); pw.println(mIdlenessCheckScheduledElapsed); pw.print(" mIdleStartElapsed: "); pw.println(mIdleStartElapsed); } @Override Loading Loading @@ -270,11 +271,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id if (DEBUG) { Slog.v(TAG, "exiting idle"); } cancelIdlenessCheck(); if (mIdle) { mIdle = false; mIdleListener.reportNewIdleState(mIdle); } exitIdle(); break; case Intent.ACTION_SCREEN_OFF: case Intent.ACTION_DREAMING_STARTED: Loading Loading @@ -302,6 +299,12 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id } private void maybeScheduleIdlenessCheck(String reason) { if (mIdle) { if (DEBUG) { Slog.w(TAG, "Already idle. Redundant reason=" + reason); } return; } if ((!mScreenOn || mDockIdle) && !mProjectionActive) { final long nowElapsed = sElapsedRealtimeClock.millis(); final long inactivityThresholdMs = mIsStablePower Loading @@ -319,19 +322,32 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id mIdlenessCheckScheduledElapsed = nowElapsed; } final long when = mIdlenessCheckScheduledElapsed + inactivityThresholdMs; if (when == mIdleStartElapsed) { if (DEBUG) { Slog.i(TAG, "No change to idle start time"); } return; } mIdleStartElapsed = when; if (DEBUG) { Slog.v(TAG, "Scheduling idle : " + reason + " now:" + nowElapsed + " checkElapsed=" + mIdlenessCheckScheduledElapsed + " when=" + when); + " checkElapsed=" + mIdlenessCheckScheduledElapsed + " when=" + mIdleStartElapsed); } mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP, when, mIdleWindowSlop, "JS idleness", mIdleStartElapsed, mIdleWindowSlop, "JS idleness", AppSchedulingModuleThread.getExecutor(), mIdleAlarmListener); } } private void cancelIdlenessCheck() { private void exitIdle() { mAlarm.cancel(mIdleAlarmListener); mIdlenessCheckScheduledElapsed = -1; mIdleStartElapsed = Long.MAX_VALUE; if (mIdle) { mIdle = false; mIdleListener.reportNewIdleState(false); } } private void handleIdleTrigger() { Loading Loading
AconfigFlags.bp +8 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ aconfig_srcjars = [ ":com.android.window.flags.window-aconfig-java{.generated_srcjars}", ":android.hardware.biometrics.flags-aconfig-java{.generated_srcjars}", ":com.android.hardware.input-aconfig-java{.generated_srcjars}", ":com.android.input.flags-aconfig-java{.generated_srcjars}", ":com.android.text.flags-aconfig-java{.generated_srcjars}", ":telecom_flags_core_java_lib{.generated_srcjars}", ":telephony_flags_core_java_lib{.generated_srcjars}", Loading @@ -57,6 +58,7 @@ aconfig_srcjars = [ ":android.service.autofill.flags-aconfig-java{.generated_srcjars}", ":com.android.net.flags-aconfig-java{.generated_srcjars}", ":device_policy_aconfig_flags_lib{.generated_srcjars}", ":service-jobscheduler-deviceidle.flags-aconfig-java{.generated_srcjars}", ":surfaceflinger_flags_java_lib{.generated_srcjars}", ] Loading Loading @@ -129,6 +131,12 @@ java_aconfig_library { defaults: ["framework-minus-apex-aconfig-java-defaults"], } java_aconfig_library { name: "com.android.input.flags-aconfig-java", aconfig_declarations: "com.android.input.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } // Text aconfig_declarations { name: "com.android.text.flags-aconfig", Loading
Ravenwood.bp +19 −3 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ // limitations under the License. // We need this "trampoline" rule to force soong to give a host-side jar to // framework-minus-apex.ravenwood. Otherwise, soong would mix up the arch (?) and we'd get // framework-minus-apex.ravenwood-base. Otherwise, soong would mix up the arch (?) and we'd get // a dex jar. java_library { name: "framework-minus-apex-for-hoststubgen", Loading @@ -26,7 +26,7 @@ java_library { } // Generate the stub/impl from framework-all, with hidden APIs. java_genrule_host { java_genrule { name: "framework-minus-apex.ravenwood-base", tools: ["hoststubgen"], cmd: "$(location hoststubgen) " + Loading Loading @@ -57,7 +57,9 @@ java_genrule_host { } // Extract the impl jar from "framework-minus-apex.ravenwood-base" for subsequent build rules. java_genrule_host { // Note this emits a "device side" output, so that ravenwood tests can (implicitly) // depend on it. java_genrule { name: "framework-minus-apex.ravenwood", defaults: ["hoststubgen-for-prototype-only-genrule"], cmd: "cp $(in) $(out)", Loading @@ -68,3 +70,17 @@ java_genrule_host { "framework-minus-apex.ravenwood.jar", ], } android_ravenwood_libgroup { name: "ravenwood-runtime", libs: [ "framework-minus-apex.ravenwood", "hoststubgen-helper-runtime.ravenwood", "hoststubgen-helper-framework-runtime.ravenwood", ], } android_ravenwood_libgroup { name: "ravenwood-utils", libs: [], }
apex/jobscheduler/service/aconfig/Android.bp +17 −0 Original line number Diff line number Diff line // Device Idle aconfig_declarations { name: "service-deviceidle.flags-aconfig", package: "com.android.server.deviceidle", srcs: [ "device_idle.aconfig", ], } java_aconfig_library { name: "service-jobscheduler-deviceidle.flags-aconfig-java", aconfig_declarations: "service-deviceidle.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], visibility: ["//frameworks/base:__subpackages__"], } // JobScheduler aconfig_declarations { name: "service-job.flags-aconfig", Loading @@ -15,6 +31,7 @@ java_aconfig_library { } service_jobscheduler_aconfig_srcjars = [ ":service-jobscheduler-deviceidle.flags-aconfig-java{.generated_srcjars}", ":service-jobscheduler-job.flags-aconfig-java{.generated_srcjars}", ] Loading
apex/jobscheduler/service/aconfig/device_idle.aconfig 0 → 100644 +8 −0 Original line number Diff line number Diff line package: "com.android.server.deviceidle" flag { name: "disable_wakelocks_in_light_idle" namespace: "backstage_power" description: "Disable wakelocks for background apps while Light Device Idle is active" bug: "299329948" }
apex/jobscheduler/service/java/com/android/server/job/controllers/idle/DeviceIdlenessTracker.java +29 −13 Original line number Diff line number Diff line Loading @@ -82,6 +82,10 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id * be a negative value if the device is not in state to be considered idle. */ private long mIdlenessCheckScheduledElapsed = -1; /** * Time (in the elapsed realtime timebase) when the device can be considered idle. */ private long mIdleStartElapsed = Long.MAX_VALUE; private IdlenessListener mIdleListener; private final UiModeManager.OnProjectionStateChangedListener mOnProjectionStateChangedListener = Loading Loading @@ -191,11 +195,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id } mProjectionActive = projectionActive; if (mProjectionActive) { cancelIdlenessCheck(); if (mIdle) { mIdle = false; mIdleListener.reportNewIdleState(mIdle); } exitIdle(); } else { maybeScheduleIdlenessCheck("Projection ended"); } Loading @@ -209,6 +209,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id pw.print(" mDockIdle: "); pw.println(mDockIdle); pw.print(" mProjectionActive: "); pw.println(mProjectionActive); pw.print(" mIdlenessCheckScheduledElapsed: "); pw.println(mIdlenessCheckScheduledElapsed); pw.print(" mIdleStartElapsed: "); pw.println(mIdleStartElapsed); } @Override Loading Loading @@ -270,11 +271,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id if (DEBUG) { Slog.v(TAG, "exiting idle"); } cancelIdlenessCheck(); if (mIdle) { mIdle = false; mIdleListener.reportNewIdleState(mIdle); } exitIdle(); break; case Intent.ACTION_SCREEN_OFF: case Intent.ACTION_DREAMING_STARTED: Loading Loading @@ -302,6 +299,12 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id } private void maybeScheduleIdlenessCheck(String reason) { if (mIdle) { if (DEBUG) { Slog.w(TAG, "Already idle. Redundant reason=" + reason); } return; } if ((!mScreenOn || mDockIdle) && !mProjectionActive) { final long nowElapsed = sElapsedRealtimeClock.millis(); final long inactivityThresholdMs = mIsStablePower Loading @@ -319,19 +322,32 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id mIdlenessCheckScheduledElapsed = nowElapsed; } final long when = mIdlenessCheckScheduledElapsed + inactivityThresholdMs; if (when == mIdleStartElapsed) { if (DEBUG) { Slog.i(TAG, "No change to idle start time"); } return; } mIdleStartElapsed = when; if (DEBUG) { Slog.v(TAG, "Scheduling idle : " + reason + " now:" + nowElapsed + " checkElapsed=" + mIdlenessCheckScheduledElapsed + " when=" + when); + " checkElapsed=" + mIdlenessCheckScheduledElapsed + " when=" + mIdleStartElapsed); } mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP, when, mIdleWindowSlop, "JS idleness", mIdleStartElapsed, mIdleWindowSlop, "JS idleness", AppSchedulingModuleThread.getExecutor(), mIdleAlarmListener); } } private void cancelIdlenessCheck() { private void exitIdle() { mAlarm.cancel(mIdleAlarmListener); mIdlenessCheckScheduledElapsed = -1; mIdleStartElapsed = Long.MAX_VALUE; if (mIdle) { mIdle = false; mIdleListener.reportNewIdleState(false); } } private void handleIdleTrigger() { Loading