Loading StubLibraries.bp +0 −11 Original line number Diff line number Diff line Loading @@ -97,9 +97,6 @@ stubs_defaults { droidstubs { name: "api-stubs-docs", defaults: ["metalava-full-api-stubs-default"], api_filename: "public_api.txt", private_api_filename: "private.txt", removed_api_filename: "removed.txt", removed_dex_api_filename: "removed-dex.txt", arg_files: [ "core/res/AndroidManifest.xml", Loading Loading @@ -142,10 +139,6 @@ module_libs = " " + droidstubs { name: "system-api-stubs-docs", defaults: ["metalava-full-api-stubs-default"], api_tag_name: "SYSTEM", api_filename: "system-api.txt", private_api_filename: "system-private.txt", removed_api_filename: "system-removed.txt", removed_dex_api_filename: "system-removed-dex.txt", arg_files: [ "core/res/AndroidManifest.xml", Loading Loading @@ -178,9 +171,6 @@ droidstubs { droidstubs { name: "test-api-stubs-docs", defaults: ["metalava-full-api-stubs-default"], api_tag_name: "TEST", api_filename: "test-api.txt", removed_api_filename: "test-removed.txt", arg_files: [ "core/res/AndroidManifest.xml", ], Loading Loading @@ -216,7 +206,6 @@ droidstubs { droidstubs { name: "module-lib-api", defaults: ["metalava-full-api-stubs-default"], api_tag_name: "MODULE_LIB", arg_files: ["core/res/AndroidManifest.xml"], args: metalava_framework_docs_args + module_libs, check_api: { Loading apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java +31 −2 Original line number Diff line number Diff line Loading @@ -1863,6 +1863,9 @@ public final class QuotaController extends StateController { /** The next time the alarm is set to go off, in the elapsed realtime timebase. */ @GuardedBy("mLock") private long mTriggerTimeElapsed = 0; /** The minimum amount of time between quota check alarms. */ @GuardedBy("mLock") private long mMinQuotaCheckDelayMs = QcConstants.DEFAULT_MIN_QUOTA_CHECK_DELAY_MS; @GuardedBy("mLock") void addAlarmLocked(int userId, @NonNull String pkgName, long inQuotaTimeElapsed) { Loading @@ -1872,6 +1875,11 @@ public final class QuotaController extends StateController { setNextAlarmLocked(); } @GuardedBy("mLock") void setMinQuotaCheckDelayMs(long minDelayMs) { mMinQuotaCheckDelayMs = minDelayMs; } @GuardedBy("mLock") void removeAlarmLocked(@NonNull Package pkg) { if (mAlarmQueue.remove(pkg)) { Loading Loading @@ -1902,8 +1910,14 @@ public final class QuotaController extends StateController { @GuardedBy("mLock") private void setNextAlarmLocked() { setNextAlarmLocked(sElapsedRealtimeClock.millis()); } @GuardedBy("mLock") private void setNextAlarmLocked(long earliestTriggerElapsed) { if (mAlarmQueue.size() > 0) { final long nextTriggerTimeElapsed = mAlarmQueue.peek().second; final long nextTriggerTimeElapsed = Math.max(earliestTriggerElapsed, mAlarmQueue.peek().second); // Only schedule the alarm if one of the following is true: // 1. There isn't one currently scheduled // 2. The new alarm is significantly earlier than the previous alarm. If it's Loading Loading @@ -1939,7 +1953,7 @@ public final class QuotaController extends StateController { break; } } setNextAlarmLocked(); setNextAlarmLocked(sElapsedRealtimeClock.millis() + mMinQuotaCheckDelayMs); } } Loading Loading @@ -2022,6 +2036,7 @@ public final class QuotaController extends StateController { "max_session_count_per_rate_limiting_window"; private static final String KEY_TIMING_SESSION_COALESCING_DURATION_MS = "timing_session_coalescing_duration_ms"; private static final String KEY_MIN_QUOTA_CHECK_DELAY_MS = "min_quota_check_delay_ms"; private static final long DEFAULT_ALLOWED_TIME_PER_PERIOD_MS = 10 * 60 * 1000L; // 10 minutes Loading Loading @@ -2062,6 +2077,7 @@ public final class QuotaController extends StateController { private static final int DEFAULT_MAX_SESSION_COUNT_RESTRICTED = 1; // 1/day private static final int DEFAULT_MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW = 20; private static final long DEFAULT_TIMING_SESSION_COALESCING_DURATION_MS = 5000; // 5 seconds private static final long DEFAULT_MIN_QUOTA_CHECK_DELAY_MS = MINUTE_IN_MILLIS; /** How much time each app will have to run jobs within their standby bucket window. */ public long ALLOWED_TIME_PER_PERIOD_MS = DEFAULT_ALLOWED_TIME_PER_PERIOD_MS; Loading Loading @@ -2195,6 +2211,9 @@ public final class QuotaController extends StateController { public long TIMING_SESSION_COALESCING_DURATION_MS = DEFAULT_TIMING_SESSION_COALESCING_DURATION_MS; /** The minimum amount of time between quota check alarms. */ public long MIN_QUOTA_CHECK_DELAY_MS = DEFAULT_MIN_QUOTA_CHECK_DELAY_MS; // Safeguards /** The minimum number of jobs that any bucket will be allowed to run within its window. */ Loading Loading @@ -2288,6 +2307,8 @@ public final class QuotaController extends StateController { TIMING_SESSION_COALESCING_DURATION_MS = mParser.getLong( KEY_TIMING_SESSION_COALESCING_DURATION_MS, DEFAULT_TIMING_SESSION_COALESCING_DURATION_MS); MIN_QUOTA_CHECK_DELAY_MS = mParser.getDurationMillis(KEY_MIN_QUOTA_CHECK_DELAY_MS, DEFAULT_MIN_QUOTA_CHECK_DELAY_MS); updateConstants(); } Loading Loading @@ -2433,6 +2454,11 @@ public final class QuotaController extends StateController { mTimingSessionCoalescingDurationMs = newSessionCoalescingDurationMs; changed = true; } // Don't set changed to true for this one since we don't need to re-evaluate // execution stats or constraint status. Limit the delay to the range [0, 15] // minutes. mInQuotaAlarmListener.setMinQuotaCheckDelayMs( Math.min(15 * MINUTE_IN_MILLIS, Math.max(0, MIN_QUOTA_CHECK_DELAY_MS))); if (changed) { // Update job bookkeeping out of band. Loading Loading @@ -2475,6 +2501,7 @@ public final class QuotaController extends StateController { MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW).println(); pw.printPair(KEY_TIMING_SESSION_COALESCING_DURATION_MS, TIMING_SESSION_COALESCING_DURATION_MS).println(); pw.printPair(KEY_MIN_QUOTA_CHECK_DELAY_MS, MIN_QUOTA_CHECK_DELAY_MS).println(); pw.decreaseIndent(); } Loading Loading @@ -2520,6 +2547,8 @@ public final class QuotaController extends StateController { MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW); proto.write(ConstantsProto.QuotaController.TIMING_SESSION_COALESCING_DURATION_MS, TIMING_SESSION_COALESCING_DURATION_MS); proto.write(ConstantsProto.QuotaController.MIN_QUOTA_CHECK_DELAY_MS, MIN_QUOTA_CHECK_DELAY_MS); proto.end(qcToken); } } Loading apex/sdkextensions/derive_sdk/derive_sdk.rc +2 −0 Original line number Diff line number Diff line service derive_sdk /apex/com.android.sdkext/bin/derive_sdk user nobody group nobody oneshot disabled apex/statsd/tests/libstatspull/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ android_test { ], test_suites: [ "device-tests", "mts", ], platform_apis: true, privileged: true, Loading api/test-current.txt +13 −2 Original line number Diff line number Diff line Loading @@ -3087,6 +3087,7 @@ package android.provider { field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications"; field public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component"; field public static final String NOTIFICATION_BADGING = "notification_badging"; field public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content"; field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds"; field public static final String USER_SETUP_COMPLETE = "user_setup_complete"; field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; Loading Loading @@ -5260,10 +5261,20 @@ package android.widget { package android.window { public final class DisplayAreaInfo implements android.os.Parcelable { ctor public DisplayAreaInfo(@NonNull android.window.WindowContainerToken, int); method public int describeContents(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.window.DisplayAreaInfo> CREATOR; field @NonNull public final android.content.res.Configuration configuration; field public final int displayId; field @NonNull public final android.window.WindowContainerToken token; } public class DisplayAreaOrganizer extends android.window.WindowOrganizer { ctor public DisplayAreaOrganizer(); method public void onDisplayAreaAppeared(@NonNull android.window.WindowContainerToken); method public void onDisplayAreaVanished(@NonNull android.window.WindowContainerToken); method public void onDisplayAreaAppeared(@NonNull android.window.DisplayAreaInfo); method public void onDisplayAreaVanished(@NonNull android.window.DisplayAreaInfo); method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void registerOrganizer(int); field public static final int FEATURE_DEFAULT_TASK_CONTAINER = 1; // 0x1 field public static final int FEATURE_ROOT = 0; // 0x0 Loading Loading
StubLibraries.bp +0 −11 Original line number Diff line number Diff line Loading @@ -97,9 +97,6 @@ stubs_defaults { droidstubs { name: "api-stubs-docs", defaults: ["metalava-full-api-stubs-default"], api_filename: "public_api.txt", private_api_filename: "private.txt", removed_api_filename: "removed.txt", removed_dex_api_filename: "removed-dex.txt", arg_files: [ "core/res/AndroidManifest.xml", Loading Loading @@ -142,10 +139,6 @@ module_libs = " " + droidstubs { name: "system-api-stubs-docs", defaults: ["metalava-full-api-stubs-default"], api_tag_name: "SYSTEM", api_filename: "system-api.txt", private_api_filename: "system-private.txt", removed_api_filename: "system-removed.txt", removed_dex_api_filename: "system-removed-dex.txt", arg_files: [ "core/res/AndroidManifest.xml", Loading Loading @@ -178,9 +171,6 @@ droidstubs { droidstubs { name: "test-api-stubs-docs", defaults: ["metalava-full-api-stubs-default"], api_tag_name: "TEST", api_filename: "test-api.txt", removed_api_filename: "test-removed.txt", arg_files: [ "core/res/AndroidManifest.xml", ], Loading Loading @@ -216,7 +206,6 @@ droidstubs { droidstubs { name: "module-lib-api", defaults: ["metalava-full-api-stubs-default"], api_tag_name: "MODULE_LIB", arg_files: ["core/res/AndroidManifest.xml"], args: metalava_framework_docs_args + module_libs, check_api: { Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java +31 −2 Original line number Diff line number Diff line Loading @@ -1863,6 +1863,9 @@ public final class QuotaController extends StateController { /** The next time the alarm is set to go off, in the elapsed realtime timebase. */ @GuardedBy("mLock") private long mTriggerTimeElapsed = 0; /** The minimum amount of time between quota check alarms. */ @GuardedBy("mLock") private long mMinQuotaCheckDelayMs = QcConstants.DEFAULT_MIN_QUOTA_CHECK_DELAY_MS; @GuardedBy("mLock") void addAlarmLocked(int userId, @NonNull String pkgName, long inQuotaTimeElapsed) { Loading @@ -1872,6 +1875,11 @@ public final class QuotaController extends StateController { setNextAlarmLocked(); } @GuardedBy("mLock") void setMinQuotaCheckDelayMs(long minDelayMs) { mMinQuotaCheckDelayMs = minDelayMs; } @GuardedBy("mLock") void removeAlarmLocked(@NonNull Package pkg) { if (mAlarmQueue.remove(pkg)) { Loading Loading @@ -1902,8 +1910,14 @@ public final class QuotaController extends StateController { @GuardedBy("mLock") private void setNextAlarmLocked() { setNextAlarmLocked(sElapsedRealtimeClock.millis()); } @GuardedBy("mLock") private void setNextAlarmLocked(long earliestTriggerElapsed) { if (mAlarmQueue.size() > 0) { final long nextTriggerTimeElapsed = mAlarmQueue.peek().second; final long nextTriggerTimeElapsed = Math.max(earliestTriggerElapsed, mAlarmQueue.peek().second); // Only schedule the alarm if one of the following is true: // 1. There isn't one currently scheduled // 2. The new alarm is significantly earlier than the previous alarm. If it's Loading Loading @@ -1939,7 +1953,7 @@ public final class QuotaController extends StateController { break; } } setNextAlarmLocked(); setNextAlarmLocked(sElapsedRealtimeClock.millis() + mMinQuotaCheckDelayMs); } } Loading Loading @@ -2022,6 +2036,7 @@ public final class QuotaController extends StateController { "max_session_count_per_rate_limiting_window"; private static final String KEY_TIMING_SESSION_COALESCING_DURATION_MS = "timing_session_coalescing_duration_ms"; private static final String KEY_MIN_QUOTA_CHECK_DELAY_MS = "min_quota_check_delay_ms"; private static final long DEFAULT_ALLOWED_TIME_PER_PERIOD_MS = 10 * 60 * 1000L; // 10 minutes Loading Loading @@ -2062,6 +2077,7 @@ public final class QuotaController extends StateController { private static final int DEFAULT_MAX_SESSION_COUNT_RESTRICTED = 1; // 1/day private static final int DEFAULT_MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW = 20; private static final long DEFAULT_TIMING_SESSION_COALESCING_DURATION_MS = 5000; // 5 seconds private static final long DEFAULT_MIN_QUOTA_CHECK_DELAY_MS = MINUTE_IN_MILLIS; /** How much time each app will have to run jobs within their standby bucket window. */ public long ALLOWED_TIME_PER_PERIOD_MS = DEFAULT_ALLOWED_TIME_PER_PERIOD_MS; Loading Loading @@ -2195,6 +2211,9 @@ public final class QuotaController extends StateController { public long TIMING_SESSION_COALESCING_DURATION_MS = DEFAULT_TIMING_SESSION_COALESCING_DURATION_MS; /** The minimum amount of time between quota check alarms. */ public long MIN_QUOTA_CHECK_DELAY_MS = DEFAULT_MIN_QUOTA_CHECK_DELAY_MS; // Safeguards /** The minimum number of jobs that any bucket will be allowed to run within its window. */ Loading Loading @@ -2288,6 +2307,8 @@ public final class QuotaController extends StateController { TIMING_SESSION_COALESCING_DURATION_MS = mParser.getLong( KEY_TIMING_SESSION_COALESCING_DURATION_MS, DEFAULT_TIMING_SESSION_COALESCING_DURATION_MS); MIN_QUOTA_CHECK_DELAY_MS = mParser.getDurationMillis(KEY_MIN_QUOTA_CHECK_DELAY_MS, DEFAULT_MIN_QUOTA_CHECK_DELAY_MS); updateConstants(); } Loading Loading @@ -2433,6 +2454,11 @@ public final class QuotaController extends StateController { mTimingSessionCoalescingDurationMs = newSessionCoalescingDurationMs; changed = true; } // Don't set changed to true for this one since we don't need to re-evaluate // execution stats or constraint status. Limit the delay to the range [0, 15] // minutes. mInQuotaAlarmListener.setMinQuotaCheckDelayMs( Math.min(15 * MINUTE_IN_MILLIS, Math.max(0, MIN_QUOTA_CHECK_DELAY_MS))); if (changed) { // Update job bookkeeping out of band. Loading Loading @@ -2475,6 +2501,7 @@ public final class QuotaController extends StateController { MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW).println(); pw.printPair(KEY_TIMING_SESSION_COALESCING_DURATION_MS, TIMING_SESSION_COALESCING_DURATION_MS).println(); pw.printPair(KEY_MIN_QUOTA_CHECK_DELAY_MS, MIN_QUOTA_CHECK_DELAY_MS).println(); pw.decreaseIndent(); } Loading Loading @@ -2520,6 +2547,8 @@ public final class QuotaController extends StateController { MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW); proto.write(ConstantsProto.QuotaController.TIMING_SESSION_COALESCING_DURATION_MS, TIMING_SESSION_COALESCING_DURATION_MS); proto.write(ConstantsProto.QuotaController.MIN_QUOTA_CHECK_DELAY_MS, MIN_QUOTA_CHECK_DELAY_MS); proto.end(qcToken); } } Loading
apex/sdkextensions/derive_sdk/derive_sdk.rc +2 −0 Original line number Diff line number Diff line service derive_sdk /apex/com.android.sdkext/bin/derive_sdk user nobody group nobody oneshot disabled
apex/statsd/tests/libstatspull/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ android_test { ], test_suites: [ "device-tests", "mts", ], platform_apis: true, privileged: true, Loading
api/test-current.txt +13 −2 Original line number Diff line number Diff line Loading @@ -3087,6 +3087,7 @@ package android.provider { field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications"; field public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component"; field public static final String NOTIFICATION_BADGING = "notification_badging"; field public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content"; field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds"; field public static final String USER_SETUP_COMPLETE = "user_setup_complete"; field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; Loading Loading @@ -5260,10 +5261,20 @@ package android.widget { package android.window { public final class DisplayAreaInfo implements android.os.Parcelable { ctor public DisplayAreaInfo(@NonNull android.window.WindowContainerToken, int); method public int describeContents(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.window.DisplayAreaInfo> CREATOR; field @NonNull public final android.content.res.Configuration configuration; field public final int displayId; field @NonNull public final android.window.WindowContainerToken token; } public class DisplayAreaOrganizer extends android.window.WindowOrganizer { ctor public DisplayAreaOrganizer(); method public void onDisplayAreaAppeared(@NonNull android.window.WindowContainerToken); method public void onDisplayAreaVanished(@NonNull android.window.WindowContainerToken); method public void onDisplayAreaAppeared(@NonNull android.window.DisplayAreaInfo); method public void onDisplayAreaVanished(@NonNull android.window.DisplayAreaInfo); method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void registerOrganizer(int); field public static final int FEATURE_DEFAULT_TASK_CONTAINER = 1; // 0x1 field public static final int FEATURE_ROOT = 0; // 0x0 Loading