diff options
62 files changed, 354 insertions, 95 deletions
diff --git a/MEMORY_OWNERS b/MEMORY_OWNERS new file mode 100644 index 000000000000..89ce5140d8ea --- /dev/null +++ b/MEMORY_OWNERS @@ -0,0 +1,6 @@ +surenb@google.com +tjmercier@google.com +kaleshsingh@google.com +jyescas@google.com +carlosgalo@google.com +jji@google.com diff --git a/api/Android.bp b/api/Android.bp index 7fb427eb715a..113424f7817d 100644 --- a/api/Android.bp +++ b/api/Android.bp @@ -231,7 +231,7 @@ genrule { name: "sdk-annotations.zip", defaults: ["sdk-annotations-defaults"], srcs: [ - ":android-non-updatable-doc-stubs{.annotations.zip}", + ":android-non-updatable-doc-stubs{.exportable.annotations.zip}", ":all-modules-public-annotations", ], } @@ -240,7 +240,7 @@ genrule { name: "sdk-annotations-system.zip", defaults: ["sdk-annotations-defaults"], srcs: [ - ":android-non-updatable-doc-stubs-system{.annotations.zip}", + ":android-non-updatable-doc-stubs-system{.exportable.annotations.zip}", ":all-modules-system-annotations", ], } @@ -249,7 +249,7 @@ genrule { name: "sdk-annotations-module-lib.zip", defaults: ["sdk-annotations-defaults"], srcs: [ - ":android-non-updatable-doc-stubs-module-lib{.annotations.zip}", + ":android-non-updatable-doc-stubs-module-lib{.exportable.annotations.zip}", ":all-modules-module-lib-annotations", ], } @@ -258,7 +258,7 @@ genrule { name: "sdk-annotations-system-server.zip", defaults: ["sdk-annotations-defaults"], srcs: [ - ":android-non-updatable-doc-stubs-system-server{.annotations.zip}", + ":android-non-updatable-doc-stubs-system-server{.exportable.annotations.zip}", ":all-modules-system-server-annotations", ], } diff --git a/api/ApiDocs.bp b/api/ApiDocs.bp index 62f0b6e9a2e0..426ffdfda451 100644 --- a/api/ApiDocs.bp +++ b/api/ApiDocs.bp @@ -208,7 +208,7 @@ droiddoc { name: "offline-sdk-docs", defaults: ["framework-docs-default"], srcs: [ - ":framework-doc-stubs", + ":framework-doc-stubs{.exportable}", ], hdf: [ "android.whichdoc offline", @@ -229,7 +229,7 @@ droiddoc { name: "offline-sdk-referenceonly-docs", defaults: ["framework-docs-default"], srcs: [ - ":framework-doc-stubs", + ":framework-doc-stubs{.exportable}", ], hdf: [ "android.whichdoc offline", @@ -273,7 +273,7 @@ droiddoc { name: "ds-docs-java", defaults: ["framework-docs-default"], srcs: [ - ":framework-doc-stubs", + ":framework-doc-stubs{.exportable}", ], hdf: [ "android.whichdoc online", @@ -307,7 +307,7 @@ droiddoc { droiddoc { name: "ds-docs-kt", srcs: [ - ":framework-doc-stubs", + ":framework-doc-stubs{.exportable}", ], flags: [ "-noJdkLink", @@ -361,7 +361,7 @@ droiddoc { name: "ds-static-docs", defaults: ["framework-docs-default"], srcs: [ - ":framework-doc-stubs", + ":framework-doc-stubs{.exportable}", ], hdf: [ "android.whichdoc online", @@ -378,7 +378,7 @@ droiddoc { name: "ds-ref-navtree-docs", defaults: ["framework-docs-default"], srcs: [ - ":framework-doc-stubs", + ":framework-doc-stubs{.exportable}", ], hdf: [ "android.whichdoc online", diff --git a/api/StubLibraries.bp b/api/StubLibraries.bp index 59c01284ab27..852abdfdf602 100644 --- a/api/StubLibraries.bp +++ b/api/StubLibraries.bp @@ -961,7 +961,7 @@ java_api_library { java_library { name: "android_stubs_current_with_test_libs", static_libs: [ - "android_stubs_current", + "android_stubs_current_exportable", "android.test.base.stubs", "android.test.mock.stubs", "android.test.runner.stubs", @@ -976,7 +976,7 @@ java_library { java_library { name: "android_system_stubs_current_with_test_libs", static_libs: [ - "android_system_stubs_current", + "android_system_stubs_current_exportable", "android.test.base.stubs.system", "android.test.mock.stubs.system", "android.test.runner.stubs.system", @@ -991,7 +991,7 @@ java_library { java_library { name: "android_module_stubs_current_with_test_libs", static_libs: [ - "android_module_lib_stubs_current", + "android_module_lib_stubs_current_exportable", "android.test.base.stubs", "android.test.mock.stubs", "android.test.runner.stubs", @@ -1006,7 +1006,7 @@ java_library { java_library { name: "android_system_server_stubs_current_with_test_libs", static_libs: [ - "android_system_server_stubs_current", + "android_system_server_stubs_current_exportable", "android.test.base.stubs.system", "android.test.mock.stubs.system", "android.test.runner.stubs.system", diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 34c620f4a13c..cdeddfbba467 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -3860,6 +3860,7 @@ package android.content.pm { method public void setInstallAsInstantApp(boolean); method public void setInstallAsVirtualPreload(); method public void setRequestDowngrade(boolean); + method @FlaggedApi("android.content.pm.rollback_lifetime") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackLifetimeMillis(long); method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged(); } diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 462df072f333..920cc57a8575 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -34,6 +34,7 @@ import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.CurrentTimeMillisLong; import android.annotation.DurationMillisLong; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -2370,6 +2371,8 @@ public class PackageInstaller { public DataLoaderParams dataLoaderParams; /** {@hide} */ public int rollbackDataPolicy = PackageManager.ROLLBACK_DATA_POLICY_RESTORE; + /** @hide */ + public long rollbackLifetimeMillis = 0; /** {@hide} */ public boolean forceQueryableOverride; /** {@hide} */ @@ -2424,6 +2427,7 @@ public class PackageInstaller { dataLoaderParams = new DataLoaderParams(dataLoaderParamsParcel); } rollbackDataPolicy = source.readInt(); + rollbackLifetimeMillis = source.readLong(); requireUserAction = source.readInt(); packageSource = source.readInt(); applicationEnabledSettingPersistent = source.readBoolean(); @@ -2456,6 +2460,7 @@ public class PackageInstaller { ret.requiredInstalledVersionCode = requiredInstalledVersionCode; ret.dataLoaderParams = dataLoaderParams; ret.rollbackDataPolicy = rollbackDataPolicy; + ret.rollbackLifetimeMillis = rollbackLifetimeMillis; ret.requireUserAction = requireUserAction; ret.packageSource = packageSource; ret.applicationEnabledSettingPersistent = applicationEnabledSettingPersistent; @@ -2737,12 +2742,7 @@ public class PackageInstaller { */ @SystemApi public void setEnableRollback(boolean enable) { - if (enable) { - installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK; - } else { - installFlags &= ~PackageManager.INSTALL_ENABLE_ROLLBACK; - } - rollbackDataPolicy = PackageManager.ROLLBACK_DATA_POLICY_RESTORE; + setEnableRollback(enable, PackageManager.ROLLBACK_DATA_POLICY_RESTORE); } /** @@ -2766,10 +2766,36 @@ public class PackageInstaller { installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK; } else { installFlags &= ~PackageManager.INSTALL_ENABLE_ROLLBACK; + rollbackLifetimeMillis = 0; } rollbackDataPolicy = dataPolicy; } + /** + * If rollback enabled for this session (via {@link #setEnableRollback}, set time + * after which rollback will no longer be possible + * + * <p>For multi-package installs, this value must be set on the parent session. + * Child session rollback lifetime will be ignored. + * + * @param lifetimeMillis time after which rollback expires + * @throws IllegalArgumentException if lifetimeMillis is negative or rollback is not + * enabled via setEnableRollback. + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) + @FlaggedApi(Flags.FLAG_ROLLBACK_LIFETIME) + public void setRollbackLifetimeMillis(@DurationMillisLong long lifetimeMillis) { + if (lifetimeMillis < 0) { + throw new IllegalArgumentException("rollbackLifetimeMillis can't be negative."); + } + if ((installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) == 0) { + throw new IllegalArgumentException( + "Can't set rollbackLifetimeMillis when rollback is not enabled"); + } + rollbackLifetimeMillis = lifetimeMillis; + } /** * @deprecated use {@link #setRequestDowngrade(boolean)}. @@ -3124,6 +3150,7 @@ public class PackageInstaller { pw.printPair("requiredInstalledVersionCode", requiredInstalledVersionCode); pw.printPair("dataLoaderParams", dataLoaderParams); pw.printPair("rollbackDataPolicy", rollbackDataPolicy); + pw.printPair("rollbackLifetimeMillis", rollbackLifetimeMillis); pw.printPair("applicationEnabledSettingPersistent", applicationEnabledSettingPersistent); pw.printHexPair("developmentInstallFlags", developmentInstallFlags); @@ -3165,6 +3192,7 @@ public class PackageInstaller { dest.writeParcelable(null, flags); } dest.writeInt(rollbackDataPolicy); + dest.writeLong(rollbackLifetimeMillis); dest.writeInt(requireUserAction); dest.writeInt(packageSource); dest.writeBoolean(applicationEnabledSettingPersistent); @@ -3358,6 +3386,9 @@ public class PackageInstaller { /** {@hide} */ public int rollbackDataPolicy; + /** @hide */ + public long rollbackLifetimeMillis; + /** {@hide} */ public int requireUserAction; @@ -3425,6 +3456,7 @@ public class PackageInstaller { isCommitted = source.readBoolean(); isPreapprovalRequested = source.readBoolean(); rollbackDataPolicy = source.readInt(); + rollbackLifetimeMillis = source.readLong(); createdMillis = source.readLong(); requireUserAction = source.readInt(); installerUid = source.readInt(); @@ -4048,6 +4080,7 @@ public class PackageInstaller { dest.writeBoolean(isCommitted); dest.writeBoolean(isPreapprovalRequested); dest.writeInt(rollbackDataPolicy); + dest.writeLong(rollbackLifetimeMillis); dest.writeLong(createdMillis); dest.writeInt(requireUserAction); dest.writeInt(installerUid); diff --git a/core/java/android/content/pm/flags.aconfig b/core/java/android/content/pm/flags.aconfig index 524253371e49..d07de72d6cf5 100644 --- a/core/java/android/content/pm/flags.aconfig +++ b/core/java/android/content/pm/flags.aconfig @@ -6,3 +6,11 @@ flag { description: "Feature flag to enable the features that rely on new ART Service APIs that are in the VIC version of the ART module." bug: "304741685" } + +flag { + name: "rollback_lifetime" + namespace: "package_manager_service" + description: "Feature flag to enable custom rollback lifetime during install." + bug: "299670324" + is_fixed_read_only: true +} diff --git a/core/java/android/hardware/radio/OWNERS b/core/java/android/hardware/radio/OWNERS index 302fdd73ccf3..51a85e48832e 100644 --- a/core/java/android/hardware/radio/OWNERS +++ b/core/java/android/hardware/radio/OWNERS @@ -1,4 +1,3 @@ xuweilin@google.com oscarazu@google.com ericjeong@google.com -keunyoung@google.com diff --git a/core/java/com/android/internal/widget/LockSettingsInternal.java b/core/java/com/android/internal/widget/LockSettingsInternal.java index 627e8779f9d0..e59132780c56 100644 --- a/core/java/com/android/internal/widget/LockSettingsInternal.java +++ b/core/java/com/android/internal/widget/LockSettingsInternal.java @@ -171,11 +171,11 @@ public abstract class LockSettingsInternal { * Register a LockSettingsStateListener * @param listener The listener to be registered */ - public abstract void registerLockSettingsStateListener(ILockSettingsStateListener listener); + public abstract void registerLockSettingsStateListener(LockSettingsStateListener listener); /** * Unregister a LockSettingsStateListener * @param listener The listener to be unregistered */ - public abstract void unregisterLockSettingsStateListener(ILockSettingsStateListener listener); + public abstract void unregisterLockSettingsStateListener(LockSettingsStateListener listener); } diff --git a/core/java/com/android/internal/widget/ILockSettingsStateListener.aidl b/core/java/com/android/internal/widget/LockSettingsStateListener.java index 25e30034fe8f..869e676f4a42 100644 --- a/core/java/com/android/internal/widget/ILockSettingsStateListener.aidl +++ b/core/java/com/android/internal/widget/LockSettingsStateListener.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -21,7 +21,7 @@ package com.android.internal.widget; * state of primary authentication (i.e. PIN/pattern/password). * @hide */ -oneway interface ILockSettingsStateListener { +public interface LockSettingsStateListener { /** * Defines behavior in response to a successful authentication * @param userId The user Id for the requested authentication @@ -33,4 +33,4 @@ oneway interface ILockSettingsStateListener { * @param userId The user Id for the requested authentication */ void onAuthenticationFailed(int userId); -}
\ No newline at end of file +} diff --git a/core/tests/BroadcastRadioTests/OWNERS b/core/tests/BroadcastRadioTests/OWNERS index d2bdd643b0a2..51a85e48832e 100644 --- a/core/tests/BroadcastRadioTests/OWNERS +++ b/core/tests/BroadcastRadioTests/OWNERS @@ -1,3 +1,3 @@ xuweilin@google.com oscarazu@google.com -keunyoung@google.com +ericjeong@google.com diff --git a/nfc/api/current.txt b/nfc/api/current.txt index 91e460324289..0ab2ef7ed7cb 100644 --- a/nfc/api/current.txt +++ b/nfc/api/current.txt @@ -97,12 +97,12 @@ package android.nfc { field public static final String EXTRA_SECURE_ELEMENT_NAME = "android.nfc.extra.SECURE_ELEMENT_NAME"; field public static final String EXTRA_TAG = "android.nfc.extra.TAG"; field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_LISTEN_DISABLE = 0; // 0x0 - field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_LISTEN_KEEP = -1; // 0xffffffff + field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_LISTEN_KEEP = -2147483648; // 0x80000000 field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_LISTEN_NFC_PASSIVE_A = 1; // 0x1 field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_LISTEN_NFC_PASSIVE_B = 2; // 0x2 field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_LISTEN_NFC_PASSIVE_F = 4; // 0x4 field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_READER_DISABLE = 0; // 0x0 - field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_READER_KEEP = -1; // 0xffffffff + field @FlaggedApi("android.nfc.enable_nfc_set_discovery_tech") public static final int FLAG_READER_KEEP = -2147483648; // 0x80000000 field public static final int FLAG_READER_NFC_A = 1; // 0x1 field public static final int FLAG_READER_NFC_B = 2; // 0x2 field public static final int FLAG_READER_NFC_BARCODE = 16; // 0x10 diff --git a/nfc/java/android/nfc/NfcAdapter.java b/nfc/java/android/nfc/NfcAdapter.java index 979855e5e25c..079172142145 100644 --- a/nfc/java/android/nfc/NfcAdapter.java +++ b/nfc/java/android/nfc/NfcAdapter.java @@ -414,18 +414,18 @@ public final class NfcAdapter { /** * Flags for use with {@link #setDiscoveryTechnology(Activity, int, int)}. * <p> - * Setting this flag makes listening to use current flags. + * Setting this flag makes listening to keep the current technology configuration. */ @FlaggedApi(Flags.FLAG_ENABLE_NFC_SET_DISCOVERY_TECH) - public static final int FLAG_LISTEN_KEEP = -1; + public static final int FLAG_LISTEN_KEEP = 0x80000000; /** * Flags for use with {@link #setDiscoveryTechnology(Activity, int, int)}. * <p> - * Setting this flag makes polling to use current flags. + * Setting this flag makes polling to keep the current technology configuration. */ @FlaggedApi(Flags.FLAG_ENABLE_NFC_SET_DISCOVERY_TECH) - public static final int FLAG_READER_KEEP = -1; + public static final int FLAG_READER_KEEP = 0x80000000; /** @hide */ public static final int FLAG_USE_ALL_TECH = 0xff; @@ -1793,6 +1793,8 @@ public final class NfcAdapter { * * Use {@link #FLAG_READER_KEEP} to keep current polling technology. * Use {@link #FLAG_LISTEN_KEEP} to keep current listenig technology. + * (if the _KEEP flag is specified the other technology flags shouldn't be set + * and are quietly ignored otherwise). * Use {@link #FLAG_READER_DISABLE} to disable polling. * Use {@link #FLAG_LISTEN_DISABLE} to disable listening. * Also refer to {@link #resetDiscoveryTechnology(Activity)} to restore these changes. @@ -1824,6 +1826,15 @@ public final class NfcAdapter { @FlaggedApi(Flags.FLAG_ENABLE_NFC_SET_DISCOVERY_TECH) public void setDiscoveryTechnology(@NonNull Activity activity, @PollTechnology int pollTechnology, @ListenTechnology int listenTechnology) { + + // A special treatment of the _KEEP flags + if ((listenTechnology & FLAG_LISTEN_KEEP) != 0) { + listenTechnology = -1; + } + if ((pollTechnology & FLAG_READER_KEEP) != 0) { + pollTechnology = -1; + } + if (listenTechnology == FLAG_LISTEN_DISABLE) { synchronized (sLock) { if (!sHasNfcFeature) { @@ -1850,10 +1861,10 @@ public final class NfcAdapter { } /** - * Restore the poll/listen technologies of NFC controller, + * Restore the poll/listen technologies of NFC controller to its default state, * which were changed by {@link #setDiscoveryTechnology(Activity , int , int)} * - * @param activity The Activity that requests to changed technologies. + * @param activity The Activity that requested to change technologies. */ @FlaggedApi(Flags.FLAG_ENABLE_NFC_SET_DISCOVERY_TECH) diff --git a/packages/CrashRecovery/framework/Android.bp b/packages/CrashRecovery/framework/Android.bp index b2af315ef2c9..c0d93531a1e6 100644 --- a/packages/CrashRecovery/framework/Android.bp +++ b/packages/CrashRecovery/framework/Android.bp @@ -1,9 +1,55 @@ -filegroup { +soong_config_module_type { + name: "platform_filegroup", + module_type: "filegroup", + config_namespace: "ANDROID", + bool_variables: [ + "move_crashrecovery_files", + ], + properties: [ + "srcs", + ], +} + +platform_filegroup { name: "framework-crashrecovery-sources", srcs: [ "java/**/*.java", "java/**/*.aidl", ], + soong_config_variables: { + // if the flag is enabled, then files would be moved to module + move_crashrecovery_files: { + srcs: [], + }, + }, path: "java", visibility: ["//frameworks/base:__subpackages__"], } + +soong_config_module_type { + name: "module_filegroup", + module_type: "filegroup", + config_namespace: "ANDROID", + bool_variables: [ + "move_crashrecovery_files", + ], + properties: [ + "srcs", + ], +} + +module_filegroup { + name: "framework-crashrecovery-module-sources", + srcs: [], + soong_config_variables: { + // if the flag is enabled, then files would be moved to module + move_crashrecovery_files: { + srcs: [ + "java/**/*.java", + "java/**/*.aidl", + ], + }, + }, + path: "java", + visibility: ["//packages/modules/CrashRecovery/framework"], +} diff --git a/packages/CrashRecovery/services/Android.bp b/packages/CrashRecovery/services/Android.bp index 63e6c5083376..ab10b5a23676 100644 --- a/packages/CrashRecovery/services/Android.bp +++ b/packages/CrashRecovery/services/Android.bp @@ -1,13 +1,59 @@ -filegroup { +soong_config_module_type { + name: "platform_filegroup", + module_type: "filegroup", + config_namespace: "ANDROID", + bool_variables: [ + "move_crashrecovery_files", + ], + properties: [ + "srcs", + ], +} + +platform_filegroup { name: "services-crashrecovery-sources", srcs: [ "java/**/*.java", "java/**/*.aidl", ":statslog-crashrecovery-java-gen", ], + soong_config_variables: { + // if the flag is enabled, then files would be moved to module + move_crashrecovery_files: { + srcs: [], + }, + }, visibility: ["//frameworks/base:__subpackages__"], } +soong_config_module_type { + name: "module_filegroup", + module_type: "filegroup", + config_namespace: "ANDROID", + bool_variables: [ + "move_crashrecovery_files", + ], + properties: [ + "srcs", + ], +} + +module_filegroup { + name: "services-crashrecovery-module-sources", + srcs: [], + soong_config_variables: { + // if the flag is enabled, then files would be moved to module + move_crashrecovery_files: { + srcs: [ + "java/**/*.java", + "java/**/*.aidl", + ":statslog-crashrecovery-java-gen", + ], + }, + }, + visibility: ["//packages/modules/CrashRecovery/service"], +} + genrule { name: "statslog-crashrecovery-java-gen", tools: ["stats-log-api-gen"], diff --git a/packages/CrashRecovery/services/java/com/android/server/RescueParty.java b/packages/CrashRecovery/services/java/com/android/server/RescueParty.java index dffe4e239ec9..5d03ef578995 100644 --- a/packages/CrashRecovery/services/java/com/android/server/RescueParty.java +++ b/packages/CrashRecovery/services/java/com/android/server/RescueParty.java @@ -390,7 +390,8 @@ public class RescueParty { return; } - CrashRecoveryStatsLog.write(CrashRecoveryStatsLog.RESCUE_PARTY_RESET_REPORTED, level); + CrashRecoveryStatsLog.write(CrashRecoveryStatsLog.RESCUE_PARTY_RESET_REPORTED, + level, levelToString(level)); // Try our best to reset all settings possible, and once finished // rethrow any exception that we encountered Exception res = null; diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index ad08c515b57b..99383d9b1604 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -15,6 +15,7 @@ // package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"], } diff --git a/packages/SystemUI/accessibility/accessibilitymenu/Android.bp b/packages/SystemUI/accessibility/accessibilitymenu/Android.bp index f358417e6bea..1568d59f3ad3 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/Android.bp +++ b/packages/SystemUI/accessibility/accessibilitymenu/Android.bp @@ -15,6 +15,7 @@ // package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", default_applicable_licenses: ["Android-Apache-2.0"], } diff --git a/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp b/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp index 17db1ace63ed..06ace37d8bd1 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp +++ b/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp @@ -15,6 +15,7 @@ // package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", default_applicable_licenses: ["Android-Apache-2.0"], } diff --git a/packages/SystemUI/animation/Android.bp b/packages/SystemUI/animation/Android.bp index 6f53b42371c6..d700f8777f31 100644 --- a/packages/SystemUI/animation/Android.bp +++ b/packages/SystemUI/animation/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/checks/Android.bp b/packages/SystemUI/checks/Android.bp index d3f66e333e96..4cbc18c3a295 100644 --- a/packages/SystemUI/checks/Android.bp +++ b/packages/SystemUI/checks/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/packages/SystemUI/common/Android.bp b/packages/SystemUI/common/Android.bp index e36ada89b207..53bdf38ec258 100644 --- a/packages/SystemUI/common/Android.bp +++ b/packages/SystemUI/common/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/compose/core/Android.bp b/packages/SystemUI/compose/core/Android.bp index ab3efb886182..ce9445e3f399 100644 --- a/packages/SystemUI/compose/core/Android.bp +++ b/packages/SystemUI/compose/core/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/compose/core/tests/Android.bp b/packages/SystemUI/compose/core/tests/Android.bp index c008bb13aecf..ce2ba0349be8 100644 --- a/packages/SystemUI/compose/core/tests/Android.bp +++ b/packages/SystemUI/compose/core/tests/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/compose/features/Android.bp b/packages/SystemUI/compose/features/Android.bp index c6438c9ef955..0fc91c840162 100644 --- a/packages/SystemUI/compose/features/Android.bp +++ b/packages/SystemUI/compose/features/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/compose/features/tests/Android.bp b/packages/SystemUI/compose/features/tests/Android.bp index c7c9140b53ed..77a60b81ec4f 100644 --- a/packages/SystemUI/compose/features/tests/Android.bp +++ b/packages/SystemUI/compose/features/tests/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/customization/Android.bp b/packages/SystemUI/customization/Android.bp index fc37b355494f..7fbcb0d5ed4f 100644 --- a/packages/SystemUI/customization/Android.bp +++ b/packages/SystemUI/customization/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/log/Android.bp b/packages/SystemUI/log/Android.bp index 627ac4b7c381..36d5c2fbcf2f 100644 --- a/packages/SystemUI/log/Android.bp +++ b/packages/SystemUI/log/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/monet/Android.bp b/packages/SystemUI/monet/Android.bp index 507ea25083e1..98f7aced7522 100644 --- a/packages/SystemUI/monet/Android.bp +++ b/packages/SystemUI/monet/Android.bp @@ -14,6 +14,7 @@ // limitations under the License. // package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", default_applicable_licenses: ["Android-Apache-2.0"], } diff --git a/packages/SystemUI/plugin/Android.bp b/packages/SystemUI/plugin/Android.bp index bb47a2f4726e..cb8ec9ad54c6 100644 --- a/packages/SystemUI/plugin/Android.bp +++ b/packages/SystemUI/plugin/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/plugin/ExamplePlugin/Android.bp b/packages/SystemUI/plugin/ExamplePlugin/Android.bp index 3f0fdedb57da..cbfa3f8625d7 100644 --- a/packages/SystemUI/plugin/ExamplePlugin/Android.bp +++ b/packages/SystemUI/plugin/ExamplePlugin/Android.bp @@ -1,4 +1,5 @@ package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/plugin_core/Android.bp b/packages/SystemUI/plugin_core/Android.bp index 4e39f1ac9545..e8e54c3702e7 100644 --- a/packages/SystemUI/plugin_core/Android.bp +++ b/packages/SystemUI/plugin_core/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/shared/Android.bp b/packages/SystemUI/shared/Android.bp index e2d27f15b78a..ffa398ba4783 100644 --- a/packages/SystemUI/shared/Android.bp +++ b/packages/SystemUI/shared/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/packages/SystemUI/tests/Android.bp b/packages/SystemUI/tests/Android.bp index 3c418ed49adc..1594ec53b770 100644 --- a/packages/SystemUI/tests/Android.bp +++ b/packages/SystemUI/tests/Android.bp @@ -15,6 +15,7 @@ // package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"], } diff --git a/packages/SystemUI/unfold/Android.bp b/packages/SystemUI/unfold/Android.bp index a1617a6ccc28..c8109e60e40e 100644 --- a/packages/SystemUI/unfold/Android.bp +++ b/packages/SystemUI/unfold/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_system_ui_please_use_a_more_specific_subteam_if_possible_", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license" diff --git a/services/core/java/com/android/server/broadcastradio/OWNERS b/services/core/java/com/android/server/broadcastradio/OWNERS index d2bdd643b0a2..51a85e48832e 100644 --- a/services/core/java/com/android/server/broadcastradio/OWNERS +++ b/services/core/java/com/android/server/broadcastradio/OWNERS @@ -1,3 +1,3 @@ xuweilin@google.com oscarazu@google.com -keunyoung@google.com +ericjeong@google.com diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index c81ce26b6403..939423f27c3c 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -91,7 +91,6 @@ import android.os.Handler; import android.os.IBinder; import android.os.IProgressListener; import android.os.Process; -import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; @@ -137,11 +136,11 @@ import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; import com.android.internal.widget.ICheckCredentialProgressCallback; import com.android.internal.widget.ILockSettings; -import com.android.internal.widget.ILockSettingsStateListener; import com.android.internal.widget.IWeakEscrowTokenActivatedListener; import com.android.internal.widget.IWeakEscrowTokenRemovedListener; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockSettingsInternal; +import com.android.internal.widget.LockSettingsStateListener; import com.android.internal.widget.LockscreenCredential; import com.android.internal.widget.RebootEscrowListener; import com.android.internal.widget.VerifyCredentialResponse; @@ -183,6 +182,7 @@ import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; import java.util.StringJoiner; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -330,8 +330,8 @@ public class LockSettingsService extends ILockSettings.Stub { private HashMap<UserHandle, UserManager> mUserManagerCache = new HashMap<>(); - private final RemoteCallbackList<ILockSettingsStateListener> mLockSettingsStateListeners = - new RemoteCallbackList<>(); + private final CopyOnWriteArrayList<LockSettingsStateListener> mLockSettingsStateListeners = + new CopyOnWriteArrayList<>(); // This class manages life cycle events for encrypted users on File Based Encryption (FBE) // devices. The most basic of these is to show/hide notifications about missing features until @@ -2357,25 +2357,12 @@ public class LockSettingsService extends ILockSettings.Stub { } private void notifyLockSettingsStateListeners(boolean success, int userId) { - int i = mLockSettingsStateListeners.beginBroadcast(); - try { - while (i > 0) { - i--; - try { - if (success) { - mLockSettingsStateListeners.getBroadcastItem(i) - .onAuthenticationSucceeded(userId); - } else { - mLockSettingsStateListeners.getBroadcastItem(i) - .onAuthenticationFailed(userId); - } - } catch (RemoteException e) { - Slog.e(TAG, "Exception while notifying LockSettingsStateListener:" - + " success = " + success + ", userId = " + userId, e); - } + for (LockSettingsStateListener listener : mLockSettingsStateListeners) { + if (success) { + listener.onAuthenticationSucceeded(userId); + } else { + listener.onAuthenticationFailed(userId); } - } finally { - mLockSettingsStateListeners.finishBroadcast(); } } @@ -3698,15 +3685,15 @@ public class LockSettingsService extends ILockSettings.Stub { } @Override - public void registerLockSettingsStateListener( - @NonNull ILockSettingsStateListener listener) { - mLockSettingsStateListeners.register(listener); + public void registerLockSettingsStateListener(@NonNull LockSettingsStateListener listener) { + Objects.requireNonNull(listener, "listener cannot be null"); + mLockSettingsStateListeners.add(listener); } @Override public void unregisterLockSettingsStateListener( - @NonNull ILockSettingsStateListener listener) { - mLockSettingsStateListeners.unregister(listener); + @NonNull LockSettingsStateListener listener) { + mLockSettingsStateListeners.remove(listener); } } diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 178719f3c4ec..7c307bd536dc 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -42,6 +42,7 @@ import android.content.Intent; import android.content.IntentSender; import android.content.IntentSender.SendIntentException; import android.content.pm.ApplicationInfo; +import android.content.pm.Flags; import android.content.pm.IPackageInstaller; import android.content.pm.IPackageInstallerCallback; import android.content.pm.IPackageInstallerSession; @@ -745,6 +746,22 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements params.installFlags &= ~PackageManager.INSTALL_DISABLE_VERIFICATION; } + if (Flags.rollbackLifetime()) { + if (params.rollbackLifetimeMillis > 0) { + if ((params.installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) == 0) { + throw new IllegalArgumentException( + "Can't set rollbackLifetimeMillis when rollback is not enabled"); + } + if (mContext.checkCallingOrSelfPermission(Manifest.permission.MANAGE_ROLLBACKS) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException( + "Setting rollback lifetime requires the MANAGE_ROLLBACKS permission"); + } + } else if (params.rollbackLifetimeMillis < 0) { + throw new IllegalArgumentException("rollbackLifetimeMillis can't be negative."); + } + } + boolean isApex = (params.installFlags & PackageManager.INSTALL_APEX) != 0; if (isApex) { if (mContext.checkCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGE_UPDATES) diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 2372fd3dc9e9..94c6b8b2016c 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -1206,6 +1206,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { info.whitelistedRestrictedPermissions = params.whitelistedRestrictedPermissions; info.autoRevokePermissionsMode = params.autoRevokePermissionsMode; info.installFlags = params.installFlags; + info.rollbackLifetimeMillis = params.rollbackLifetimeMillis; info.isMultiPackage = params.isMultiPackage; info.isStaged = params.isStaged; info.rollbackDataPolicy = params.rollbackDataPolicy; diff --git a/services/core/java/com/android/server/rollback/Rollback.java b/services/core/java/com/android/server/rollback/Rollback.java index 85d93f4f76c4..a5b90f12a5cc 100644 --- a/services/core/java/com/android/server/rollback/Rollback.java +++ b/services/core/java/com/android/server/rollback/Rollback.java @@ -174,6 +174,11 @@ class Rollback { @Nullable private final String mInstallerPackageName; /** + * Time after which rollback expires. + */ + private long mRollbackLifetimeMillis = 0; + + /** * Session ids for all packages in the install. For multi-package sessions, this is the list * of child session ids. For normal sessions, this list is a single element with the normal * session id. @@ -286,6 +291,24 @@ class Rollback { } /** + * Sets rollback lifetime in milliseconds, for purposes of expiring rollback data. + */ + @WorkerThread + void setRollbackLifetimeMillis(long lifetimeMillis) { + assertInWorkerThread(); + mRollbackLifetimeMillis = lifetimeMillis; + } + + /** + * Returns rollback lifetime in milliseconds, for purposes of expiring rollback data. + */ + @WorkerThread + long getRollbackLifetimeMillis() { + assertInWorkerThread(); + return mRollbackLifetimeMillis; + } + + /** * Returns the session ID associated with this rollback, or {@code -1} if unknown. */ @AnyThread @@ -930,6 +953,7 @@ class Rollback { ipw.println("-state: " + getStateAsString()); ipw.println("-stateDescription: " + mStateDescription); ipw.println("-timestamp: " + getTimestamp()); + ipw.println("-rollbackLifetimeMillis: " + getRollbackLifetimeMillis()); ipw.println("-isStaged: " + isStaged()); ipw.println("-originalSessionId: " + getOriginalSessionId()); ipw.println("-packages:"); diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java index deff3d793854..b38d6c7f1146 100644 --- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java @@ -28,6 +28,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; import android.content.pm.ApplicationInfo; +import android.content.pm.Flags; import android.content.pm.ModuleInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; @@ -702,6 +703,15 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba // Schedules future expiration as appropriate. @WorkerThread private void runExpiration() { + if (Flags.rollbackLifetime()) { + runExpirationCustomRollbackLifetime(); + } else { + runExpirationDefaultRollbackLifetime(); + } + } + + @WorkerThread + private void runExpirationDefaultRollbackLifetime() { getHandler().removeCallbacks(mRunExpiration); assertInWorkerThread(); Instant now = Instant.now(); @@ -729,6 +739,44 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba } } + @WorkerThread + private void runExpirationCustomRollbackLifetime() { + getHandler().removeCallbacks(mRunExpiration); + assertInWorkerThread(); + Instant now = Instant.now(); + long minDelay = 0; + Iterator<Rollback> iter = mRollbacks.iterator(); + while (iter.hasNext()) { + Rollback rollback = iter.next(); + if (!rollback.isAvailable() && !rollback.isCommitted()) { + continue; + } + long rollbackLifetimeMillis = rollback.getRollbackLifetimeMillis(); + if (rollbackLifetimeMillis <= 0) { + rollbackLifetimeMillis = mRollbackLifetimeDurationInMillis; + } + + Instant rollbackExpiryTimestamp = rollback.getTimestamp() + .plusMillis(rollbackLifetimeMillis); + if (!now.isBefore(rollbackExpiryTimestamp)) { + Slog.i(TAG, "runExpiration id=" + rollback.info.getRollbackId()); + iter.remove(); + deleteRollback(rollback, "Expired by timeout"); + continue; + } + + long delay = now.until( + rollbackExpiryTimestamp, ChronoUnit.MILLIS); + if (minDelay == 0 || delay < minDelay) { + minDelay = delay; + } + } + + if (minDelay != 0) { + getHandler().postDelayed(mRunExpiration, minDelay); + } + } + @AnyThread private Handler getHandler() { return mHandler; @@ -1277,6 +1325,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba } final Rollback rollback; + if (parentSession.isStaged()) { rollback = mRollbackStore.createStagedRollback(rollbackId, parentSessionId, userId, installerPackageName, packageSessionIds, getExtensionVersions()); @@ -1285,6 +1334,10 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba installerPackageName, packageSessionIds, getExtensionVersions()); } + if (Flags.rollbackLifetime()) { + rollback.setRollbackLifetimeMillis(parentSession.rollbackLifetimeMillis); + } + mRollbacks.add(rollback); return rollback; } diff --git a/services/core/java/com/android/server/rollback/RollbackStore.java b/services/core/java/com/android/server/rollback/RollbackStore.java index 8068c6f46733..0af137faf5b4 100644 --- a/services/core/java/com/android/server/rollback/RollbackStore.java +++ b/services/core/java/com/android/server/rollback/RollbackStore.java @@ -19,6 +19,7 @@ package com.android.server.rollback; import static com.android.server.rollback.Rollback.rollbackStateFromString; import android.annotation.NonNull; +import android.content.pm.Flags; import android.content.pm.PackageManager; import android.content.pm.VersionedPackage; import android.content.rollback.PackageRollbackInfo; @@ -312,6 +313,9 @@ class RollbackStore { JSONObject dataJson = new JSONObject(); dataJson.put("info", rollbackInfoToJson(rollback.info)); dataJson.put("timestamp", rollback.getTimestamp().toString()); + if (Flags.rollbackLifetime()) { + dataJson.put("rollbackLifetimeMillis", rollback.getRollbackLifetimeMillis()); + } dataJson.put("originalSessionId", rollback.getOriginalSessionId()); dataJson.put("state", rollback.getStateAsString()); dataJson.put("stateDescription", rollback.getStateDescription()); @@ -375,7 +379,7 @@ class RollbackStore { @VisibleForTesting static Rollback rollbackFromJson(JSONObject dataJson, File backupDir) throws JSONException, ParseException { - return new Rollback( + Rollback rollback = new Rollback( rollbackInfoFromJson(dataJson.getJSONObject("info")), backupDir, Instant.parse(dataJson.getString("timestamp")), @@ -388,6 +392,10 @@ class RollbackStore { dataJson.optInt("userId", UserHandle.SYSTEM.getIdentifier()), dataJson.optString("installerPackageName", ""), extensionVersionsFromJson(dataJson.optJSONArray("extensionVersions"))); + if (Flags.rollbackLifetime()) { + rollback.setRollbackLifetimeMillis(dataJson.optLong("rollbackLifetimeMillis")); + } + return rollback; } private static JSONObject toJson(VersionedPackage pkg) throws JSONException { diff --git a/services/core/java/com/android/server/wm/OWNERS b/services/core/java/com/android/server/wm/OWNERS index cd704478aa83..e06f2158dc14 100644 --- a/services/core/java/com/android/server/wm/OWNERS +++ b/services/core/java/com/android/server/wm/OWNERS @@ -17,6 +17,7 @@ mariiasand@google.com rgl@google.com yunfanc@google.com wilsonshih@google.com +jiamingliu@google.com # Files related to background activity launches per-file Background*Start* = set noparent diff --git a/services/core/jni/OWNERS b/services/core/jni/OWNERS index d4f6312d19d9..e37d9a1270de 100644 --- a/services/core/jni/OWNERS +++ b/services/core/jni/OWNERS @@ -30,5 +30,8 @@ per-file com_android_server_vibrator_* = file:/services/core/java/com/android/se per-file com_android_server_am_CachedAppOptimizer.cpp = timmurray@google.com, edgararriaga@google.com, dualli@google.com, carmenjackson@google.com, philipcuadra@google.com per-file com_android_server_companion_virtual_InputController.cpp = file:/services/companion/java/com/android/server/companion/virtual/OWNERS +# Memory +per-file com_android_server_am_OomConnection.cpp = file:/MEMORY_OWNERS + # Bug component : 158088 = per-file *AnrTimer* per-file *AnrTimer* = file:/PERFORMANCE_OWNERS diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java index fb0fbe87dab3..50e426ca0282 100644 --- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java +++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java @@ -327,7 +327,7 @@ public final class ProfcollectForwardingService extends SystemService { // Sample for a fraction of dex2oat runs. final int traceFrequency = DeviceConfig.getInt(DeviceConfig.NAMESPACE_PROFCOLLECT_NATIVE_BOOT, - "dex2oat_trace_freq", 10); + "dex2oat_trace_freq", 25); int randomNum = ThreadLocalRandom.current().nextInt(100); if (randomNum < traceFrequency) { if (DEBUG) { diff --git a/services/tests/InputMethodSystemServerTests/Android.bp b/services/tests/InputMethodSystemServerTests/Android.bp index 528fda294050..0af45ecf2ff7 100644 --- a/services/tests/InputMethodSystemServerTests/Android.bp +++ b/services/tests/InputMethodSystemServerTests/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_input_method_framework", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp index e1fd2b34d881..8a12dcd0add4 100644 --- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp +++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_input_method_framework", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/PackageManagerComponentOverrideTests/Android.bp b/services/tests/PackageManagerComponentOverrideTests/Android.bp index 81fd90d9e6a9..1227b0c1047d 100644 --- a/services/tests/PackageManagerComponentOverrideTests/Android.bp +++ b/services/tests/PackageManagerComponentOverrideTests/Android.bp @@ -18,6 +18,7 @@ // and this is more representative of a real caller. It also uses Mockito extended, and this // prevents converting the entire services test module. package { + default_team: "trendy_team_framework_android_packages", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/PackageManagerServiceTests/appenumeration/Android.bp b/services/tests/PackageManagerServiceTests/appenumeration/Android.bp index ad7af44d4089..f15e533fee2b 100644 --- a/services/tests/PackageManagerServiceTests/appenumeration/Android.bp +++ b/services/tests/PackageManagerServiceTests/appenumeration/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_framework_android_packages", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp b/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp index 99211062964e..6da503d5df45 100644 --- a/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp +++ b/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_framework_android_packages", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/PackageManagerServiceTests/server/Android.bp b/services/tests/PackageManagerServiceTests/server/Android.bp index 47d242235c47..84ff891a3778 100644 --- a/services/tests/PackageManagerServiceTests/server/Android.bp +++ b/services/tests/PackageManagerServiceTests/server/Android.bp @@ -3,6 +3,7 @@ //######################################################################## package { + default_team: "trendy_team_framework_android_packages", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/PackageManagerServiceTests/unit/Android.bp b/services/tests/PackageManagerServiceTests/unit/Android.bp index 8505983894a8..c93f48225e48 100644 --- a/services/tests/PackageManagerServiceTests/unit/Android.bp +++ b/services/tests/PackageManagerServiceTests/unit/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_framework_android_packages", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java index 5081198f0058..705359708bc7 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java @@ -39,7 +39,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.PropertyInvalidatedCache; -import android.os.IBinder; import android.os.RemoteException; import android.platform.test.annotations.Presubmit; import android.platform.test.flag.junit.SetFlagsRule; @@ -49,8 +48,8 @@ import android.text.TextUtils; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; -import com.android.internal.widget.ILockSettingsStateListener; import com.android.internal.widget.LockPatternUtils; +import com.android.internal.widget.LockSettingsStateListener; import com.android.internal.widget.LockscreenCredential; import com.android.internal.widget.VerifyCredentialResponse; @@ -412,7 +411,7 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests { mSetFlagsRule.enableFlags(FLAG_REPORT_PRIMARY_AUTH_ATTEMPTS); final LockscreenCredential password = newPassword("password"); setCredential(PRIMARY_USER_ID, password); - final ILockSettingsStateListener listener = mockLockSettingsStateListener(); + final LockSettingsStateListener listener = mock(LockSettingsStateListener.class); mLocalService.registerLockSettingsStateListener(listener); assertEquals(VerifyCredentialResponse.RESPONSE_OK, @@ -429,7 +428,7 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests { final LockscreenCredential password = newPassword("password"); setCredential(PRIMARY_USER_ID, password); final LockscreenCredential badPassword = newPassword("badPassword"); - final ILockSettingsStateListener listener = mockLockSettingsStateListener(); + final LockSettingsStateListener listener = mock(LockSettingsStateListener.class); mLocalService.registerLockSettingsStateListener(listener); assertEquals(VerifyCredentialResponse.RESPONSE_ERROR, @@ -445,7 +444,7 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests { final LockscreenCredential password = newPassword("password"); setCredential(PRIMARY_USER_ID, password); final LockscreenCredential badPassword = newPassword("badPassword"); - final ILockSettingsStateListener listener = mockLockSettingsStateListener(); + final LockSettingsStateListener listener = mock(LockSettingsStateListener.class); mLocalService.registerLockSettingsStateListener(listener); assertEquals(VerifyCredentialResponse.RESPONSE_OK, @@ -599,12 +598,4 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests { assertNotEquals(0, mGateKeeperService.getSecureUserId(userId)); } } - - private ILockSettingsStateListener mockLockSettingsStateListener() { - ILockSettingsStateListener listener = mock(ILockSettingsStateListener.Stub.class); - IBinder binder = mock(IBinder.class); - when(binder.isBinderAlive()).thenReturn(true); - when(listener.asBinder()).thenReturn(binder); - return listener; - } } diff --git a/telecomm/OWNERS b/telecomm/OWNERS index b57b7c79326e..bb2ac51a24f1 100644 --- a/telecomm/OWNERS +++ b/telecomm/OWNERS @@ -6,4 +6,5 @@ xiaotonj@google.com rgreenwalt@google.com grantmenke@google.com pmadapurmath@google.com -tjstuart@google.com
\ No newline at end of file +tjstuart@google.com +huiwang@google.com diff --git a/tests/Input/Android.bp b/tests/Input/Android.bp index 292fbcb0031e..d996ee679208 100644 --- a/tests/Input/Android.bp +++ b/tests/Input/Android.bp @@ -1,4 +1,5 @@ package { + default_team: "trendy_team_input_framework", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/tests/InputMethodStressTest/Android.bp b/tests/InputMethodStressTest/Android.bp index 58ceb3f3edf4..5ed8d8d528c4 100644 --- a/tests/InputMethodStressTest/Android.bp +++ b/tests/InputMethodStressTest/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_input_method_framework", default_applicable_licenses: ["frameworks_base_license"], } diff --git a/tests/StagedInstallTest/Android.bp b/tests/StagedInstallTest/Android.bp index 23efe548c82a..27511411c97e 100644 --- a/tests/StagedInstallTest/Android.bp +++ b/tests/StagedInstallTest/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_framework_android_packages", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/tests/UpdatableSystemFontTest/Android.bp b/tests/UpdatableSystemFontTest/Android.bp index ddb3649a8320..12d43383a6e2 100644 --- a/tests/UpdatableSystemFontTest/Android.bp +++ b/tests/UpdatableSystemFontTest/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_android_gpu", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/tests/UpdatableSystemFontTest/EmojiRenderingTestApp/Android.bp b/tests/UpdatableSystemFontTest/EmojiRenderingTestApp/Android.bp index ed34fa9fc1d0..0f21035b3cf8 100644 --- a/tests/UpdatableSystemFontTest/EmojiRenderingTestApp/Android.bp +++ b/tests/UpdatableSystemFontTest/EmojiRenderingTestApp/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_android_gpu", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/tests/UpdatableSystemFontTest/testdata/Android.bp b/tests/UpdatableSystemFontTest/testdata/Android.bp index 0bdb3a8c6b14..38355530b8c4 100644 --- a/tests/UpdatableSystemFontTest/testdata/Android.bp +++ b/tests/UpdatableSystemFontTest/testdata/Android.bp @@ -13,6 +13,7 @@ // limitations under the License. package { + default_team: "trendy_team_android_gpu", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" diff --git a/tools/codegen/src/com/android/codegen/FileInfo.kt b/tools/codegen/src/com/android/codegen/FileInfo.kt index a1d0389b0041..cc3a15654956 100644 --- a/tools/codegen/src/com/android/codegen/FileInfo.kt +++ b/tools/codegen/src/com/android/codegen/FileInfo.kt @@ -238,7 +238,7 @@ class FileInfo( } else if (classBounds.isDataclass) { // Insert placeholder for generated code to be inserted for the 1st time - chunks.last = (chunks.last as Code) + chunks[chunks.lastIndex] = (chunks.last() as Code) .lines .dropLastWhile { it.isBlank() } .run { @@ -286,4 +286,4 @@ class FileInfo( .let { addAll(it) } } } -}
\ No newline at end of file +} diff --git a/tools/codegen/src/com/android/codegen/Utils.kt b/tools/codegen/src/com/android/codegen/Utils.kt index 9ceb2042d74e..a40bdd7ba8e1 100644 --- a/tools/codegen/src/com/android/codegen/Utils.kt +++ b/tools/codegen/src/com/android/codegen/Utils.kt @@ -137,14 +137,4 @@ private fun parseFailed(source: String, cause: Throwable? = null, desc: String = cause) } -var <T> MutableList<T>.last - get() = last() - set(value) { - if (isEmpty()) { - add(value) - } else { - this[size - 1] = value - } - } - -inline fun <T> buildList(init: MutableList<T>.() -> Unit) = mutableListOf<T>().apply(init)
\ No newline at end of file +inline fun <T> buildList(init: MutableList<T>.() -> Unit) = mutableListOf<T>().apply(init) |