diff options
41 files changed, 646 insertions, 658 deletions
diff --git a/Android.bp b/Android.bp index cf3bbb751f1e..afd8bfd26ac4 100644 --- a/Android.bp +++ b/Android.bp @@ -64,278 +64,13 @@ license { } filegroup { - name: "framework-core-sources", - srcs: [ - "core/java/**/*.java", - "core/java/**/*.aidl", - ], - path: "core/java", -} - -// These are subset of framework-core-sources that are needed by the -// android.test.mock library. The implementation of android.test.mock references -// private members of various components to allow mocking of classes that cannot -// be mocked without access to those internal implementation details. -filegroup { - name: "framework-core-sources-for-test-mock", - srcs: [ - "core/java/android/accounts/AccountManagerCallback.java", - "core/java/android/accounts/AccountManagerFuture.java", - "core/java/android/accounts/AccountManager.java", - "core/java/android/accounts/AccountsException.java", - "core/java/android/accounts/AuthenticatorException.java", - "core/java/android/accounts/OperationCanceledException.java", - "core/java/android/annotation/AnimatorRes.java", - "core/java/android/annotation/AnimRes.java", - "core/java/android/annotation/AnyRes.java", - "core/java/android/annotation/ArrayRes.java", - "core/java/android/annotation/AttrRes.java", - "core/java/android/annotation/BoolRes.java", - "core/java/android/annotation/BroadcastBehavior.java", - "core/java/android/annotation/CallbackExecutor.java", - "core/java/android/annotation/CallSuper.java", - "core/java/android/annotation/CheckResult.java", - "core/java/android/annotation/ColorInt.java", - "core/java/android/annotation/ColorRes.java", - "core/java/android/annotation/DimenRes.java", - "core/java/android/annotation/DrawableRes.java", - "core/java/android/annotation/FontRes.java", - "core/java/android/annotation/FractionRes.java", - "core/java/android/annotation/IntDef.java", - "core/java/android/annotation/IntegerRes.java", - "core/java/android/annotation/IntRange.java", - "core/java/android/annotation/LayoutRes.java", - "core/java/android/annotation/NonNull.java", - "core/java/android/annotation/Nullable.java", - "core/java/android/annotation/PluralsRes.java", - "core/java/android/annotation/RawRes.java", - "core/java/android/annotation/RequiresPermission.java", - "core/java/android/annotation/SdkConstant.java", - "core/java/android/annotation/Size.java", - "core/java/android/annotation/StringDef.java", - "core/java/android/annotation/StringRes.java", - "core/java/android/annotation/StyleableRes.java", - "core/java/android/annotation/StyleRes.java", - "core/java/android/annotation/SuppressLint.java", - "core/java/android/annotation/SystemApi.java", - "core/java/android/annotation/SystemService.java", - "core/java/android/annotation/TestApi.java", - "core/java/android/annotation/UserIdInt.java", - "core/java/android/annotation/XmlRes.java", - "core/java/android/app/Application.java", - "core/java/android/app/IApplicationThread.aidl", - "core/java/android/app/IServiceConnection.aidl", - "core/java/android/app/PackageDeleteObserver.java", - "core/java/android/content/ComponentCallbacks2.java", - "core/java/android/content/ComponentCallbacks.java", - "core/java/android/content/ContentInterface.java", - "core/java/android/content/ContentProvider.java", - "core/java/android/content/ContentProviderNative.java", - "core/java/android/content/ContentResolver.java", - "core/java/android/content/Context.java", - "core/java/android/content/ContextWrapper.java", - "core/java/android/content/DialogInterface.java", - "core/java/android/content/IContentProvider.java", - "core/java/android/content/Intent.java", - "core/java/android/content/IntentSender.java", - "core/java/android/content/OperationApplicationException.java", - "core/java/android/content/pm/ActivityInfo.java", - "core/java/android/content/pm/ApplicationInfo.java", - "core/java/android/content/pm/InstantAppInfo.java", - "core/java/android/content/pm/IPackageDataObserver.aidl", - "core/java/android/content/pm/KeySet.java", - "core/java/android/content/pm/PackageManager.java", - "core/java/android/content/pm/VerifierDeviceIdentity.java", - "core/java/android/content/res/Resources.java", - "core/java/android/database/CrossProcessCursor.java", - "core/java/android/database/CrossProcessCursorWrapper.java", - "core/java/android/database/Cursor.java", - "core/java/android/database/CursorWrapper.java", - "core/java/android/os/Binder.java", - "core/java/android/os/Bundle.java", - "core/java/android/os/IBinder.java", - "core/java/android/os/IInterface.java", - "core/java/android/os/Parcelable.java", - "core/java/android/os/ParcelFileDescriptor.java", - "core/java/android/os/RemoteException.java", - "core/java/android/os/storage/VolumeInfo.java", - "core/java/android/util/AndroidException.java", - "core/java/android/view/DisplayAdjustments.java", - "core/java/android/view/ViewDebug.java", - "core/java/com/android/internal/annotations/VisibleForTesting.java", - ], - path: "core/java", - visibility: ["//frameworks/base/test-mock"], -} - -filegroup { - name: "framework-drm-sources", - srcs: [ - "drm/java/**/*.java", - ], - path: "drm/java", -} - -filegroup { - name: "framework-graphics-sources", - srcs: [ - "graphics/java/**/*.java", - "graphics/java/**/*.aidl", - ], - path: "graphics/java", -} - -filegroup { - name: "framework-identity-sources", - srcs: [ - "identity/java/**/*.java", - ], - path: "identity/java", -} - -filegroup { - name: "framework-keystore-sources", - srcs: [ - "keystore/java/**/*.java", - "keystore/java/**/*.aidl", - ], - path: "keystore/java", -} - -filegroup { - name: "framework-location-sources", - srcs: [ - "location/java/**/*.java", - "location/java/**/*.aidl", - ], - path: "location/java", -} - -filegroup { - name: "framework-lowpan-sources", - srcs: [ - "lowpan/java/**/*.java", - "lowpan/java/**/*.aidl", - ], - path: "lowpan/java", -} - -filegroup { - name: "framework-media-sources", - srcs: [ - "media/java/**/*.java", - "media/java/**/*.aidl", - ], - path: "media/java", -} - -filegroup { - name: "framework-mca-effect-sources", - srcs: [ - "media/mca/effect/java/**/*.java", - ], - path: "media/mca/effect/java", -} - -filegroup { - name: "framework-mca-filterfw-sources", - srcs: [ - "media/mca/filterfw/java/**/*.java", - ], - path: "media/mca/filterfw/java", -} - -filegroup { - name: "framework-mca-filterpacks-sources", - srcs: [ - "media/mca/filterpacks/java/**/*.java", - ], - path: "media/mca/filterpacks/java", -} - -filegroup { - name: "framework-mime-sources", - srcs: [ - "mime/java/**/*.java", - ], - path: "mime/java", -} - -filegroup { - name: "framework-opengl-sources", - srcs: [ - "opengl/java/**/*.java", - ], - path: "opengl/java", -} - -filegroup { - name: "framework-rs-sources", - srcs: [ - "rs/java/**/*.java", - ], - path: "rs/java", -} - -filegroup { - name: "framework-sax-sources", - srcs: [ - "sax/java/**/*.java", - ], - path: "sax/java", -} - -filegroup { - name: "framework-telecomm-sources", - srcs: [ - "telecomm/java/**/*.java", - "telecomm/java/**/*.aidl", - ], - path: "telecomm/java", -} - -filegroup { - name: "framework-telephony-sources", - srcs: [ - "telephony/java/**/*.java", - "telephony/java/**/*.aidl", - ], - path: "telephony/java", -} - -genrule { - name: "statslog-telephony-common-java-gen", - tools: ["stats-log-api-gen"], - cmd: "$(location stats-log-api-gen) --java $(out) --module telephony_common" + - " --javaPackage com.android.internal.telephony --javaClass TelephonyCommonStatsLog", - out: ["com/android/internal/telephony/TelephonyCommonStatsLog.java"], -} - -filegroup { - name: "framework-telephony-common-sources", - srcs: [ - "telephony/common/**/*.java", - ":statslog-telephony-common-java-gen", - ], -} - -filegroup { - name: "framework-mms-sources", - srcs: [ - "mms/java/**/*.java", - "mms/java/**/*.aidl", - ], - path: "mms/java", -} - -filegroup { name: "framework-non-updatable-sources", srcs: [ // Java/AIDL sources under frameworks/base ":framework-blobstore-sources", ":framework-core-sources", ":framework-drm-sources", - ":framework-graphics-sources", + ":framework-graphics-nonupdatable-sources", ":framework-jobscheduler-sources", // jobscheduler is not a module for R ":framework-keystore-sources", ":framework-identity-sources", diff --git a/core/api/current.txt b/core/api/current.txt index ef067858c530..bd6b5e877726 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -40412,6 +40412,7 @@ package android.telephony { public final class PreciseDataConnectionState implements android.os.Parcelable { method public int describeContents(); method @Nullable public android.telephony.data.ApnSetting getApnSetting(); + method public int getId(); method public int getLastCauseCode(); method @Nullable public android.net.LinkProperties getLinkProperties(); method public int getNetworkType(); diff --git a/core/api/system-current.txt b/core/api/system-current.txt index e0de9780a7a1..2928a0c59e8a 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -9795,7 +9795,6 @@ package android.telephony { method @Deprecated public int getDataConnectionApnTypeBitMask(); method @Deprecated public int getDataConnectionFailCause(); method @Deprecated public int getDataConnectionState(); - method public int getId(); } public final class PreciseDisconnectCause { diff --git a/core/java/Android.bp b/core/java/Android.bp index 2fdf9c146ff6..919f1e2e85fb 100644 --- a/core/java/Android.bp +++ b/core/java/Android.bp @@ -10,6 +10,15 @@ package { } filegroup { + name: "framework-core-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} + +filegroup { name: "IKeyAttestationApplicationIdProvider.aidl", srcs: ["android/security/keymaster/IKeyAttestationApplicationIdProvider.aidl"], } @@ -23,3 +32,98 @@ filegroup { name: "ITracingServiceProxy.aidl", srcs: ["android/tracing/ITracingServiceProxy.aidl"], } + +// These are subset of framework-core-sources that are needed by the +// android.test.mock library. The implementation of android.test.mock references +// private members of various components to allow mocking of classes that cannot +// be mocked without access to those internal implementation details. +filegroup { + name: "framework-core-sources-for-test-mock", + srcs: [ + "android/accounts/AccountManagerCallback.java", + "android/accounts/AccountManagerFuture.java", + "android/accounts/AccountManager.java", + "android/accounts/AccountsException.java", + "android/accounts/AuthenticatorException.java", + "android/accounts/OperationCanceledException.java", + "android/annotation/AnimatorRes.java", + "android/annotation/AnimRes.java", + "android/annotation/AnyRes.java", + "android/annotation/ArrayRes.java", + "android/annotation/AttrRes.java", + "android/annotation/BoolRes.java", + "android/annotation/BroadcastBehavior.java", + "android/annotation/CallbackExecutor.java", + "android/annotation/CallSuper.java", + "android/annotation/CheckResult.java", + "android/annotation/ColorInt.java", + "android/annotation/ColorRes.java", + "android/annotation/DimenRes.java", + "android/annotation/DrawableRes.java", + "android/annotation/FontRes.java", + "android/annotation/FractionRes.java", + "android/annotation/IntDef.java", + "android/annotation/IntegerRes.java", + "android/annotation/IntRange.java", + "android/annotation/LayoutRes.java", + "android/annotation/NonNull.java", + "android/annotation/Nullable.java", + "android/annotation/PluralsRes.java", + "android/annotation/RawRes.java", + "android/annotation/RequiresPermission.java", + "android/annotation/SdkConstant.java", + "android/annotation/Size.java", + "android/annotation/StringDef.java", + "android/annotation/StringRes.java", + "android/annotation/StyleableRes.java", + "android/annotation/StyleRes.java", + "android/annotation/SuppressLint.java", + "android/annotation/SystemApi.java", + "android/annotation/SystemService.java", + "android/annotation/TestApi.java", + "android/annotation/UserIdInt.java", + "android/annotation/XmlRes.java", + "android/app/Application.java", + "android/app/IApplicationThread.aidl", + "android/app/IServiceConnection.aidl", + "android/app/PackageDeleteObserver.java", + "android/content/ComponentCallbacks2.java", + "android/content/ComponentCallbacks.java", + "android/content/ContentInterface.java", + "android/content/ContentProvider.java", + "android/content/ContentProviderNative.java", + "android/content/ContentResolver.java", + "android/content/Context.java", + "android/content/ContextWrapper.java", + "android/content/DialogInterface.java", + "android/content/IContentProvider.java", + "android/content/Intent.java", + "android/content/IntentSender.java", + "android/content/OperationApplicationException.java", + "android/content/pm/ActivityInfo.java", + "android/content/pm/ApplicationInfo.java", + "android/content/pm/InstantAppInfo.java", + "android/content/pm/IPackageDataObserver.aidl", + "android/content/pm/KeySet.java", + "android/content/pm/PackageManager.java", + "android/content/pm/VerifierDeviceIdentity.java", + "android/content/res/Resources.java", + "android/database/CrossProcessCursor.java", + "android/database/CrossProcessCursorWrapper.java", + "android/database/Cursor.java", + "android/database/CursorWrapper.java", + "android/os/Binder.java", + "android/os/Bundle.java", + "android/os/IBinder.java", + "android/os/IInterface.java", + "android/os/Parcelable.java", + "android/os/ParcelFileDescriptor.java", + "android/os/RemoteException.java", + "android/os/storage/VolumeInfo.java", + "android/util/AndroidException.java", + "android/view/DisplayAdjustments.java", + "android/view/ViewDebug.java", + "com/android/internal/annotations/VisibleForTesting.java", + ], + visibility: ["//frameworks/base/test-mock"], +} diff --git a/core/java/android/speech/OWNERS b/core/java/android/speech/OWNERS new file mode 100644 index 000000000000..32f482264103 --- /dev/null +++ b/core/java/android/speech/OWNERS @@ -0,0 +1,3 @@ +volnov@google.com +eugeniom@google.com +schfan@google.com diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index a785a1ab9f0e..51396dbb8204 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -4679,6 +4679,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te 0, Integer.MAX_VALUE, 0, Integer.MAX_VALUE); mTouchMode = TOUCH_MODE_FLING; mSuppressIdleStateChangeCall = false; + removeCallbacks(this); postOnAnimation(this); if (PROFILE_FLINGING) { diff --git a/core/jni/OWNERS b/core/jni/OWNERS index c0c4b7054674..07fb72905758 100644 --- a/core/jni/OWNERS +++ b/core/jni/OWNERS @@ -50,7 +50,6 @@ per-file fd_utils.* = file:/ZYGOTE_OWNERS per-file Android.bp = file:platform/build/soong:/OWNERS per-file android_animation_* = file:/core/java/android/animation/OWNERS per-file android_app_admin_* = file:/core/java/android/app/admin/OWNERS -per-file android_graphics_* = file:/graphics/java/android/graphics/OWNERS per-file android_hardware_Usb* = file:/services/usb/OWNERS per-file android_hardware_display_* = file:/core/java/android/hardware/display/OWNERS per-file android_hardware_input_* = file:/core/java/android/hardware/input/OWNERS @@ -63,3 +62,11 @@ per-file android_se_* = file:/core/java/android/se/OWNERS per-file android_security_* = file:/core/java/android/security/OWNERS per-file android_view_* = file:/core/java/android/view/OWNERS per-file com_android_internal_net_* = file:/services/core/java/com/android/server/net/OWNERS + +### Graphics ### +per-file android_graphics_* = file:/graphics/java/android/graphics/OWNERS +# These are highly common-use files +per-file Android.bp = file:/graphics/java/android/graphics/OWNERS +per-file AndroidRuntime.cpp = file:/graphics/java/android/graphics/OWNERS +# Although marked "view" this is mostly graphics stuff +per-file android_view_* = file:/graphics/java/android/graphics/OWNERS
\ No newline at end of file diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index 009421b05b34..43fdedc41e9f 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -454,6 +454,10 @@ applications that come with the platform <permission name="android.permission.CAPTURE_AUDIO_HOTWORD" /> <permission name="android.permission.MODIFY_QUIET_MODE" /> <permission name="android.permission.MANAGE_APP_HIBERNATION"/> + <!-- Permission required for CTS test - ResourceObserverNativeTest --> + <permission name="android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER" /> + <!-- Permission required for CTS test - CtsAlarmManagerTestCases --> + <permission name="android.permission.SCHEDULE_PRIORITIZED_ALARM" /> </privapp-permissions> <privapp-permissions package="com.android.statementservice"> diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml index d2b47c6336c4..4c214b529b39 100644 --- a/data/fonts/fonts.xml +++ b/data/fonts/fonts.xml @@ -60,7 +60,7 @@ <alias name="sans-serif-condensed-medium" to="sans-serif-condensed" weight="500" /> <family name="serif"> - <font weight="400" style="normal">NotoSerif.ttf</font> + <font weight="400" style="normal">NotoSerif-Regular.ttf</font> <font weight="700" style="normal">NotoSerif-Bold.ttf</font> <font weight="400" style="italic">NotoSerif-Italic.ttf</font> <font weight="700" style="italic">NotoSerif-BoldItalic.ttf</font> @@ -112,33 +112,33 @@ <!-- fallback fonts --> <family lang="und-Arab" variant="elegant"> - <font weight="400" style="normal">NotoNaskhArabic.ttf</font> + <font weight="400" style="normal">NotoNaskhArabic-Regular.ttf</font> <font weight="700" style="normal">NotoNaskhArabic-Bold.ttf</font> </family> <family lang="und-Arab" variant="compact"> - <font weight="400" style="normal">NotoNaskhArabicUI.ttf</font> + <font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font> <font weight="700" style="normal">NotoNaskhArabicUI-Bold.ttf</font> </family> <family lang="und-Ethi"> - <font weight="400" style="normal">NotoSansEthiopic.ttf</font> + <font weight="400" style="normal">NotoSansEthiopic-Regular.ttf</font> <font weight="700" style="normal">NotoSansEthiopic-Bold.ttf</font> <font weight="400" style="normal" fallbackFor="serif">NotoSerifEthiopic-Regular.otf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifEthiopic-Bold.otf</font> </family> <family lang="und-Hebr"> - <font weight="400" style="normal">NotoSansHebrew.ttf</font> + <font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font> <font weight="700" style="normal">NotoSansHebrew-Bold.ttf</font> <font weight="400" style="normal" fallbackFor="serif">NotoSerifHebrew-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifHebrew-Bold.ttf</font> </family> <family lang="und-Thai" variant="elegant"> - <font weight="400" style="normal">NotoSansThai.ttf</font> + <font weight="400" style="normal">NotoSansThai-Regular.ttf</font> <font weight="700" style="normal">NotoSansThai-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifThai.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifThai-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifThai-Bold.ttf</font> </family> <family lang="und-Thai" variant="compact"> - <font weight="400" style="normal">NotoSansThaiUI.ttf</font> + <font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansThaiUI-Bold.ttf</font> </family> <family lang="und-Armn"> @@ -149,28 +149,28 @@ <font weight="700" style="normal" fallbackFor="serif">NotoSerifArmenian-Bold.otf</font> </family> <family lang="und-Geor,und-Geok"> - <font weight="400" style="normal">NotoSansGeorgian-Regular.ttf + <font weight="400" style="normal">NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="400" /> </font> - <font weight="500" style="normal">NotoSansGeorgian-Regular.ttf + <font weight="500" style="normal">NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="500" /> </font> - <font weight="600" style="normal">NotoSansGeorgian-Regular.ttf + <font weight="600" style="normal">NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="600" /> </font> - <font weight="700" style="normal">NotoSansGeorgian-Regular.ttf + <font weight="700" style="normal">NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="700" /> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifGeorgian-Regular.ttf + <font weight="400" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="400" /> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifGeorgian-Regular.ttf + <font weight="500" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="500" /> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifGeorgian-Regular.ttf + <font weight="600" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="600" /> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifGeorgian-Regular.ttf + <font weight="700" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="700" /> </font> </family> @@ -178,7 +178,7 @@ <font weight="400" style="normal">NotoSansDevanagari-Regular.otf</font> <font weight="500" style="normal">NotoSansDevanagari-Medium.otf</font> <font weight="700" style="normal">NotoSansDevanagari-Bold.otf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifDevanagari.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifDevanagari-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifDevanagari-Bold.ttf</font> </family> <family lang="und-Deva" variant="compact"> @@ -191,23 +191,23 @@ danda characters. --> <family lang="und-Gujr" variant="elegant"> - <font weight="400" style="normal">NotoSansGujarati.ttf</font> + <font weight="400" style="normal">NotoSansGujarati-Regular.ttf</font> <font weight="700" style="normal">NotoSansGujarati-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifGujarati.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifGujarati-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifGujarati-Bold.ttf</font> </family> <family lang="und-Gujr" variant="compact"> - <font weight="400" style="normal">NotoSansGujaratiUI.ttf</font> + <font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansGujaratiUI-Bold.ttf</font> </family> <family lang="und-Guru" variant="elegant"> - <font weight="400" style="normal">NotoSansGurmukhi.ttf</font> + <font weight="400" style="normal">NotoSansGurmukhi-Regular.ttf</font> <font weight="700" style="normal">NotoSansGurmukhi-Bold.ttf</font> <font weight="400" style="normal" fallbackFor="serif">NotoSerifGurmukhi-Regular.otf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifGurmukhi-Bold.otf</font> </family> <family lang="und-Guru" variant="compact"> - <font weight="400" style="normal">NotoSansGurmukhiUI.ttf</font> + <font weight="400" style="normal">NotoSansGurmukhiUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansGurmukhiUI-Bold.ttf</font> </family> <family lang="und-Taml" variant="elegant"> @@ -226,7 +226,7 @@ <font weight="400" style="normal">NotoSansMalayalam-Regular.otf</font> <font weight="500" style="normal">NotoSansMalayalam-Medium.otf</font> <font weight="700" style="normal">NotoSansMalayalam-Bold.otf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifMalayalam.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifMalayalam-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifMalayalam-Bold.ttf</font> </family> <family lang="und-Mlym" variant="compact"> @@ -238,7 +238,7 @@ <font weight="400" style="normal">NotoSansBengali-Regular.otf</font> <font weight="500" style="normal">NotoSansBengali-Medium.otf</font> <font weight="700" style="normal">NotoSansBengali-Bold.otf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifBengali.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifBengali-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifBengali-Bold.ttf</font> </family> <family lang="und-Beng" variant="compact"> @@ -247,31 +247,31 @@ <font weight="700" style="normal">NotoSansBengaliUI-Bold.otf</font> </family> <family lang="und-Telu" variant="elegant"> - <font weight="400" style="normal">NotoSansTelugu.ttf</font> + <font weight="400" style="normal">NotoSansTelugu-Regular.ttf</font> <font weight="700" style="normal">NotoSansTelugu-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifTelugu.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifTelugu-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifTelugu-Bold.ttf</font> </family> <family lang="und-Telu" variant="compact"> - <font weight="400" style="normal">NotoSansTeluguUI.ttf</font> + <font weight="400" style="normal">NotoSansTeluguUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansTeluguUI-Bold.ttf</font> </family> <family lang="und-Knda" variant="elegant"> - <font weight="400" style="normal">NotoSansKannada.ttf</font> + <font weight="400" style="normal">NotoSansKannada-Regular.ttf</font> <font weight="700" style="normal">NotoSansKannada-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifKannada.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifKannada-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifKannada-Bold.ttf</font> </family> <family lang="und-Knda" variant="compact"> - <font weight="400" style="normal">NotoSansKannadaUI.ttf</font> + <font weight="400" style="normal">NotoSansKannadaUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansKannadaUI-Bold.ttf</font> </family> <family lang="und-Orya" variant="elegant"> - <font weight="400" style="normal">NotoSansOriya.ttf</font> + <font weight="400" style="normal">NotoSansOriya-Regular.ttf</font> <font weight="700" style="normal">NotoSansOriya-Bold.ttf</font> </family> <family lang="und-Orya" variant="compact"> - <font weight="400" style="normal">NotoSansOriyaUI.ttf</font> + <font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansOriyaUI-Bold.ttf</font> </family> @@ -288,39 +288,39 @@ <font weight="700" style="normal">NotoSansSinhalaUI-Bold.otf</font> </family> <family lang="und-Khmr" variant="elegant"> - <font weight="100" style="normal">NotoSansKhmer-Regular.ttf + <font weight="100" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="26.0" /> </font> - <font weight="200" style="normal">NotoSansKhmer-Regular.ttf + <font weight="200" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="39.0" /> </font> - <font weight="300" style="normal">NotoSansKhmer-Regular.ttf + <font weight="300" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="58.0" /> </font> - <font weight="400" style="normal">NotoSansKhmer-Regular.ttf + <font weight="400" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="90.0" /> </font> - <font weight="500" style="normal">NotoSansKhmer-Regular.ttf + <font weight="500" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="108.0" /> </font> - <font weight="600" style="normal">NotoSansKhmer-Regular.ttf + <font weight="600" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="128.0" /> </font> - <font weight="700" style="normal">NotoSansKhmer-Regular.ttf + <font weight="700" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="151.0" /> </font> - <font weight="800" style="normal">NotoSansKhmer-Regular.ttf + <font weight="800" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="169.0" /> </font> - <font weight="900" style="normal">NotoSansKhmer-Regular.ttf + <font weight="900" style="normal">NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0" /> <axis tag="wght" stylevalue="190.0" /> </font> @@ -328,17 +328,17 @@ <font weight="700" style="normal" fallbackFor="serif">NotoSerifKhmer-Bold.otf</font> </family> <family lang="und-Khmr" variant="compact"> - <font weight="400" style="normal">NotoSansKhmerUI.ttf</font> + <font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansKhmerUI-Bold.ttf</font> </family> <family lang="und-Laoo" variant="elegant"> - <font weight="400" style="normal">NotoSansLao.ttf</font> + <font weight="400" style="normal">NotoSansLao-Regular.ttf</font> <font weight="700" style="normal">NotoSansLao-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifLao.ttf</font> + <font weight="400" style="normal" fallbackFor="serif">NotoSerifLao-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifLao-Bold.ttf</font> </family> <family lang="und-Laoo" variant="compact"> - <font weight="400" style="normal">NotoSansLaoUI.ttf</font> + <font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font> <font weight="700" style="normal">NotoSansLaoUI-Bold.ttf</font> </family> <family lang="und-Mymr" variant="elegant"> @@ -354,56 +354,56 @@ <font weight="700" style="normal">NotoSansMyanmarUI-Bold.otf</font> </family> <family lang="und-Thaa"> - <font weight="400" style="normal">NotoSansThaana.ttf</font> + <font weight="400" style="normal">NotoSansThaana-Regular.ttf</font> <font weight="700" style="normal">NotoSansThaana-Bold.ttf</font> </family> <family lang="und-Cham"> - <font weight="400" style="normal">NotoSansCham.ttf</font> + <font weight="400" style="normal">NotoSansCham-Regular.ttf</font> <font weight="700" style="normal">NotoSansCham-Bold.ttf</font> </family> <family lang="und-Ahom"> <font weight="400" style="normal">NotoSansAhom-Regular.otf</font> </family> <family lang="und-Adlm"> - <font weight="400" style="normal">NotoSansAdlam-Regular.ttf + <font weight="400" style="normal">NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="400" /> </font> - <font weight="500" style="normal">NotoSansAdlam-Regular.ttf + <font weight="500" style="normal">NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="500" /> </font> - <font weight="600" style="normal">NotoSansAdlam-Regular.ttf + <font weight="600" style="normal">NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="600" /> </font> - <font weight="700" style="normal">NotoSansAdlam-Regular.ttf + <font weight="700" style="normal">NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="700" /> </font> </family> <family lang="und-Avst"> - <font weight="400" style="normal">NotoSansAvestan.ttf</font> + <font weight="400" style="normal">NotoSansAvestan-Regular.ttf</font> </family> <family lang="und-Bali"> - <font weight="400" style="normal">NotoSansBalinese.ttf</font> + <font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font> </family> <family lang="und-Bamu"> - <font weight="400" style="normal">NotoSansBamum.ttf</font> + <font weight="400" style="normal">NotoSansBamum-Regular.ttf</font> </family> <family lang="und-Batk"> - <font weight="400" style="normal">NotoSansBatak.ttf</font> + <font weight="400" style="normal">NotoSansBatak-Regular.ttf</font> </family> <family lang="und-Brah"> - <font weight="400" style="normal">NotoSansBrahmi.ttf</font> + <font weight="400" style="normal">NotoSansBrahmi-Regular.ttf</font> </family> <family lang="und-Bugi"> - <font weight="400" style="normal">NotoSansBuginese.ttf</font> + <font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font> </family> <family lang="und-Buhd"> - <font weight="400" style="normal">NotoSansBuhid.ttf</font> + <font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font> </family> <family lang="und-Cans"> - <font weight="400" style="normal">NotoSansCanadianAboriginal.ttf</font> + <font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font> </family> <family lang="und-Cari"> - <font weight="400" style="normal">NotoSansCarian.ttf</font> + <font weight="400" style="normal">NotoSansCarian-Regular.ttf</font> </family> <family lang="und-Cakm"> <font weight="400" style="normal">NotoSansChakma-Regular.otf</font> @@ -412,184 +412,184 @@ <font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font> </family> <family lang="und-Copt"> - <font weight="400" style="normal">NotoSansCoptic.ttf</font> + <font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font> </family> <family lang="und-Xsux"> - <font weight="400" style="normal">NotoSansCuneiform.ttf</font> + <font weight="400" style="normal">NotoSansCuneiform-Regular.ttf</font> </family> <family lang="und-Cprt"> - <font weight="400" style="normal">NotoSansCypriot.ttf</font> + <font weight="400" style="normal">NotoSansCypriot-Regular.ttf</font> </family> <family lang="und-Dsrt"> - <font weight="400" style="normal">NotoSansDeseret.ttf</font> + <font weight="400" style="normal">NotoSansDeseret-Regular.ttf</font> </family> <family lang="und-Egyp"> - <font weight="400" style="normal">NotoSansEgyptianHieroglyphs.ttf</font> + <font weight="400" style="normal">NotoSansEgyptianHieroglyphs-Regular.ttf</font> </family> <family lang="und-Elba"> <font weight="400" style="normal">NotoSansElbasan-Regular.otf</font> </family> <family lang="und-Glag"> - <font weight="400" style="normal">NotoSansGlagolitic.ttf</font> + <font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font> </family> <family lang="und-Goth"> - <font weight="400" style="normal">NotoSansGothic.ttf</font> + <font weight="400" style="normal">NotoSansGothic-Regular.ttf</font> </family> <family lang="und-Hano"> - <font weight="400" style="normal">NotoSansHanunoo.ttf</font> + <font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font> </family> <family lang="und-Armi"> - <font weight="400" style="normal">NotoSansImperialAramaic.ttf</font> + <font weight="400" style="normal">NotoSansImperialAramaic-Regular.ttf</font> </family> <family lang="und-Phli"> - <font weight="400" style="normal">NotoSansInscriptionalPahlavi.ttf</font> + <font weight="400" style="normal">NotoSansInscriptionalPahlavi-Regular.ttf</font> </family> <family lang="und-Prti"> - <font weight="400" style="normal">NotoSansInscriptionalParthian.ttf</font> + <font weight="400" style="normal">NotoSansInscriptionalParthian-Regular.ttf</font> </family> <family lang="und-Java"> <font weight="400" style="normal">NotoSansJavanese-Regular.ttf</font> </family> <family lang="und-Kthi"> - <font weight="400" style="normal">NotoSansKaithi.ttf</font> + <font weight="400" style="normal">NotoSansKaithi-Regular.ttf</font> </family> <family lang="und-Kali"> - <font weight="400" style="normal">NotoSansKayahLi.ttf</font> + <font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font> </family> <family lang="und-Khar"> - <font weight="400" style="normal">NotoSansKharoshthi.ttf</font> + <font weight="400" style="normal">NotoSansKharoshthi-Regular.ttf</font> </family> <family lang="und-Lepc"> - <font weight="400" style="normal">NotoSansLepcha.ttf</font> + <font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font> </family> <family lang="und-Limb"> - <font weight="400" style="normal">NotoSansLimbu.ttf</font> + <font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font> </family> <family lang="und-Linb"> - <font weight="400" style="normal">NotoSansLinearB.ttf</font> + <font weight="400" style="normal">NotoSansLinearB-Regular.ttf</font> </family> <family lang="und-Lisu"> - <font weight="400" style="normal">NotoSansLisu.ttf</font> + <font weight="400" style="normal">NotoSansLisu-Regular.ttf</font> </family> <family lang="und-Lyci"> - <font weight="400" style="normal">NotoSansLycian.ttf</font> + <font weight="400" style="normal">NotoSansLycian-Regular.ttf</font> </family> <family lang="und-Lydi"> - <font weight="400" style="normal">NotoSansLydian.ttf</font> + <font weight="400" style="normal">NotoSansLydian-Regular.ttf</font> </family> <family lang="und-Mand"> - <font weight="400" style="normal">NotoSansMandaic.ttf</font> + <font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font> </family> <family lang="und-Mtei"> - <font weight="400" style="normal">NotoSansMeeteiMayek.ttf</font> + <font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font> </family> <family lang="und-Talu"> - <font weight="400" style="normal">NotoSansNewTaiLue.ttf</font> + <font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font> </family> <family lang="und-Nkoo"> - <font weight="400" style="normal">NotoSansNKo.ttf</font> + <font weight="400" style="normal">NotoSansNKo-Regular.ttf</font> </family> <family lang="und-Ogam"> - <font weight="400" style="normal">NotoSansOgham.ttf</font> + <font weight="400" style="normal">NotoSansOgham-Regular.ttf</font> </family> <family lang="und-Olck"> - <font weight="400" style="normal">NotoSansOlChiki.ttf</font> + <font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font> </family> <family lang="und-Ital"> - <font weight="400" style="normal">NotoSansOldItalic.ttf</font> + <font weight="400" style="normal">NotoSansOldItalic-Regular.ttf</font> </family> <family lang="und-Xpeo"> - <font weight="400" style="normal">NotoSansOldPersian.ttf</font> + <font weight="400" style="normal">NotoSansOldPersian-Regular.ttf</font> </family> <family lang="und-Sarb"> - <font weight="400" style="normal">NotoSansOldSouthArabian.ttf</font> + <font weight="400" style="normal">NotoSansOldSouthArabian-Regular.ttf</font> </family> <family lang="und-Orkh"> - <font weight="400" style="normal">NotoSansOldTurkic.ttf</font> + <font weight="400" style="normal">NotoSansOldTurkic-Regular.ttf</font> </family> <family lang="und-Osge"> <font weight="400" style="normal">NotoSansOsage-Regular.ttf</font> </family> <family lang="und-Osma"> - <font weight="400" style="normal">NotoSansOsmanya.ttf</font> + <font weight="400" style="normal">NotoSansOsmanya-Regular.ttf</font> </family> <family lang="und-Phnx"> - <font weight="400" style="normal">NotoSansPhoenician.ttf</font> + <font weight="400" style="normal">NotoSansPhoenician-Regular.ttf</font> </family> <family lang="und-Rjng"> - <font weight="400" style="normal">NotoSansRejang.ttf</font> + <font weight="400" style="normal">NotoSansRejang-Regular.ttf</font> </family> <family lang="und-Runr"> - <font weight="400" style="normal">NotoSansRunic.ttf</font> + <font weight="400" style="normal">NotoSansRunic-Regular.ttf</font> </family> <family lang="und-Samr"> - <font weight="400" style="normal">NotoSansSamaritan.ttf</font> + <font weight="400" style="normal">NotoSansSamaritan-Regular.ttf</font> </family> <family lang="und-Saur"> - <font weight="400" style="normal">NotoSansSaurashtra.ttf</font> + <font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font> </family> <family lang="und-Shaw"> - <font weight="400" style="normal">NotoSansShavian.ttf</font> + <font weight="400" style="normal">NotoSansShavian-Regular.ttf</font> </family> <family lang="und-Sund"> - <font weight="400" style="normal">NotoSansSundanese.ttf</font> + <font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font> </family> <family lang="und-Sylo"> - <font weight="400" style="normal">NotoSansSylotiNagri.ttf</font> + <font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font> </family> <!-- Esrangela should precede Eastern and Western Syriac, since it's our default form. --> <family lang="und-Syre"> - <font weight="400" style="normal">NotoSansSyriacEstrangela.ttf</font> + <font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font> </family> <family lang="und-Syrn"> - <font weight="400" style="normal">NotoSansSyriacEastern.ttf</font> + <font weight="400" style="normal">NotoSansSyriacEastern-Regular.ttf</font> </family> <family lang="und-Syrj"> - <font weight="400" style="normal">NotoSansSyriacWestern.ttf</font> + <font weight="400" style="normal">NotoSansSyriacWestern-Regular.ttf</font> </family> <family lang="und-Tglg"> - <font weight="400" style="normal">NotoSansTagalog.ttf</font> + <font weight="400" style="normal">NotoSansTagalog-Regular.ttf</font> </family> <family lang="und-Tagb"> - <font weight="400" style="normal">NotoSansTagbanwa.ttf</font> + <font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font> </family> <family lang="und-Lana"> - <font weight="400" style="normal">NotoSansTaiTham.ttf</font> + <font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font> </family> <family lang="und-Tavt"> - <font weight="400" style="normal">NotoSansTaiViet.ttf</font> + <font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font> </family> <family lang="und-Tibt"> - <font weight="400" style="normal">NotoSansTibetan.ttf</font> + <font weight="400" style="normal">NotoSansTibetan-Regular.ttf</font> <font weight="700" style="normal">NotoSansTibetan-Bold.ttf</font> </family> <family lang="und-Tfng"> <font weight="400" style="normal">NotoSansTifinagh-Regular.otf</font> </family> <family lang="und-Ugar"> - <font weight="400" style="normal">NotoSansUgaritic.ttf</font> + <font weight="400" style="normal">NotoSansUgaritic-Regular.ttf</font> </family> <family lang="und-Vaii"> - <font weight="400" style="normal">NotoSansVai.ttf</font> + <font weight="400" style="normal">NotoSansVai-Regular.ttf</font> </family> <family> <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font> </family> <family lang="zh-Hans"> - <font weight="400" style="normal" index="2">NotoSansCJKjp-Regular.otc</font> - <font weight="400" style="normal" index="2" fallbackFor="serif">NotoSerifCJKjp-Regular.otc</font> + <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font> + <font weight="400" style="normal" index="2" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> </family> <family lang="zh-Hant,zh-Bopo"> - <font weight="400" style="normal" index="3">NotoSansCJKjp-Regular.otc</font> - <font weight="400" style="normal" index="3" fallbackFor="serif">NotoSerifCJKjp-Regular.otc</font> + <font weight="400" style="normal" index="3">NotoSansCJK-Regular.ttc</font> + <font weight="400" style="normal" index="3" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> </family> <family lang="ja"> - <font weight="400" style="normal" index="0">NotoSansCJKjp-Regular.otc</font> - <font weight="400" style="normal" index="0" fallbackFor="serif">NotoSerifCJKjp-Regular.otc</font> + <font weight="400" style="normal" index="0">NotoSansCJK-Regular.ttc</font> + <font weight="400" style="normal" index="0" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> </family> <family lang="ko"> - <font weight="400" style="normal" index="1">NotoSansCJKjp-Regular.otc</font> - <font weight="400" style="normal" index="1" fallbackFor="serif">NotoSerifCJKjp-Regular.otc</font> + <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> + <font weight="400" style="normal" index="1" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> </family> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> @@ -602,16 +602,16 @@ override the East Asian punctuation for Chinese. --> <family lang="und-Tale"> - <font weight="400" style="normal">NotoSansTaiLe.ttf</font> + <font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font> </family> <family lang="und-Yiii"> - <font weight="400" style="normal">NotoSansYi.ttf</font> + <font weight="400" style="normal">NotoSansYi-Regular.ttf</font> </family> <family lang="und-Mong"> - <font weight="400" style="normal">NotoSansMongolian.ttf</font> + <font weight="400" style="normal">NotoSansMongolian-Regular.ttf</font> </family> <family lang="und-Phag"> - <font weight="400" style="normal">NotoSansPhagsPa.ttf</font> + <font weight="400" style="normal">NotoSansPhagsPa-Regular.ttf</font> </family> <family lang="und-Hluw"> <font weight="400" style="normal">NotoSansAnatolianHieroglyphs-Regular.otf</font> diff --git a/drm/java/Android.bp b/drm/java/Android.bp new file mode 100644 index 000000000000..54e1a8c0dff8 --- /dev/null +++ b/drm/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-drm-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/graphics/java/Android.bp b/graphics/java/Android.bp new file mode 100644 index 000000000000..dcfd5d72a7cb --- /dev/null +++ b/graphics/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-graphics-nonupdatable-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/identity/java/Android.bp b/identity/java/Android.bp new file mode 100644 index 000000000000..16aef5d2d871 --- /dev/null +++ b/identity/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-identity-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/keystore/java/Android.bp b/keystore/java/Android.bp new file mode 100644 index 000000000000..6860f71a8516 --- /dev/null +++ b/keystore/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-keystore-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/location/java/Android.bp b/location/java/Android.bp new file mode 100644 index 000000000000..996a7ea37adf --- /dev/null +++ b/location/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-location-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/lowpan/java/Android.bp b/lowpan/java/Android.bp new file mode 100644 index 000000000000..b95b0daf428e --- /dev/null +++ b/lowpan/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-lowpan-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/media/java/Android.bp b/media/java/Android.bp index aea63a073e95..eeaf6e9015ac 100644 --- a/media/java/Android.bp +++ b/media/java/Android.bp @@ -8,6 +8,18 @@ package { } filegroup { + name: "framework-media-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + exclude_srcs: [ + ":framework-media-tv-tunerresourcemanager-sources-aidl", + ], + visibility: ["//frameworks/base"], +} + +filegroup { name: "IMidiDeviceServer.aidl", srcs: ["android/media/midi/IMidiDeviceServer.aidl"], } diff --git a/media/java/android/media/tv/tunerresourcemanager/Android.bp b/media/java/android/media/tv/tunerresourcemanager/Android.bp index 66c7bd4a1f2b..e365ee11067d 100644 --- a/media/java/android/media/tv/tunerresourcemanager/Android.bp +++ b/media/java/android/media/tv/tunerresourcemanager/Android.bp @@ -6,6 +6,12 @@ package { // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_base_license"], } +filegroup { + // NOTE: This is purposefully left empty, and exists only so that it can be + // referenced in frameworks/base/Android.bp. + name: "framework-media-tv-tunerresourcemanager-sources-aidl", + srcs: [], +} filegroup { name: "framework-media-tv-tunerresourcemanager-sources", diff --git a/media/mca/effect/java/Android.bp b/media/mca/effect/java/Android.bp new file mode 100644 index 000000000000..708167c94607 --- /dev/null +++ b/media/mca/effect/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-mca-effect-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/media/mca/filterfw/java/Android.bp b/media/mca/filterfw/java/Android.bp new file mode 100644 index 000000000000..51be85b46602 --- /dev/null +++ b/media/mca/filterfw/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-mca-filterfw-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/media/mca/filterpacks/java/Android.bp b/media/mca/filterpacks/java/Android.bp new file mode 100644 index 000000000000..d9271b95f6d2 --- /dev/null +++ b/media/mca/filterpacks/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-mca-filterpacks-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/mime/java/Android.bp b/mime/java/Android.bp new file mode 100644 index 000000000000..7e562639d4cc --- /dev/null +++ b/mime/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-mime-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/mms/java/Android.bp b/mms/java/Android.bp new file mode 100644 index 000000000000..367d8c35fdce --- /dev/null +++ b/mms/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-mms-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/opengl/java/Android.bp b/opengl/java/Android.bp new file mode 100644 index 000000000000..8ed4161cb9de --- /dev/null +++ b/opengl/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-opengl-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index 413e8e3a0727..904148f0415b 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -374,6 +374,15 @@ <uses-permission android:name="android.permission.BIND_RESUME_ON_REBOOT_SERVICE" /> <uses-permission android:name="android.permission.MANAGE_APP_HIBERNATION"/> + <!-- Permission required for CTS test - ResourceObserverNativeTest --> + <uses-permission android:name="android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER" /> + + <!-- Permission required for CTS test - android.widget.cts.ToastTest --> + <uses-permission android:name="android.permission.UNLIMITED_TOASTS" /> + + <!-- Permission required for CTS test - CtsAlarmManagerTestCases --> + <uses-permission android:name="android.permission.SCHEDULE_PRIORITIZED_ALARM" /> + <application android:label="@string/app_label" android:theme="@android:style/Theme.DeviceDefault.DayNight" android:defaultToDeviceProtectedStorage="true" diff --git a/rs/java/Android.bp b/rs/java/Android.bp new file mode 100644 index 000000000000..9f854f7d5cb7 --- /dev/null +++ b/rs/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-rs-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/sax/java/Android.bp b/sax/java/Android.bp new file mode 100644 index 000000000000..97751891559c --- /dev/null +++ b/sax/java/Android.bp @@ -0,0 +1,5 @@ +filegroup { + name: "framework-sax-sources", + srcs: ["**/*.java"], + visibility: ["//frameworks/base"], +} diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java index 4622e98bbbb2..8eefbfc606de 100644 --- a/services/core/java/com/android/server/VcnManagementService.java +++ b/services/core/java/com/android/server/VcnManagementService.java @@ -36,7 +36,6 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.NetworkCapabilities; -import android.net.TelephonyNetworkSpecifier; import android.net.vcn.IVcnManagementService; import android.net.vcn.IVcnStatusCallback; import android.net.vcn.IVcnUnderlyingNetworkPolicyListener; @@ -717,19 +716,29 @@ public class VcnManagementService extends IVcnManagementService.Stub { }); } - private int getSubIdForNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { - if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) - && networkCapabilities.getNetworkSpecifier() instanceof TelephonyNetworkSpecifier) { - TelephonyNetworkSpecifier telephonyNetworkSpecifier = - (TelephonyNetworkSpecifier) networkCapabilities.getNetworkSpecifier(); - return telephonyNetworkSpecifier.getSubscriptionId(); - } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) - && networkCapabilities.getTransportInfo() instanceof WifiInfo) { - WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo(); - return mDeps.getSubIdForWifiInfo(wifiInfo); + private ParcelUuid getSubGroupForNetworkCapabilities( + @NonNull NetworkCapabilities networkCapabilities) { + ParcelUuid subGrp = null; + final TelephonySubscriptionSnapshot snapshot; + + // Always access mLastSnapshot under lock. Technically this can be treated as a volatile + // but for consistency and safety, always access under lock. + synchronized (mLock) { + snapshot = mLastSnapshot; + } + + // If multiple subscription IDs exist, they MUST all point to the same subscription + // group. Otherwise undefined behavior may occur. + for (int subId : networkCapabilities.getSubIds()) { + // Verify that all subscriptions point to the same group + if (subGrp != null && !subGrp.equals(snapshot.getGroupForSubId(subId))) { + Slog.wtf(TAG, "Got multiple subscription groups for a single network"); + } + + subGrp = snapshot.getGroupForSubId(subId); } - return SubscriptionManager.INVALID_SUBSCRIPTION_ID; + return subGrp; } /** @@ -754,23 +763,19 @@ public class VcnManagementService extends IVcnManagementService.Stub { // mutates final NetworkCapabilities ncCopy = new NetworkCapabilities(networkCapabilities); - final int subId = getSubIdForNetworkCapabilities(ncCopy); + final ParcelUuid subGrp = getSubGroupForNetworkCapabilities(ncCopy); boolean isVcnManagedNetwork = false; boolean isRestrictedCarrierWifi = false; - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - synchronized (mLock) { - ParcelUuid subGroup = mLastSnapshot.getGroupForSubId(subId); - - final Vcn vcn = mVcns.get(subGroup); - if (vcn != null) { - if (vcn.isActive()) { - isVcnManagedNetwork = true; - } + synchronized (mLock) { + final Vcn vcn = mVcns.get(subGrp); + if (vcn != null) { + if (vcn.isActive()) { + isVcnManagedNetwork = true; + } - if (ncCopy.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { - // Carrier WiFi always restricted if VCN exists (even in safe mode). - isRestrictedCarrierWifi = true; - } + if (ncCopy.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + // Carrier WiFi always restricted if VCN exists (even in safe mode). + isRestrictedCarrierWifi = true; } } } diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java index 6aec9fcf9a24..72160c203595 100644 --- a/services/core/java/com/android/server/clipboard/ClipboardService.java +++ b/services/core/java/com/android/server/clipboard/ClipboardService.java @@ -52,6 +52,10 @@ import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.system.ErrnoException; +import android.system.Os; +import android.system.OsConstants; +import android.system.VmSocketAddress; import android.text.TextUtils; import android.util.Slog; import android.util.SparseArray; @@ -63,8 +67,11 @@ import com.android.server.contentcapture.ContentCaptureManagerInternal; import com.android.server.uri.UriGrantsManagerInternal; import com.android.server.wm.WindowManagerInternal; -import java.io.IOException; -import java.io.RandomAccessFile; +import java.io.FileDescriptor; +import java.io.InterruptedIOException; +import java.net.SocketException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -76,10 +83,10 @@ class HostClipboardMonitor implements Runnable { void onHostClipboardUpdated(String contents); } - private RandomAccessFile mPipe = null; + private FileDescriptor mPipe = null; private HostClipboardCallback mHostClipboardCallback; private static final String PIPE_NAME = "pipe:clipboard"; - private static final String PIPE_DEVICE = "/dev/qemu_pipe"; + private static final int HOST_PORT = 5000; private static byte[] createOpenHandshake() { // String.getBytes doesn't include the null terminator, @@ -93,40 +100,57 @@ class HostClipboardMonitor implements Runnable { private boolean openPipe() { try { - final RandomAccessFile pipe = new RandomAccessFile(PIPE_DEVICE, "rw"); + final FileDescriptor fd = Os.socket(OsConstants.AF_VSOCK, OsConstants.SOCK_STREAM, 0); + try { - pipe.write(createOpenHandshake()); - mPipe = pipe; + Os.connect(fd, new VmSocketAddress(HOST_PORT, OsConstants.VMADDR_CID_HOST)); + + final byte[] handshake = createOpenHandshake(); + Os.write(fd, handshake, 0, handshake.length); + mPipe = fd; return true; - } catch (IOException ignore) { - pipe.close(); + } catch (ErrnoException | SocketException | InterruptedIOException e) { + Os.close(fd); } - } catch (IOException ignore) { + } catch (ErrnoException e) { } + return false; } private void closePipe() { try { - final RandomAccessFile pipe = mPipe; + final FileDescriptor fd = mPipe; mPipe = null; - if (pipe != null) { - pipe.close(); + if (fd != null) { + Os.close(fd); } - } catch (IOException ignore) { + } catch (ErrnoException ignore) { } } - private byte[] receiveMessage() throws IOException { - final int size = Integer.reverseBytes(mPipe.readInt()); - final byte[] receivedData = new byte[size]; - mPipe.readFully(receivedData); - return receivedData; + private byte[] receiveMessage() throws ErrnoException, InterruptedIOException { + final byte[] lengthBits = new byte[4]; + Os.read(mPipe, lengthBits, 0, lengthBits.length); + + final ByteBuffer bb = ByteBuffer.wrap(lengthBits); + bb.order(ByteOrder.LITTLE_ENDIAN); + final int msgLen = bb.getInt(); + + final byte[] msg = new byte[msgLen]; + Os.read(mPipe, msg, 0, msg.length); + + return msg; } - private void sendMessage(byte[] message) throws IOException { - mPipe.writeInt(Integer.reverseBytes(message.length)); - mPipe.write(message); + private void sendMessage(byte[] msg) throws ErrnoException, InterruptedIOException { + final byte[] lengthBits = new byte[4]; + final ByteBuffer bb = ByteBuffer.wrap(lengthBits); + bb.order(ByteOrder.LITTLE_ENDIAN); + bb.putInt(msg.length); + + Os.write(mPipe, lengthBits, 0, lengthBits.length); + Os.write(mPipe, msg, 0, msg.length); } public HostClipboardMonitor(HostClipboardCallback cb) { @@ -135,7 +159,7 @@ class HostClipboardMonitor implements Runnable { @Override public void run() { - while(!Thread.interrupted()) { + while (!Thread.interrupted()) { try { // There's no guarantee that QEMU pipes will be ready at the moment // this method is invoked. We simply try to get the pipe open and @@ -147,9 +171,10 @@ class HostClipboardMonitor implements Runnable { final byte[] receivedData = receiveMessage(); mHostClipboardCallback.onHostClipboardUpdated( new String(receivedData)); - } catch (IOException e) { + } catch (ErrnoException | InterruptedIOException e) { closePipe(); - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + } } } @@ -158,7 +183,7 @@ class HostClipboardMonitor implements Runnable { if (mPipe != null) { sendMessage(content.getBytes()); } - } catch(IOException e) { + } catch (ErrnoException | InterruptedIOException e) { Slog.e("HostClipboardMonitor", "Failed to set host clipboard " + e.getMessage()); } diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index 37b9d5649d7d..0e4a2ee076c2 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -273,7 +273,8 @@ public class PackageDexOptimizer { options.getCompilationReason(), newResult, ArtStatsLogUtils.getApkType(path), - dexCodeIsa); + dexCodeIsa, + path); } finally { Trace.traceEnd(Trace.TRACE_TAG_PACKAGE_MANAGER); } @@ -488,9 +489,9 @@ public class PackageDexOptimizer { String classLoaderContext = null; if (dexUseInfo.isUnsupportedClassLoaderContext() || dexUseInfo.isVariableClassLoaderContext()) { - // If we have an unknown (not yet set), or a variable class loader chain. Just extract + // If we have an unknown (not yet set), or a variable class loader chain. Just verify // the dex file. - compilerFilter = "extract"; + compilerFilter = "verify"; } else { classLoaderContext = dexUseInfo.getClassLoaderContext(); } diff --git a/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java b/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java index f99a3c330c32..13798ba1b723 100644 --- a/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java +++ b/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java @@ -32,6 +32,8 @@ import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.zip.ZipEntry; /** Utils class to report ART metrics to statsd. */ @@ -150,7 +152,8 @@ public class ArtStatsLogUtils { int compilationReason, int result, int apkType, - String isa) { + String isa, + String apkPath) { int dexMetadataType = getDexMetadataType(dexMetadataPath); logger.write( sessionId, @@ -167,6 +170,16 @@ public class ArtStatsLogUtils { uid, compilationReason, compilerFilter, + ArtStatsLog.ART_DATUM_REPORTED__KIND__ART_DATUM_DEX2OAT_DEX_CODE_BYTES, + getDexBytes(apkPath), + dexMetadataType, + apkType, + isa); + logger.write( + sessionId, + uid, + compilationReason, + compilerFilter, ArtStatsLog.ART_DATUM_REPORTED__KIND__ART_DATUM_DEX2OAT_TOTAL_TIME, compileTime, dexMetadataType, @@ -181,6 +194,37 @@ public class ArtStatsLogUtils { return ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_SPLIT; } + private static long getDexBytes(String apkPath) { + StrictJarFile jarFile = null; + long dexBytes = 0; + try { + jarFile = new StrictJarFile(apkPath, + /*verify=*/ false, + /*signatureSchemeRollbackProtectionsEnforced=*/ false); + Iterator<ZipEntry> it = jarFile.iterator(); + Pattern p = Pattern.compile("classes(\\d)*[.]dex"); + Matcher m = p.matcher(""); + while (it.hasNext()) { + ZipEntry entry = it.next(); + m.reset(entry.getName()); + if (m.matches()) { + dexBytes += entry.getSize(); + } + } + return dexBytes; + } catch (IOException ignore) { + Slog.e(TAG, "Error when parsing APK " + apkPath); + return -1L; + } finally { + try { + if (jarFile != null) { + jarFile.close(); + } + } catch (IOException ignore) { + } + } + } + private static int getDexMetadataType(String dexMetadataPath) { if (dexMetadataPath == null) { return ArtStatsLog.ART_DATUM_REPORTED__DEX_METADATA_TYPE__ART_DEX_METADATA_TYPE_NONE; diff --git a/services/core/java/com/android/server/speech/OWNERS b/services/core/java/com/android/server/speech/OWNERS new file mode 100644 index 000000000000..b187b87b476e --- /dev/null +++ b/services/core/java/com/android/server/speech/OWNERS @@ -0,0 +1 @@ +include /core/java/android/speech/OWNERS diff --git a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java index 6ff8d6f8ba94..069c5c3fc714 100644 --- a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java +++ b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java @@ -27,15 +27,14 @@ import android.net.NetworkRequest; import android.net.TelephonyNetworkSpecifier; import android.os.Handler; import android.os.ParcelUuid; -import android.util.ArrayMap; -import android.util.ArraySet; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; import com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubscriptionSnapshot; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import java.util.Set; @@ -59,9 +58,9 @@ public class UnderlyingNetworkTracker { @NonNull private final Handler mHandler; @NonNull private final ConnectivityManager mConnectivityManager; - @NonNull private final Map<Integer, NetworkCallback> mCellBringupCallbacks = new ArrayMap<>(); - @NonNull private final NetworkCallback mWifiBringupCallback = new NetworkBringupCallback(); - @NonNull private final NetworkCallback mRouteSelectionCallback = new RouteSelectionCallback(); + @NonNull private final List<NetworkCallback> mCellBringupCallbacks = new ArrayList<>(); + @Nullable private NetworkCallback mWifiBringupCallback; + @Nullable private NetworkCallback mRouteSelectionCallback; @NonNull private TelephonySubscriptionSnapshot mLastSnapshot; private boolean mIsQuitting = false; @@ -105,36 +104,59 @@ public class UnderlyingNetworkTracker { mConnectivityManager = mVcnContext.getContext().getSystemService(ConnectivityManager.class); - registerNetworkRequests(); + registerOrUpdateNetworkRequests(); } - private void registerNetworkRequests() { - // register bringup requests for underlying Networks - mConnectivityManager.requestBackgroundNetwork( - getWifiNetworkRequest(), mHandler, mWifiBringupCallback); - updateSubIdsAndCellularRequests(); - - // Register Network-selection request used to decide selected underlying Network. All - // underlying networks must be VCN managed in order to be used. - mConnectivityManager.requestBackgroundNetwork( - getBaseNetworkRequest(true /* requireVcnManaged */).build(), - mHandler, - mRouteSelectionCallback); + private void registerOrUpdateNetworkRequests() { + NetworkCallback oldRouteSelectionCallback = mRouteSelectionCallback; + NetworkCallback oldWifiCallback = mWifiBringupCallback; + List<NetworkCallback> oldCellCallbacks = new ArrayList<>(mCellBringupCallbacks); + mCellBringupCallbacks.clear(); + + // Register new callbacks. Make-before-break; always register new callbacks before removal + // of old callbacks + if (!mIsQuitting) { + mRouteSelectionCallback = new RouteSelectionCallback(); + mConnectivityManager.requestBackgroundNetwork( + getBaseNetworkRequestBuilder().build(), mHandler, mRouteSelectionCallback); + + mWifiBringupCallback = new NetworkBringupCallback(); + mConnectivityManager.requestBackgroundNetwork( + getWifiNetworkRequest(), mHandler, mWifiBringupCallback); + + for (final int subId : mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup)) { + final NetworkBringupCallback cb = new NetworkBringupCallback(); + mCellBringupCallbacks.add(cb); + + mConnectivityManager.requestBackgroundNetwork( + getCellNetworkRequestForSubId(subId), mHandler, cb); + } + } else { + mRouteSelectionCallback = null; + mWifiBringupCallback = null; + // mCellBringupCallbacks already cleared above. + } + + // Unregister old callbacks (as necessary) + if (oldRouteSelectionCallback != null) { + mConnectivityManager.unregisterNetworkCallback(oldRouteSelectionCallback); + } + if (oldWifiCallback != null) { + mConnectivityManager.unregisterNetworkCallback(oldWifiCallback); + } + for (NetworkCallback cellBringupCallback : oldCellCallbacks) { + mConnectivityManager.unregisterNetworkCallback(cellBringupCallback); + } } private NetworkRequest getWifiNetworkRequest() { - // Request exclusively VCN managed networks to ensure that we only ever keep carrier wifi - // alive. - return getBaseNetworkRequest(true /* requireVcnManaged */) + return getBaseNetworkRequestBuilder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build(); } private NetworkRequest getCellNetworkRequestForSubId(int subId) { - // Do not request NOT_VCN_MANAGED to ensure that the TelephonyNetworkFactory has a - // fulfillable request to bring up underlying cellular Networks even if the VCN is already - // connected. - return getBaseNetworkRequest(false /* requireVcnManaged */) + return getBaseNetworkRequestBuilder() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .setNetworkSpecifier(new TelephonyNetworkSpecifier(subId)) .build(); @@ -143,67 +165,19 @@ public class UnderlyingNetworkTracker { /** * Builds and returns a NetworkRequest builder common to all Underlying Network requests * - * <p>A NetworkRequest may either (1) Require the presence of a capability by using - * addCapability(), (2) require the absence of a capability using unwanted capabilities, or (3) - * allow any state. Underlying networks are never desired to have the NOT_VCN_MANAGED - * capability, and only cases (2) and (3) are used. - * - * @param requireVcnManaged whether the underlying network is required to be VCN managed to - * match this request. If {@code true}, the NOT_VCN_MANAGED capability will be set as - * unwanted. Else, the NOT_VCN_MANAGED capability will be removed, and any state is - * acceptable. + * <p>This request is guaranteed to select carrier-owned, non-VCN underlying networks by virtue + * of a populated set of subIds as expressed in NetworkCapabilities#getSubIds(). Only carrier + * owned networks may be selected, as the request specifies only subIds in the VCN's + * subscription group, while the VCN networks are excluded by virtue of not having subIds set on + * the VCN-exposed networks. */ - private NetworkRequest.Builder getBaseNetworkRequest(boolean requireVcnManaged) { - NetworkRequest.Builder requestBase = - new NetworkRequest.Builder() - .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) - .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) - .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); - - for (int capability : mRequiredUnderlyingNetworkCapabilities) { - requestBase.addCapability(capability); - } - - if (requireVcnManaged) { - requestBase.addUnwantedCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); - } - - return requestBase; - } - - /** - * Update the current subIds and Cellular bringup requests for this UnderlyingNetworkTracker. - */ - private void updateSubIdsAndCellularRequests() { - mVcnContext.ensureRunningOnLooperThread(); - - // Don't bother re-filing NetworkRequests if this Tracker has been torn down. - if (mIsQuitting) { - return; - } - - final Set<Integer> subIdsInSubGroup = mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup); - - // new subIds to track = (updated list of subIds) - (currently tracked subIds) - final Set<Integer> subIdsToRegister = new ArraySet<>(subIdsInSubGroup); - subIdsToRegister.removeAll(mCellBringupCallbacks.keySet()); - - // subIds to stop tracking = (currently tracked subIds) - (updated list of subIds) - final Set<Integer> subIdsToUnregister = new ArraySet<>(mCellBringupCallbacks.keySet()); - subIdsToUnregister.removeAll(subIdsInSubGroup); - - for (final int subId : subIdsToRegister) { - final NetworkBringupCallback cb = new NetworkBringupCallback(); - mCellBringupCallbacks.put(subId, cb); - - mConnectivityManager.requestBackgroundNetwork( - getCellNetworkRequestForSubId(subId), mHandler, cb); - } - - for (final int subId : subIdsToUnregister) { - final NetworkCallback cb = mCellBringupCallbacks.remove(subId); - mConnectivityManager.unregisterNetworkCallback(cb); - } + private NetworkRequest.Builder getBaseNetworkRequestBuilder() { + return new NetworkRequest.Builder() + .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) + .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) + .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED) + .setSubIds(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup)); } /** @@ -217,22 +191,16 @@ public class UnderlyingNetworkTracker { Objects.requireNonNull(snapshot, "Missing snapshot"); mLastSnapshot = snapshot; - updateSubIdsAndCellularRequests(); + registerOrUpdateNetworkRequests(); } /** Tears down this Tracker, and releases all underlying network requests. */ public void teardown() { mVcnContext.ensureRunningOnLooperThread(); - - mConnectivityManager.unregisterNetworkCallback(mWifiBringupCallback); - mConnectivityManager.unregisterNetworkCallback(mRouteSelectionCallback); - - for (final NetworkCallback cb : mCellBringupCallbacks.values()) { - mConnectivityManager.unregisterNetworkCallback(cb); - } - mCellBringupCallbacks.clear(); - mIsQuitting = true; + + // Will unregister all existing callbacks, but not register new ones due to quitting flag. + registerOrUpdateNetworkRequests(); } /** Returns whether the currently selected Network matches the given network. */ diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java index f014119319e9..7d6f4acfb7a0 100644 --- a/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java @@ -108,7 +108,8 @@ public final class ArtStatsLogUtilsTest { COMPILATION_REASON, RESULT_CODE, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE, - INSTRUCTION_SET); + INSTRUCTION_SET, + apk.toString()); // Assert verifyWrites(ArtStatsLog. @@ -139,7 +140,8 @@ public final class ArtStatsLogUtilsTest { COMPILATION_REASON, RESULT_CODE, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE, - INSTRUCTION_SET); + INSTRUCTION_SET, + apk.toString()); // Assert verifyWrites(ArtStatsLog. @@ -170,7 +172,8 @@ public final class ArtStatsLogUtilsTest { COMPILATION_REASON, RESULT_CODE, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE, - INSTRUCTION_SET); + INSTRUCTION_SET, + apk.toString()); // Assert verifyWrites(ArtStatsLog. @@ -199,7 +202,8 @@ public final class ArtStatsLogUtilsTest { COMPILATION_REASON, RESULT_CODE, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE, - INSTRUCTION_SET); + INSTRUCTION_SET, + apk.toString()); // Assert verifyWrites(ArtStatsLog. @@ -229,7 +233,8 @@ public final class ArtStatsLogUtilsTest { COMPILATION_REASON, RESULT_CODE, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE, - INSTRUCTION_SET); + INSTRUCTION_SET, + apk.toString()); // Assert verifyWrites(ArtStatsLog. @@ -267,6 +272,16 @@ public final class ArtStatsLogUtilsTest { UID, COMPILATION_REASON, COMPILER_FILTER, + ArtStatsLog.ART_DATUM_REPORTED__KIND__ART_DATUM_DEX2OAT_DEX_CODE_BYTES, + DEX_CONTENT.length, + dexMetadataType, + ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE, + INSTRUCTION_SET); + inorder.verify(mockLogger).write( + SESSION_ID, + UID, + COMPILATION_REASON, + COMPILER_FILTER, ArtStatsLog.ART_DATUM_REPORTED__KIND__ART_DATUM_DEX2OAT_TOTAL_TIME, COMPILE_TIME, dexMetadataType, diff --git a/telecomm/java/Android.bp b/telecomm/java/Android.bp new file mode 100644 index 000000000000..bac7228ca03b --- /dev/null +++ b/telecomm/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-telecomm-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 973b20ad0713..ae5db3dfd4e4 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -1153,6 +1153,10 @@ public abstract class Connection extends Conferenceable { builder.append(isLong ? " PROPERTY_IS_ADHOC_CONFERENCE" : " adhoc_conf"); } + if ((properties & PROPERTY_IS_DOWNGRADED_CONFERENCE) == PROPERTY_IS_DOWNGRADED_CONFERENCE) { + builder.append(isLong ? " PROPERTY_IS_DOWNGRADED_CONFERENCE" : " dngrd_conf"); + } + builder.append("]"); return builder.toString(); } diff --git a/telephony/common/Android.bp b/telephony/common/Android.bp new file mode 100644 index 000000000000..9572c695c552 --- /dev/null +++ b/telephony/common/Android.bp @@ -0,0 +1,20 @@ +filegroup { + name: "framework-telephony-common-sources", + srcs: [ + "**/*.java", + ":statslog-telephony-common-java-gen", + ], + visibility: [ + "//frameworks/base", + "//frameworks/base/tests/TelephonyCommonTests", + ], +} + +genrule { + name: "statslog-telephony-common-java-gen", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --java $(out) --module telephony_common" + + " --javaPackage com.android.internal.telephony --javaClass TelephonyCommonStatsLog", + out: ["com/android/internal/telephony/TelephonyCommonStatsLog.java"], + visibility: ["//visibility:private"], +} diff --git a/telephony/java/Android.bp b/telephony/java/Android.bp new file mode 100644 index 000000000000..1bd582789572 --- /dev/null +++ b/telephony/java/Android.bp @@ -0,0 +1,8 @@ +filegroup { + name: "framework-telephony-sources", + srcs: [ + "**/*.java", + "**/*.aidl", + ], + visibility: ["//frameworks/base"], +} diff --git a/telephony/java/android/telephony/PreciseDataConnectionState.java b/telephony/java/android/telephony/PreciseDataConnectionState.java index 9ea624b60988..ce2f3f924554 100644 --- a/telephony/java/android/telephony/PreciseDataConnectionState.java +++ b/telephony/java/android/telephony/PreciseDataConnectionState.java @@ -166,14 +166,12 @@ public final class PreciseDataConnectionState implements Parcelable { /** * @return The unique id of the data connection * - * Note this is the id assigned in {@link DataCallResponse}. + * Note this is the id assigned by the data service. * The id remains the same for data connection handover between * {@link AccessNetworkConstants#TRANSPORT_TYPE_WLAN} and * {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN} * - * @hide */ - @SystemApi public int getId() { return mId; } diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java index f15d4204d125..c88b0c154712 100644 --- a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java +++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java @@ -34,8 +34,8 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.any; import static org.mockito.Mockito.argThat; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; @@ -45,7 +45,6 @@ import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; import android.annotation.NonNull; import android.app.AppOpsManager; @@ -63,7 +62,6 @@ import android.net.vcn.VcnConfig; import android.net.vcn.VcnConfigTest; import android.net.vcn.VcnManager; import android.net.vcn.VcnUnderlyingNetworkPolicy; -import android.net.wifi.WifiInfo; import android.os.IBinder; import android.os.ParcelUuid; import android.os.PersistableBundle; @@ -708,22 +706,12 @@ public class VcnManagementServiceTest { int subId, ParcelUuid subGrp, boolean isVcnActive, int transport) { setupSubscriptionAndStartVcn(subId, subGrp, isVcnActive); - final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder(); - ncBuilder.addCapability(NET_CAPABILITY_NOT_VCN_MANAGED); - if (transport == TRANSPORT_CELLULAR) { - ncBuilder - .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) - .setNetworkSpecifier(new TelephonyNetworkSpecifier(TEST_SUBSCRIPTION_ID)); - } else if (transport == TRANSPORT_WIFI) { - WifiInfo wifiInfo = mock(WifiInfo.class); - when(wifiInfo.makeCopy(anyLong())).thenReturn(wifiInfo); - when(mMockDeps.getSubIdForWifiInfo(eq(wifiInfo))).thenReturn(TEST_SUBSCRIPTION_ID); - - ncBuilder - .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) - .setTransportInfo(wifiInfo); - } else { - throw new IllegalArgumentException("Unknown transport"); + final NetworkCapabilities.Builder ncBuilder = + new NetworkCapabilities.Builder() + .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED) + .addTransportType(transport); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + ncBuilder.setSubIds(Collections.singleton(subId)); } return mVcnMgmtSvc.getUnderlyingNetworkPolicy(ncBuilder.build(), new LinkProperties()); diff --git a/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java b/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java index 631c862d2bfd..ed2e4d9b9946 100644 --- a/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java +++ b/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java @@ -146,40 +146,34 @@ public class UnderlyingNetworkTrackerTest { @Test public void testNetworkCallbacksRegisteredOnStartup() { - // verify NetworkCallbacks registered when instantiated - verify(mConnectivityManager) - .requestBackgroundNetwork( - eq(getWifiRequest()), - any(), - any(NetworkBringupCallback.class)); - verifyBackgroundCellRequests(mSubscriptionSnapshot, SUB_GROUP, INITIAL_SUB_IDS); + verifyNetworkRequestsRegistered(INITIAL_SUB_IDS); + } + private void verifyNetworkRequestsRegistered(Set<Integer> expectedSubIds) { verify(mConnectivityManager) .requestBackgroundNetwork( - eq(getRouteSelectionRequest()), + eq(getWifiRequest(expectedSubIds)), any(), - any(RouteSelectionCallback.class)); - } - - private void verifyBackgroundCellRequests( - TelephonySubscriptionSnapshot snapshot, - ParcelUuid subGroup, - Set<Integer> expectedSubIds) { - verify(snapshot).getAllSubIdsInGroup(eq(subGroup)); - + any(NetworkBringupCallback.class)); for (final int subId : expectedSubIds) { verify(mConnectivityManager) .requestBackgroundNetwork( - eq(getCellRequestForSubId(subId)), + eq(getCellRequestForSubId(subId, expectedSubIds)), any(), any(NetworkBringupCallback.class)); } + + verify(mConnectivityManager) + .requestBackgroundNetwork( + eq(getRouteSelectionRequest(expectedSubIds)), + any(), + any(RouteSelectionCallback.class)); } @Test public void testUpdateSubscriptionSnapshot() { // Verify initial cell background requests filed - verifyBackgroundCellRequests(mSubscriptionSnapshot, SUB_GROUP, INITIAL_SUB_IDS); + verifyNetworkRequestsRegistered(INITIAL_SUB_IDS); TelephonySubscriptionSnapshot subscriptionUpdate = mock(TelephonySubscriptionSnapshot.class); @@ -187,40 +181,38 @@ public class UnderlyingNetworkTrackerTest { mUnderlyingNetworkTracker.updateSubscriptionSnapshot(subscriptionUpdate); - // verify that initially-filed bringup requests are unregistered - verify(mConnectivityManager, times(INITIAL_SUB_IDS.size())) + // verify that initially-filed bringup requests are unregistered (cell + wifi) + verify(mConnectivityManager, times(INITIAL_SUB_IDS.size() + 1)) .unregisterNetworkCallback(any(NetworkBringupCallback.class)); - verifyBackgroundCellRequests(subscriptionUpdate, SUB_GROUP, UPDATED_SUB_IDS); + verify(mConnectivityManager).unregisterNetworkCallback(any(RouteSelectionCallback.class)); + verifyNetworkRequestsRegistered(UPDATED_SUB_IDS); } - private NetworkRequest getWifiRequest() { - return getExpectedRequestBase(true) + private NetworkRequest getWifiRequest(Set<Integer> netCapsSubIds) { + return getExpectedRequestBase(netCapsSubIds) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build(); } - private NetworkRequest getCellRequestForSubId(int subId) { - return getExpectedRequestBase(false) + private NetworkRequest getCellRequestForSubId(int subId, Set<Integer> netCapsSubIds) { + return getExpectedRequestBase(netCapsSubIds) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .setNetworkSpecifier(new TelephonyNetworkSpecifier(subId)) .build(); } - private NetworkRequest getRouteSelectionRequest() { - return getExpectedRequestBase(true).build(); + private NetworkRequest getRouteSelectionRequest(Set<Integer> netCapsSubIds) { + return getExpectedRequestBase(netCapsSubIds).build(); } - private NetworkRequest.Builder getExpectedRequestBase(boolean requireVcnManaged) { + private NetworkRequest.Builder getExpectedRequestBase(Set<Integer> subIds) { final NetworkRequest.Builder builder = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) - .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); - - if (requireVcnManaged) { - builder.addUnwantedCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); - } + .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED) + .setSubIds(subIds); return builder; } @@ -274,7 +266,7 @@ public class UnderlyingNetworkTrackerTest { NetworkCapabilities networkCapabilities) { verify(mConnectivityManager) .requestBackgroundNetwork( - eq(getRouteSelectionRequest()), + eq(getRouteSelectionRequest(INITIAL_SUB_IDS)), any(), mRouteSelectionCallbackCaptor.capture()); diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py index 7de706502618..a4a315b7e371 100755 --- a/tools/fonts/fontchain_linter.py +++ b/tools/fonts/fontchain_linter.py @@ -11,12 +11,6 @@ from fontTools import ttLib EMOJI_VS = 0xFE0F -#TODO(179952916): Rename CutiveMono and DancingScript -CANONICAL_NAME_EXCEPTION_LIST = [ - 'CutiveMono.ttf', - 'DancingScript-Regular.ttf', -] - LANG_TO_SCRIPT = { 'as': 'Beng', 'be': 'Cyrl', @@ -664,53 +658,6 @@ def check_cjk_punctuation(): assert_font_supports_none_of_chars(record.font, cjk_punctuation, name) -def getPostScriptName(font): - ttf = open_font(font) - nameTable = ttf['name'] - for name in nameTable.names: - if name.nameID == 6 and name.platformID == 3 and name.platEncID == 1 and name.langID == 0x0409: - return str(name) - - -def getSuffix(font): - file_path, index = font - with open(path.join(_fonts_dir, file_path), 'rb') as f: - tag = f.read(4) - isCollection = tag == b'ttcf' - - ttf = open_font(font) - isType1 = ('CFF ' in ttf or 'CFF2' in ttf) - - if isType1: - if isCollection: - return '.otc' - else: - return '.otf' - else: - if isCollection: - return '.ttc' - else: - return '.ttf' - - -def check_canonical_name(): - for record in _all_fonts: - file_name, index = record.font - if file_name in CANONICAL_NAME_EXCEPTION_LIST: - continue - - if index and index != 0: - continue - - psName = getPostScriptName(record.font) - assert psName, 'PostScript must be defined' - - suffix = getSuffix(record.font) - canonicalName = '%s%s' % (psName, suffix) - - assert file_name == canonicalName, ( - '%s is not a canonical name. Must be %s' % (file_name, canonicalName)) - def main(): global _fonts_dir target_out = sys.argv[1] @@ -728,8 +675,6 @@ def main(): check_cjk_punctuation() - check_canonical_name() - check_emoji = sys.argv[2] if check_emoji == 'true': ucd_path = sys.argv[3] |